~bzr-pqm/bzr/bzr.dev

4010.2.1 by James Westby
Handle files that are not present in the tree when exporting (#174539)
1
# Copyright (C) 2009 Canonical Ltd
2
#
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
7
#
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
12
#
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
4183.7.1 by Sabin Iacob
update FSF mailing address
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
4010.2.1 by James Westby
Handle files that are not present in the tree when exporting (#174539)
16
17
import os
18
4241.9.5 by Vincent Ladeuil
Fix unicode related OSX failures.
19
20
from bzrlib import (
4576.1.1 by Alexander Belchenko
Fixed export to existing empty directory.
21
    errors,
4241.9.5 by Vincent Ladeuil
Fix unicode related OSX failures.
22
    export,
4562.1.1 by Jelmer Vernooij
Support exporting symlinks when exporting from a working tree.
23
    osutils,
4241.9.5 by Vincent Ladeuil
Fix unicode related OSX failures.
24
    tests,
25
    )
26
27
28
class TestExport(tests.TestCaseWithTransport):
4010.2.1 by James Westby
Handle files that are not present in the tree when exporting (#174539)
29
30
    def test_dir_export_missing_file(self):
31
        self.build_tree(['a/', 'a/b', 'a/c'])
32
        wt = self.make_branch_and_tree('.')
33
        wt.add(['a', 'a/b', 'a/c'])
34
        os.unlink('a/c')
4241.9.5 by Vincent Ladeuil
Fix unicode related OSX failures.
35
        export.export(wt, 'target', format="dir")
4010.2.1 by James Westby
Handle files that are not present in the tree when exporting (#174539)
36
        self.failUnlessExists('target/a/b')
37
        self.failIfExists('target/a/c')
4241.9.5 by Vincent Ladeuil
Fix unicode related OSX failures.
38
4562.1.1 by Jelmer Vernooij
Support exporting symlinks when exporting from a working tree.
39
    def test_dir_export_symlink(self):
4562.1.2 by Jelmer Vernooij
Use self.requireFeature(tests.SymlinkFeature) per John's review.
40
        self.requireFeature(tests.SymlinkFeature)
4562.1.1 by Jelmer Vernooij
Support exporting symlinks when exporting from a working tree.
41
        wt = self.make_branch_and_tree('.')
42
        os.symlink('source', 'link')
43
        wt.add(['link'])
44
        export.export(wt, 'target', format="dir")
45
        self.failUnlessExists('target/link')
4576.1.1 by Alexander Belchenko
Fixed export to existing empty directory.
46
47
    def test_dir_export_to_existing_empty_dir_success(self):
48
        self.build_tree(['source/', 'source/a', 'source/b/', 'source/b/c'])
49
        wt = self.make_branch_and_tree('source')
50
        wt.add(['a', 'b', 'b/c'])
51
        wt.commit('1')
52
        self.build_tree(['target/'])
53
        export.export(wt, 'target', format="dir")
54
        self.failUnlessExists('target/a')
55
        self.failUnlessExists('target/b')
56
        self.failUnlessExists('target/b/c')
57
58
    def test_dir_export_to_existing_nonempty_dir_fail(self):
59
        self.build_tree(['source/', 'source/a', 'source/b/', 'source/b/c'])
60
        wt = self.make_branch_and_tree('source')
61
        wt.add(['a', 'b', 'b/c'])
62
        wt.commit('1')
63
        self.build_tree(['target/', 'target/foo'])
64
        self.assertRaises(errors.BzrError, export.export, wt, 'target', format="dir")