~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/selftest/blackbox.py

  • Committer: Martin Pool
  • Date: 2005-07-11 06:31:36 UTC
  • Revision ID: mbp@sourcefrog.net-20050711063136-30a251fa5abf35a4
- add new runbzr method for external tests

Show diffs side-by-side

added added

removed removed

Lines of Context:
31
31
from unittest import TestCase
32
32
from bzrlib.selftest import TestBase, InTempDir
33
33
 
 
34
 
 
35
 
 
36
class ExternalBase(TestBase):
 
37
    def runbzr(self, args):
 
38
        try:
 
39
            import shutil
 
40
            from subprocess import call
 
41
        except ImportError, e:
 
42
            _need_subprocess()
 
43
            raise
 
44
 
 
45
        if isinstance(args, basestring):
 
46
            args = args.split()
 
47
            
 
48
        return self.runcmd(['python', self.BZRPATH,] + args)
 
49
 
 
50
 
 
51
 
34
52
class TestVersion(TestBase):
35
53
    def runTest(self):
36
54
        # output is intentionally passed through to stdout so that we
37
55
        # can see the version being tested
38
 
        self.runcmd(['bzr', 'version'])
 
56
        self.runbzr(['version'])
39
57
 
40
58
 
41
59
 
42
60
class HelpCommands(TestBase):
43
61
    def runTest(self):
44
 
        self.runcmd('bzr --help')
45
 
        self.runcmd('bzr help')
46
 
        self.runcmd('bzr help commands')
47
 
        self.runcmd('bzr help help')
48
 
        self.runcmd('bzr commit -h')
 
62
        self.runbzr('--help')
 
63
        self.runbzr('help')
 
64
        self.runbzr('help commands')
 
65
        self.runbzr('help help')
 
66
        self.runbzr('commit -h')
49
67
 
50
68
 
51
69
class InitBranch(InTempDir):
52
70
    def runTest(self):
53
71
        import os
54
 
        self.runcmd(['bzr', 'init'])
 
72
        self.runbzr(['init'])
55
73
 
56
74
 
57
75
 
58
76
class UserIdentity(InTempDir):
59
77
    def runTest(self):
60
78
        # this should always identify something, if only "john@localhost"
61
 
        self.runcmd("bzr whoami")
62
 
        self.runcmd("bzr whoami --email")
 
79
        self.runbzr("whoami")
 
80
        self.runbzr("whoami --email")
63
81
        self.assertEquals(self.backtick("bzr whoami --email").count('@'),
64
82
                          1)
65
83
 
66
84
 
67
85
class InvalidCommands(InTempDir):
68
86
    def runTest(self):
69
 
        self.runcmd("bzr pants", retcode=1)
70
 
        self.runcmd("bzr --pants off", retcode=1)
71
 
        self.runcmd("bzr diff --message foo", retcode=1)
 
87
        self.runbzr("pants", retcode=1)
 
88
        self.runbzr("--pants off", retcode=1)
 
89
        self.runbzr("diff --message foo", retcode=1)
72
90
 
73
91
 
74
92
 
75
93
class EmptyCommit(InTempDir):
76
94
    def runTest(self):
77
 
        self.runcmd("bzr init")
 
95
        self.runbzr("init")
78
96
        self.build_tree(['hello.txt'])
79
 
        self.runcmd("bzr commit -m empty", retcode=1)
80
 
        self.runcmd("bzr add hello.txt")
81
 
        self.runcmd("bzr commit -m added")
 
97
        self.runbzr("commit -m empty", retcode=1)
 
98
        self.runbzr("add hello.txt")
 
99
        self.runbzr("commit -m added")
82
100
 
83
101
 
84
102
 
96
114
        progress("basic branch creation")
97
115
        runcmd(['mkdir', 'branch1'])
98
116
        chdir('branch1')
99
 
        runcmd('bzr init')
 
117
        runbzr('init')
100
118
 
101
119
        self.assertEquals(backtick('bzr root').rstrip(),
102
120
                          os.path.join(self.test_dir, 'branch1'))
143
161
                       "  test.txt\n")
144
162
 
145
163
        progress("command help")
146
 
        runcmd("bzr help st")
