47
48
r1 = builder.commit(b'Joe Foo <joe@foo.com>', u'<The commit message>')
48
49
return repo, builder.finish()[r1]
51
r = GitRepo.init(self.test_dir)
52
dir = ControlDir.open(self.test_dir)
54
self.build_tree(['a', 'b'])
55
output, error = self.run_bzr(['add', 'a'])
56
self.assertEqual('adding a\n', output)
57
self.assertEqual('', error)
58
output, error = self.run_bzr(
59
['add', '--file-ids-from=../othertree', 'b'])
60
self.assertEqual('adding b\n', output)
62
'Ignoring --file-ids-from, since the tree does not support '
63
'setting file ids.\n', error)
65
51
def test_nick(self):
66
52
r = GitRepo.init(self.test_dir)
67
53
dir = ControlDir.open(self.test_dir)
164
150
self.assertEqual(b"", output)
165
151
self.assertTrue(error.endswith(b"Created new branch.\n"))
167
def test_push_without_calculate_revnos(self):
168
self.run_bzr(['init', '--git', 'bla'])
169
self.run_bzr(['init', '--git', 'foo'])
170
self.run_bzr(['commit', '--unchanged', '-m', 'bla', 'foo'])
171
output, error = self.run_bzr(
172
['push', '-Ocalculate_revnos=no', '-d', 'foo', 'bla'])
173
self.assertEqual("", output)
174
self.assertContainsRe(
176
'Pushed up to revision id git(.*).\n')
178
def test_push_lossy_non_mainline(self):
179
self.run_bzr(['init', '--git', 'bla'])
180
self.run_bzr(['init', 'foo'])
181
self.run_bzr(['commit', '--unchanged', '-m', 'bla', 'foo'])
182
self.run_bzr(['branch', 'foo', 'foo1'])
183
self.run_bzr(['commit', '--unchanged', '-m', 'bla', 'foo1'])
184
self.run_bzr(['commit', '--unchanged', '-m', 'bla', 'foo'])
185
self.run_bzr(['merge', '-d', 'foo', 'foo1'])
186
self.run_bzr(['commit', '--unchanged', '-m', 'merge', 'foo'])
187
output, error = self.run_bzr(['push', '--lossy', '-r1.1.1', '-d', 'foo', 'bla'])
188
self.assertEqual("", output)
190
'Pushing from a Bazaar to a Git repository. For better '
191
'performance, push into a Bazaar repository.\n'
192
'All changes applied successfully.\n'
193
'Pushed up to revision 2.\n', error)
195
def test_push_lossy_non_mainline_incremental(self):
196
self.run_bzr(['init', '--git', 'bla'])
197
self.run_bzr(['init', 'foo'])
198
self.run_bzr(['commit', '--unchanged', '-m', 'bla', 'foo'])
199
self.run_bzr(['commit', '--unchanged', '-m', 'bla', 'foo'])
200
output, error = self.run_bzr(['push', '--lossy', '-d', 'foo', 'bla'])
201
self.assertEqual("", output)
203
'Pushing from a Bazaar to a Git repository. For better '
204
'performance, push into a Bazaar repository.\n'
205
'All changes applied successfully.\n'
206
'Pushed up to revision 2.\n', error)
207
self.run_bzr(['commit', '--unchanged', '-m', 'bla', 'foo'])
208
output, error = self.run_bzr(['push', '--lossy', '-d', 'foo', 'bla'])
209
self.assertEqual("", output)
211
'Pushing from a Bazaar to a Git repository. For better '
212
'performance, push into a Bazaar repository.\n'
213
'All changes applied successfully.\n'
214
'Pushed up to revision 3.\n', error)
216
153
def test_log(self):
217
154
# Smoke test for "bzr log" in a git repository.
218
155
self.simple_commit()
231
168
# Check that bzr log does not fail and includes the revision.
232
169
output, error = self.run_bzr(['log', '-v'])
233
self.assertContainsRe(output, 'revno: 1')
235
def test_log_without_revno(self):
236
# Smoke test for "bzr log -v" in a git repository.
239
# Check that bzr log does not fail and includes the revision.
240
output, error = self.run_bzr(['log', '-Ocalculate_revnos=no'])
241
self.assertNotContainsRe(output, 'revno: 1')
243
def test_commit_without_revno(self):
244
repo = GitRepo.init(self.test_dir)
245
output, error = self.run_bzr(
246
['commit', '-Ocalculate_revnos=yes', '--unchanged', '-m', 'one'])
247
self.assertContainsRe(error, 'Committed revision 1.')
248
output, error = self.run_bzr(
249
['commit', '-Ocalculate_revnos=no', '--unchanged', '-m', 'two'])
250
self.assertNotContainsRe(error, 'Committed revision 2.')
251
self.assertContainsRe(error, 'Committed revid .*.')
253
def test_log_file(self):
254
# Smoke test for "bzr log" in a git repository.
255
repo = GitRepo.init(self.test_dir)
256
builder = tests.GitBranchBuilder()
257
builder.set_file('a', b'text for a\n', False)
258
r1 = builder.commit(b'Joe Foo <joe@foo.com>', u'First')
259
builder.set_file('a', b'text 3a for a\n', False)
260
r2a = builder.commit(b'Joe Foo <joe@foo.com>', u'Second a', base=r1)
261
builder.set_file('a', b'text 3b for a\n', False)
262
r2b = builder.commit(b'Joe Foo <joe@foo.com>', u'Second b', base=r1)
263
builder.set_file('a', b'text 4 for a\n', False)
264
builder.commit(b'Joe Foo <joe@foo.com>', u'Third', merge=[r2a], base=r2b)
267
# Check that bzr log does not fail and includes the revision.
268
output, error = self.run_bzr(['log', '-n2', 'a'])
269
self.assertEqual(error, '')
270
self.assertIn('Second a', output)
271
self.assertIn('Second b', output)
272
self.assertIn('First', output)
273
self.assertIn('Third', output)
275
171
def test_tags(self):
276
172
git_repo, commit_sha1 = self.simple_commit()
301
197
output, error = self.run_bzr(['diff', '--format=git'], retcode=1)
302
198
self.assertEqual(error, '')
303
# Some older versions of Dulwich (< 0.19.12) formatted diffs slightly
305
from dulwich import __version__ as dulwich_version
306
if dulwich_version < (0, 19, 12):
307
self.assertEqual(output,
308
'diff --git /dev/null b/a\n'
311
'index 0000000..c197bd8 100644\n'
317
self.assertEqual(output,
318
'diff --git a/a b/a\n'
320
'new file mode 100644\n'
321
'index 0000000..c197bd8 100644\n'
199
self.assertEqual(output,
200
'diff --git /dev/null b/a\n'
203
'index 0000000..c197bd8 100644\n'
327
209
def test_git_import_uncolocated(self):
328
210
r = GitRepo.init("a", mkdir=True)
424
306
self.assertEqual(out, '')
425
307
self.assertTrue(err.endswith, '3 objects\n')
427
def test_local_whoami(self):
428
r = GitRepo.init("gitr", mkdir=True)
429
self.build_tree_contents([('gitr/.git/config', """\
431
email = some@example.com
434
out, err = self.run_bzr(["whoami", "-d", "gitr"])
435
self.assertEqual(out, "Test User <some@example.com>\n")
436
self.assertEqual(err, "")
438
self.build_tree_contents([('gitr/.git/config', """\
440
email = some@example.com
442
out, err = self.run_bzr(["whoami", "-d", "gitr"])
443
self.assertEqual(out, "some@example.com\n")
444
self.assertEqual(err, "")
446
def test_local_signing_key(self):
447
r = GitRepo.init("gitr", mkdir=True)
448
self.build_tree_contents([('gitr/.git/config', """\
450
email = some@example.com
452
signingkey = D729A457
454
out, err = self.run_bzr(["config", "-d", "gitr", "gpg_signing_key"])
455
self.assertEqual(out, "D729A457\n")
456
self.assertEqual(err, "")
459
310
class ShallowTests(ExternalBase):
541
392
with basis_tree.lock_read():
542
393
self.assertEqual([], list(tree.iter_changes(basis_tree)))
544
def test_branch_with_nested_trees(self):
545
orig = self.make_branch_and_tree('source', format='git')
546
subtree = self.make_branch_and_tree('source/subtree', format='git')
547
self.build_tree(['source/subtree/a'])
548
self.build_tree_contents([('source/.gitmodules', """\
549
[submodule "subtree"]
552
""" % subtree.user_url)])
554
subtree.commit('add subtree contents')
555
orig.add_reference(subtree)
556
orig.add(['.gitmodules'])
557
orig.commit('add subtree')
559
self.run_bzr('branch source target')
561
target = WorkingTree.open('target')
562
target_subtree = WorkingTree.open('target/subtree')
563
self.assertTreesEqual(orig, target)
564
self.assertTreesEqual(subtree, target_subtree)
567
class SwitchScriptTests(TestCaseWithTransportAndScript):
569
def test_switch_preserves(self):
570
# See https://bugs.launchpad.net/brz/+bug/1820606
573
Created a standalone tree (format: git)
575
$ echo original > file.txt
578
$ brz ci -q -m "Initial"
579
$ echo "entered on master branch" > file.txt
583
$ brz switch -b other
584
2>Tree is up to date at revision 1.
585
2>Switched to branch other
587
entered on master branch
591
396
class GrepTests(ExternalBase):