~bzr-pqm/bzr/bzr.dev

1185.3.29 by John Arbash Meinel
Added test cases for handling bogus files.
1
# Copyright (C) 2005 by 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
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
17
18
"""Tests being able to ignore mad filetypes.
19
"""
20
1185.31.25 by John Arbash Meinel
Renamed all of the tests from selftest/foo.py to tests/test_foo.py
21
from bzrlib.tests import TestCaseInTempDir
1185.3.29 by John Arbash Meinel
Added test cases for handling bogus files.
22
from bzrlib.errors import BadFileKindError
23
import os
24
25
def verify_status(tester, branch, value):
26
    from bzrlib.status import show_status
27
    from cStringIO import StringIO
28
29
    tof = StringIO()
30
    show_status(branch, to_file=tof)
31
    tof.seek(0)
32
    tester.assertEquals(tof.readlines(), value)
33
34
35
class TestBadFiles(TestCaseInTempDir):
36
    
37
    def test_bad_files(self): 
38
        """Test that bzr will ignore files it doesn't like"""
39
        from bzrlib.commit import commit
40
        from bzrlib.add import smart_add
41
        from bzrlib.branch import Branch
42
1185.33.66 by Martin Pool
[patch] use unicode literals for all hardcoded paths (Alexander Belchenko)
43
        b = Branch.initialize(u'.')
1185.3.29 by John Arbash Meinel
Added test cases for handling bogus files.
44
45
        self.build_tree(['one', 'two', 'three'])
1185.33.66 by Martin Pool
[patch] use unicode literals for all hardcoded paths (Alexander Belchenko)
46
        smart_add(u'.')
1185.3.29 by John Arbash Meinel
Added test cases for handling bogus files.
47
        commit(b, "Commit one", rev_id="a@u-0-0")
48
        self.build_tree(['four'])
1185.33.66 by Martin Pool
[patch] use unicode literals for all hardcoded paths (Alexander Belchenko)
49
        smart_add(u'.')
1185.3.29 by John Arbash Meinel
Added test cases for handling bogus files.
50
        commit(b, "Commit two", rev_id="a@u-0-1")
51
        self.build_tree(['five'])
1185.33.66 by Martin Pool
[patch] use unicode literals for all hardcoded paths (Alexander Belchenko)
52
        smart_add(u'.')
1185.3.29 by John Arbash Meinel
Added test cases for handling bogus files.
53
        commit(b, "Commit three", rev_id="a@u-0-2")
54
55
        # We should now have a few files, lets try to
56
        # put some bogus stuff in the tree
57
58
        # We can only continue if we have mkfifo
59
        if not hasattr(os, 'mkfifo'):
60
            return
61
62
        # status with nothing
63
        verify_status(self, b, [])
64
65
        os.mkfifo('a-fifo')
66
        self.build_tree(['six'])
67
68
        verify_status(self, b,
69
                          ['unknown:\n',
70
                           '  a-fifo\n',
71
                           '  six\n'
72
                           ])
73
        
74
        # Make sure smart_add can handle having a bogus
75
        # file in the way
1185.33.66 by Martin Pool
[patch] use unicode literals for all hardcoded paths (Alexander Belchenko)
76
        smart_add(u'.')
1185.3.29 by John Arbash Meinel
Added test cases for handling bogus files.
77
        verify_status(self, b,
78
                          ['added:\n',
79
                           '  six\n',
80
                           'unknown:\n',
81
                           '  a-fifo\n',
82
                           ])
83
        commit(b, "Commit four", rev_id="a@u-0-3")
84
85
        verify_status(self, b,
86
                          ['unknown:\n',
87
                           '  a-fifo\n',
88
                           ])
89
90
        # We should raise an error if we are adding a bogus file
91
        # Is there a way to test the actual error that should be raised?
1185.35.21 by Aaron Bentley
Changed error status to 3
92
        self.run_bzr('add', 'a-fifo', retcode=3)
1185.3.29 by John Arbash Meinel
Added test cases for handling bogus files.
93