147
 
        runcmd("bzr help")
148
 
        runcmd("bzr help commands")
149
 
        runcmd("bzr help slartibartfast", 1)
 
164
        runbzr("help st")
 
165
        runbzr("help")
 
166
        runbzr("help commands")
 
167
        runbzr("help slartibartfast", 1)
150
168
 
151
169
        out = backtick("bzr help ci")
152
170
        out.index('aliases: ')
153
171
 
154
172
        progress("can't rename unversioned file")
155
 
        runcmd("bzr rename test.txt new-test.txt", 1)
 
173
        runbzr("rename test.txt new-test.txt", 1)
156
174
 
157
175
        progress("adding a file")
158
176
 
159
 
        runcmd("bzr add test.txt")
 
177
        runbzr("add test.txt")
160
178
        assert backtick("bzr unknowns") == ''
161
179
        assert backtick("bzr status --all") == ("added:\n"
162
180
                                                "  test.txt\n")
163
181
 
164
182
        progress("rename newly-added file")
165
 
        runcmd("bzr rename test.txt hello.txt")
 
183
        runbzr("rename test.txt hello.txt")
166
184
        assert os.path.exists("hello.txt")
167
185
        assert not os.path.exists("test.txt")
168
186
 
173
191
 
174
192
        progress("more complex renames")
175
193
        os.mkdir("sub1")
176
 
        runcmd("bzr rename hello.txt sub1", 1)
177
 
        runcmd("bzr rename hello.txt sub1/hello.txt", 1)
178
 
        runcmd("bzr move hello.txt sub1", 1)
 
194
        runbzr("rename hello.txt sub1", 1)
 
195
        runbzr("rename hello.txt sub1/hello.txt", 1)
 
196
        runbzr("move hello.txt sub1", 1)
179
197
 
180
 
        runcmd("bzr add sub1")
181
 
        runcmd("bzr rename sub1 sub2")
182
 
        runcmd("bzr move hello.txt sub2")
 
198
        runbzr("add sub1")
 
199
        runbzr("rename sub1 sub2")
 
200
        runbzr("move hello.txt sub2")
183
201
        assert backtick("bzr relpath sub2/hello.txt") == os.path.join("sub2", "hello.txt\n")
184
202
 
185
203
        assert exists("sub2")
187
205
        assert not exists("sub1")
188
206
        assert not exists("hello.txt")
189
207
 
190
 
        runcmd(['bzr', 'commit', '-m', 'commit with some things moved to subdirs'])
 
208
        runbzr(['commit', '-m', 'commit with some things moved to subdirs'])
191
209
 
192
210
        mkdir("sub1")
193
 
        runcmd('bzr add sub1')
194
 
        runcmd('bzr move sub2/hello.txt sub1')
 
211
        runbzr('add sub1')
 
212
        runbzr('move sub2/hello.txt sub1')
195
213
        assert not exists('sub2/hello.txt')
196
214
        assert exists('sub1/hello.txt')
197
 
        runcmd('bzr move sub2 sub1')
 
215
        runbzr('move sub2 sub1')
198
216
        assert not exists('sub2')
199
217
        assert exists('sub1/sub2')
200
218
 
201
 
        runcmd(['bzr', 'commit', '-m', 'rename nested subdirectories'])
 
219
        runbzr(['commit', '-m', 'rename nested subdirectories'])
202
220
 
203
221
        chdir('sub1/sub2')
204
222
        self.assertEquals(backtick('bzr root')[:-1],
205
223
                          os.path.join(self.test_dir, 'branch1'))
206
 
        runcmd('bzr move ../hello.txt .')
 
224
        runbzr('move ../hello.txt .')
207
225
        assert exists('./hello.txt')
208
226
        assert backtick('bzr relpath hello.txt') == os.path.join('sub1', 'sub2', 'hello.txt\n')
209
227
        assert backtick('bzr relpath ../../sub1/sub2/hello.txt') == os.path.join('sub1', 'sub2', 'hello.txt\n')
210
 
        runcmd(['bzr', 'commit', '-m', 'move to parent directory'])
 
228
        runbzr(['commit', '-m', 'move to parent directory'])
