~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/blackbox/test_ignore.py

  • Committer: Robert Collins
  • Date: 2007-07-04 08:08:13 UTC
  • mfrom: (2572 +trunk)
  • mto: This revision was merged to the branch mainline in revision 2587.
  • Revision ID: robertc@robertcollins.net-20070704080813-wzebx0r88fvwj5rq
Merge bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005, 2006 by Canonical Ltd
 
1
# Copyright (C) 2005, 2006 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
22
22
import re
23
23
import sys
24
24
 
25
 
from bzrlib import ignores
 
25
from bzrlib import (
 
26
    ignores,
 
27
    osutils,
 
28
    )
26
29
import bzrlib
27
30
from bzrlib.branch import Branch
28
31
import bzrlib.bzrdir as bzrdir
30
33
from bzrlib.osutils import (
31
34
    has_symlinks,
32
35
    pathjoin,
33
 
    rmtree,
34
36
    terminal_width,
35
37
    )
36
38
from bzrlib.tests.HTTPTestUtil import TestCaseWithWebserver
41
43
 
42
44
class TestCommands(ExternalBase):
43
45
 
 
46
    def test_ignore_absolutes(self):
 
47
        """'ignore' with an absolute path returns an error"""
 
48
        self.run_bzr('init')
 
49
        self.run_bzr_error(('bzr: ERROR: NAME_PATTERN should not '
 
50
                            'be an absolute path\n',),
 
51
                           'ignore','/crud')
 
52
        
 
53
    def test_ignore_directories(self):
 
54
        """ignoring a directory should ignore directory tree.
 
55
 
 
56
        Also check that trailing slashes on directories are stripped.
 
57
        """
 
58
        self.run_bzr('init')
 
59
        self.build_tree(['dir1/', 'dir1/foo',
 
60
                         'dir2/', 'dir2/bar',
 
61
                         'dir3/', 'dir3/baz'])
 
62
        self.run_bzr(['ignore', 'dir1', 'dir2/', 'dir4\\'])
 
63
        self.check_file_contents('.bzrignore', 'dir1\ndir2\ndir4\n')
 
64
        self.assertEquals(self.run_bzr('unknowns')[0], 'dir3\n')
 
65
 
44
66
    def test_ignore_patterns(self):
45
 
        self.runbzr('init')
46
 
        self.assertEquals(self.capture('unknowns'), '')
 
67
        self.run_bzr('init')
 
68
        self.assertEquals(self.run_bzr(['unknowns'])[0], '')
47
69
 
48
70
        # is_ignored() will now create the user global ignore file
49
71
        # if it doesn't exist, so make sure we ignore it in our tests
52
74
        self.build_tree_contents(
53
75
            [('foo.tmp', '.tmp files are ignored by default'),
54
76
             ])
55
 
        self.assertEquals(self.capture('unknowns'), '')
 
77
        self.assertEquals(self.run_bzr(['unknowns'])[0], '')
56
78
 
57
79
        file('foo.c', 'wt').write('int main() {}')
58
 
        self.assertEquals(self.capture('unknowns'), 'foo.c\n')
 
80
        self.assertEquals(self.run_bzr(['unknowns'])[0], 'foo.c\n')
59
81
 
60
 
        self.runbzr(['add', 'foo.c'])
61
 
        self.assertEquals(self.capture('unknowns'), '')
 
82
        self.run_bzr('add foo.c')
 
83
        self.assertEquals(self.run_bzr(['unknowns'])[0], '')
62
84
 
63
85
        # 'ignore' works when creating the .bzrignore file
64
86
        file('foo.blah', 'wt').write('blah')
65
 
        self.assertEquals(self.capture('unknowns'), 'foo.blah\n')
66
 
        self.runbzr('ignore *.blah')
67
 
        self.assertEquals(self.capture('unknowns'), '')
68
 
        self.assertEquals('*.blah\n', open('.bzrignore', 'rU').read())
 
87
        self.assertEquals(self.run_bzr(['unknowns'])[0], 'foo.blah\n')
 
88
        self.run_bzr('ignore *.blah')
 
89
        self.assertEquals(self.run_bzr(['unknowns'])[0], '')
 
90
        self.check_file_contents('.bzrignore', '*.blah\n')
69
91
 
70
92
        # 'ignore' works when then .bzrignore file already exists
71
93
        file('garh', 'wt').write('garh')
72
 
        self.assertEquals(self.capture('unknowns'), 'garh\n')
73
 
        self.runbzr('ignore garh')
74
 
        self.assertEquals(self.capture('unknowns'), '')
75
 
        self.assertEquals(file('.bzrignore', 'rU').read(), '*.blah\ngarh\n')
76
 
        
 
94
        self.assertEquals(self.run_bzr(['unknowns'])[0], 'garh\n')
 
95
        self.run_bzr('ignore garh')
 
96
        self.assertEquals(self.run_bzr(['unknowns'])[0], '')
 
97
        self.check_file_contents('.bzrignore', '*.blah\ngarh\n')
 
98
       
 
99
    def test_ignore_multiple_arguments(self):
 
100
        """'ignore' works with multiple arguments"""
 
101
        self.run_bzr('init')
 
102
        self.build_tree(['a','b','c','d'])
 
103
        self.assertEquals(self.run_bzr(['unknowns'])[0], 'a\nb\nc\nd\n')
 
104
        self.run_bzr('ignore a b c')
 
105
        self.assertEquals(self.run_bzr(['unknowns'])[0], 'd\n')
 
106
        self.check_file_contents('.bzrignore', 'a\nb\nc\n')
 
107
 
 
108
    def test_ignore_no_arguments(self):
 
109
        """'ignore' with no arguments returns an error"""
 
110
        self.run_bzr('init')
 
111
        self.run_bzr_error(('bzr: ERROR: ignore requires at least one '
 
112
                            'NAME_PATTERN or --old-default-rules\n',),
 
113
                           'ignore')
 
114
 
77
115
    def test_ignore_old_defaults(self):
78
116
        out, err = self.run_bzr('ignore', '--old-default-rules')
79
117
        self.assertContainsRe(out, 'CVS')
80
118
        self.assertEqual('', err)
 
119