211
229
        chdir('..')
212
230
        assert backtick('bzr relpath sub2/hello.txt') == os.path.join('sub1', 'sub2', 'hello.txt\n')
213
231
 
214
 
        runcmd('bzr move sub2/hello.txt .')
 
232
        runbzr('move sub2/hello.txt .')
215
233
        assert exists('hello.txt')
216
234
 
217
235
        f = file('hello.txt', 'wt')
222
240
        f.write('this is my new commit\n')
223
241
        f.close()
224
242
 
225
 
        runcmd('bzr commit -F msg.tmp')
 
243
        runbzr('commit -F msg.tmp')
226
244
 
227
245
        assert backtick('bzr revno') == '5\n'
228
 
        runcmd('bzr export -r 5 export-5.tmp')
229
 
        runcmd('bzr export export.tmp')
 
246
        runbzr('export -r 5 export-5.tmp')
 
247
        runbzr('export export.tmp')
230
248
 
231
 
        runcmd('bzr log')
232
 
        runcmd('bzr log -v')
 
249
        runbzr('log')
 
250
        runbzr('log -v')
233
251
 
234
252
 
235
253
 
236
254
        progress("file with spaces in name")
237
255
        mkdir('sub directory')
238
256
        file('sub directory/file with spaces ', 'wt').write('see how this works\n')
239
 
        runcmd('bzr add .')
240
 
        runcmd('bzr diff')
241
 
        runcmd('bzr commit -m add-spaces')
242
 
        runcmd('bzr check')
243
 
 
244
 
        runcmd('bzr log')
245
 
        runcmd('bzr log --forward')
246
 
 
247
 
        runcmd('bzr info')
 
257
        runbzr('add .')
 
258
        runbzr('diff')
 
259
        runbzr('commit -m add-spaces')
 
260
        runbzr('check')
 
261
 
 
262
        runbzr('log')
 
263
        runbzr('log --forward')
 
264
 
 
265
        runbzr('info')
248
266
 
249
267
 
250
268
 
255
273
        chdir('..')
256
274
        progress('branch')
257
275
        # Can't create a branch if it already exists
258
 
        runcmd('bzr branch branch1', retcode=1)
 
276
        runbzr('branch branch1', retcode=1)
259
277
        # Can't create a branch if its parent doesn't exist
260
 
        runcmd('bzr branch /unlikely/to/exist', retcode=1)
261
 
        runcmd('bzr branch branch1 branch2')
 
278
        runbzr('branch /unlikely/to/exist', retcode=1)
 
279
        runbzr('branch branch1 branch2')
262
280
 
263
281
        progress("pull")
264
282
        chdir('branch1')
265
 
        runcmd('bzr pull', retcode=1)
266
 
        runcmd('bzr pull ../branch2')
 
283
        runbzr('pull', retcode=1)
 
284
        runbzr('pull ../branch2')
267
285
        chdir('.bzr')
268
 
        runcmd('bzr pull')
269
 
        runcmd('bzr commit --unchanged -m empty')
270
 
        runcmd('bzr pull')
 
286
        runbzr('pull')
 
287
        runbzr('commit --unchanged -m empty')
 
288
        runbzr('pull')
271
289
        chdir('../../branch2')
272
 
        runcmd('bzr pull')
273
 
        runcmd('bzr commit --unchanged -m empty')
 
290
        runbzr('pull')
 
291
        runbzr('commit --unchanged -m empty')
274
292
        chdir('../branch1')
275
 
        runcmd('bzr commit --unchanged -m empty')
276
 
        runcmd('bzr pull', retcode=1)
 
293
        runbzr('commit --unchanged -m empty')
 
294
        runbzr('pull', retcode=1)
277
295
        chdir ('..')
278
296
 
279
297
        progress('status after remove')
289
307
        #     at /vrac/python/bazaar-ng/bzrlib/diff.py:286 in compare_trees()
290
308
        #     see ~/.bzr.log for debug information
291
309
        chdir('status-after-remove')
292
 
        runcmd('bzr init')
 
310
        runbzr('init')
293
311
        file('a', 'w').write('foo')
294
 
        runcmd('bzr add a')
295
 
        runcmd(['bzr', 'commit', '-m', 'add a'])
296
 
        runcmd('bzr remove a')
297
 
        runcmd('bzr status')
 
312
        runbzr('add a')
 
313
        runbzr(['commit', '-m', 'add a'])
 
314
        runbzr('remove a')
 
315
        runbzr('status')
298
316
 
299
317
        chdir('..')
300
318
 
301
319
        progress('ignore patterns')
302
320
        mkdir('ignorebranch')
303
321
        chdir('ignorebranch')
304
 
        runcmd('bzr init')
 
322
        runbzr('init')
305
323
        assert backtick('bzr unknowns') == ''
306
324
 
307
325
        file('foo.tmp', 'wt').write('tmp files are ignored')
309
327
 
310
328
        file('foo.c', 'wt').write('int main() {}')
311
329
        assert backtick('bzr unknowns') == 'foo.c\n'
312
 
        runcmd('bzr add foo.c')
 
330
        runbzr('add foo.c')
313
331
        assert backtick('bzr unknowns') == ''
314
332
 
315
333
        # 'ignore' works when creating the .bzignore file
316
334
        file('foo.blah', 'wt').write('blah')
317
335
        assert backtick('bzr unknowns') == 'foo.blah\n'
318
 
        runcmd('bzr ignore *.blah')
 
336
        runbzr('ignore *.blah')
319
337
        assert backtick('bzr unknowns') == ''
320
338
        assert file('.bzrignore', 'rb').read() == '*.blah\n'
321
339
 
322
340
        # 'ignore' works when then .bzrignore file already exists
323
341
        file('garh', 'wt').write('garh')
324
342
        assert backtick('bzr unknowns') == 'garh\n'
325
 
        runcmd('bzr ignore garh')
 
343
        runbzr('ignore garh')
326
344
        assert backtick('bzr unknowns') == ''
327
345
        assert file('.bzrignore', 'rb').read() == '*.blah\ngarh\n'
328
346
 
334
352
        progress("recursive and non-recursive add")
335
353
        mkdir('no-recurse')
336
354
        chdir('no-recurse')
337
 
        runcmd('bzr init')
 
355
        runbzr('init')
338
356
        mkdir('foo')
339
357
        fp = os.path.join('foo', 'test.txt')
340
358
        f = file(fp, 'w')
341
359
        f.write('hello!\n')
342
360
        f.close()
343
 
        runcmd('bzr add --no-recurse foo')
344
 
        runcmd('bzr file-id foo')
345
 
        runcmd('bzr file-id ' + fp, 1)      # not versioned yet
346
 
        runcmd('bzr commit -m add-dir-only')
347
 
 
348
 
        runcmd('bzr file-id ' + fp, 1)      # still not versioned 
349
 
 
350
 
        runcmd('bzr add foo')
351
 
        runcmd('bzr file-id ' + fp)
352
 
        runcmd('bzr commit -m add-sub-file')
 
361
        runbzr('add --no-recurse foo')
 
362
        runbzr('file-id foo')
 
363
        runbzr('file-id ' + fp, 1)      # not versioned yet
 
364
        runbzr('commit -m add-dir-only')
 
365
 
 
366
        runbzr('file-id ' + fp, 1)      # still not versioned 
 
367
 
 
368
        runbzr('add foo')
 
369
        runbzr('file-id ' + fp)
 
370
        runbzr('commit -m add-sub-file')
353
371
 
354
372
        chdir('..')
355
373
 
357
375
 
358
376
class RevertCommand(InTempDir):
359
377
    def runTest(self):
360
 
        self.runcmd('bzr init')
 
378
        self.runbzr('init')
361
379
 
362
380
        file('hello', 'wt').write('foo')
363
 
        self.runcmd('bzr add hello')
364
 
        self.runcmd('bzr commit -m setup hello')
 
381
        self.runbzr('add hello')
 
382
        self.runbzr('commit -m setup hello')
365
383
        
366
384
        file('hello', 'wt').write('bar')
367
 
        self.runcmd('bzr revert hello')
 
385
        self.runbzr('revert hello')
368
386
        self.check_file_contents('hello', 'foo')
369
387
 
370
388