177
197
output, error = self.run_bzr(['diff', '--format=git'], retcode=1)
178
198
self.assertEqual(error, '')
179
199
self.assertEqual(output,
180
'diff --git /dev/null b/a\n'
183
'index 0000000..c197bd8 100644\n'
200
'diff --git a/a b/a\n'
202
'new file mode 100644\n'
203
'index 0000000..c197bd8 100644\n'
189
209
def test_git_import_uncolocated(self):
190
210
r = GitRepo.init("a", mkdir=True)
191
211
self.build_tree(["a/file"])
193
r.do_commit(ref=b"refs/heads/abranch", committer=b"Joe <joe@example.com>", message=b"Dummy")
194
r.do_commit(ref=b"refs/heads/bbranch", committer=b"Joe <joe@example.com>", message=b"Dummy")
213
r.do_commit(ref=b"refs/heads/abranch",
214
committer=b"Joe <joe@example.com>", message=b"Dummy")
215
r.do_commit(ref=b"refs/heads/bbranch",
216
committer=b"Joe <joe@example.com>", message=b"Dummy")
195
217
self.run_bzr(["git-import", "a", "b"])
196
self.assertEqual(set([".bzr", "abranch", "bbranch"]), set(os.listdir("b")))
219
set([".bzr", "abranch", "bbranch"]), set(os.listdir("b")))
198
221
def test_git_import(self):
199
222
r = GitRepo.init("a", mkdir=True)
200
223
self.build_tree(["a/file"])
202
r.do_commit(ref=b"refs/heads/abranch", committer=b"Joe <joe@example.com>", message=b"Dummy")
203
r.do_commit(ref=b"refs/heads/bbranch", committer=b"Joe <joe@example.com>", message=b"Dummy")
225
r.do_commit(ref=b"refs/heads/abranch",
226
committer=b"Joe <joe@example.com>", message=b"Dummy")
227
r.do_commit(ref=b"refs/heads/bbranch",
228
committer=b"Joe <joe@example.com>", message=b"Dummy")
204
229
self.run_bzr(["git-import", "--colocated", "a", "b"])
205
230
self.assertEqual(set([".bzr"]), set(os.listdir("b")))
206
231
self.assertEqual(set(["abranch", "bbranch"]),
207
set(ControlDir.open("b").get_branches().keys()))
232
set(ControlDir.open("b").get_branches().keys()))
209
234
def test_git_import_incremental(self):
210
235
r = GitRepo.init("a", mkdir=True)
211
236
self.build_tree(["a/file"])
213
r.do_commit(ref=b"refs/heads/abranch", committer=b"Joe <joe@example.com>", message=b"Dummy")
238
r.do_commit(ref=b"refs/heads/abranch",
239
committer=b"Joe <joe@example.com>", message=b"Dummy")
214
240
self.run_bzr(["git-import", "--colocated", "a", "b"])
215
241
self.run_bzr(["git-import", "--colocated", "a", "b"])
216
242
self.assertEqual(set([".bzr"]), set(os.listdir("b")))
221
247
r = GitRepo.init("a", mkdir=True)
222
248
self.build_tree(["a/file"])
224
cid = r.do_commit(ref=b"refs/heads/abranch", committer=b"Joe <joe@example.com>", message=b"Dummy")
250
cid = r.do_commit(ref=b"refs/heads/abranch",
251
committer=b"Joe <joe@example.com>", message=b"Dummy")
225
252
r[b"refs/tags/atag"] = cid
226
253
self.run_bzr(["git-import", "--colocated", "a", "b"])
227
254
self.assertEqual(set([".bzr"]), set(os.listdir("b")))
228
255
b = ControlDir.open("b")
229
256
self.assertEqual(["abranch"], list(b.get_branches().keys()))
230
257
self.assertEqual(["atag"],
231
list(b.open_branch("abranch").tags.get_tag_dict().keys()))
258
list(b.open_branch("abranch").tags.get_tag_dict().keys()))
233
260
def test_git_import_colo(self):
234
261
r = GitRepo.init("a", mkdir=True)
235
262
self.build_tree(["a/file"])
237
r.do_commit(ref=b"refs/heads/abranch", committer=b"Joe <joe@example.com>", message=b"Dummy")
238
r.do_commit(ref=b"refs/heads/bbranch", committer=b"Joe <joe@example.com>", message=b"Dummy")
264
r.do_commit(ref=b"refs/heads/abranch",
265
committer=b"Joe <joe@example.com>", message=b"Dummy")
266
r.do_commit(ref=b"refs/heads/bbranch",
267
committer=b"Joe <joe@example.com>", message=b"Dummy")
239
268
self.make_controldir("b", format="development-colo")
240
269
self.run_bzr(["git-import", "--colocated", "a", "b"])
241
270
self.assertEqual(
246
275
r = GitRepo.init("a", mkdir=True)
247
276
self.build_tree(["a/file"])
249
cid = r.do_commit(ref=b"refs/heads/abranch", committer=b"Joe <joe@example.com>", message=b"Dummy")
278
cid = r.do_commit(ref=b"refs/heads/abranch",
279
committer=b"Joe <joe@example.com>", message=b"Dummy")
250
280
r[b"refs/tags/atag"] = cid
251
281
(stdout, stderr) = self.run_bzr(["git-refs", "a"])
252
282
self.assertEqual(stderr, "")
253
283
self.assertEqual(stdout,
254
'refs/heads/abranch -> ' + cid.decode('ascii') + '\n'
255
'refs/tags/atag -> ' + cid.decode('ascii') + '\n')
284
'refs/heads/abranch -> ' + cid.decode('ascii') + '\n'
285
'refs/tags/atag -> ' + cid.decode('ascii') + '\n')
257
287
def test_git_refs_from_bzr(self):
258
288
tree = self.make_branch_and_tree('a')
259
289
self.build_tree(["a/file"])
260
290
tree.add(["file"])
261
revid = tree.commit(committer=b"Joe <joe@example.com>", message=b"Dummy")
292
committer=b"Joe <joe@example.com>", message=b"Dummy")
262
293
tree.branch.tags.set_tag("atag", revid)
263
294
(stdout, stderr) = self.run_bzr(["git-refs", "a"])
264
295
self.assertEqual(stderr, "")
285
316
self.build_tree_contents([("gitr/foo", b"hello from git")])
286
317
self.repo.stage("foo")
287
318
self.repo.do_commit(
288
b"message", committer=b"Somebody <user@example.com>",
289
commit_timestamp=1526330165, commit_timezone=0,
290
author_timestamp=1526330165, author_timezone=0,
291
merge_heads=[b'aa' * 20])
319
b"message", committer=b"Somebody <user@example.com>",
320
author=b"Somebody <user@example.com>",
321
commit_timestamp=1526330165, commit_timezone=0,
322
author_timestamp=1526330165, author_timezone=0,
323
merge_heads=[b'aa' * 20])
293
325
def test_log_shallow(self):
294
326
# Check that bzr log does not fail and includes the revision.
295
327
output, error = self.run_bzr(['log', 'gitr'], retcode=3)
296
self.assertEqual(error, 'brz: ERROR: Further revision history missing.\n')
329
error, 'brz: ERROR: Further revision history missing.\n')
297
330
self.assertEqual(output,
298
'------------------------------------------------------------\n'
299
'revision-id: git-v1:' + self.repo.head().decode('ascii') + '\n'
300
'git commit: ' + self.repo.head().decode('ascii') + '\n'
301
'committer: Somebody <user@example.com>\n'
302
'timestamp: Mon 2018-05-14 20:36:05 +0000\n'
331
'------------------------------------------------------------\n'
332
'revision-id: git-v1:' + self.repo.head().decode('ascii') + '\n'
333
'git commit: ' + self.repo.head().decode('ascii') + '\n'
334
'committer: Somebody <user@example.com>\n'
335
'timestamp: Mon 2018-05-14 20:36:05 +0000\n'
306
339
def test_version_info_rio(self):
307
340
output, error = self.run_bzr(['version-info', '--rio', 'gitr'])
316
349
def test_version_info_custom_with_revno(self):
317
350
output, error = self.run_bzr(
318
['version-info', '--custom',
319
'--template=VERSION_INFO r{revno})\n', 'gitr'], retcode=3)
320
self.assertEqual(error, 'brz: ERROR: Variable {revno} is not available.\n')
351
['version-info', '--custom',
352
'--template=VERSION_INFO r{revno})\n', 'gitr'], retcode=3)
354
error, 'brz: ERROR: Variable {revno} is not available.\n')
321
355
self.assertEqual(output, 'VERSION_INFO r')
323
357
def test_version_info_custom_without_revno(self):
324
358
output, error = self.run_bzr(
325
['version-info', '--custom', '--template=VERSION_INFO \n',
359
['version-info', '--custom', '--template=VERSION_INFO \n',
327
361
self.assertEqual(error, '')
328
362
self.assertEqual(output, 'VERSION_INFO \n')
365
class SwitchTests(ExternalBase):
367
def test_switch_branch(self):
368
# Create a git repository with a revision.
369
repo = GitRepo.init(self.test_dir)
370
builder = tests.GitBranchBuilder()
371
builder.set_branch(b'refs/heads/oldbranch')
372
builder.set_file('a', b'text for a\n', False)
373
builder.commit(b'Joe Foo <joe@foo.com>', u'<The commit message>')
374
builder.set_branch(b'refs/heads/newbranch')
376
builder.set_file('a', b'text for new a\n', False)
377
builder.commit(b'Joe Foo <joe@foo.com>', u'<The commit message>')
380
repo.refs.set_symbolic_ref(b'HEAD', b'refs/heads/newbranch')
384
output, error = self.run_bzr('switch oldbranch')
385
self.assertEqual(output, '')
386
self.assertTrue(error.startswith('Updated to revision 1.\n'), error)
388
self.assertFileEqual("text for a\n", 'a')
389
tree = WorkingTree.open('.')
390
with tree.lock_read():
391
basis_tree = tree.basis_tree()
392
with basis_tree.lock_read():
393
self.assertEqual([], list(tree.iter_changes(basis_tree)))
396
class GrepTests(ExternalBase):
398
def test_simple_grep(self):
399
tree = self.make_branch_and_tree('.', format='git')
400
self.build_tree_contents([('a', 'text for a\n')])
402
output, error = self.run_bzr('grep text')
403
self.assertEqual(output, 'a:text for a\n')
404
self.assertEqual(error, '')
407
class ReconcileTests(ExternalBase):
409
def test_simple_reconcile(self):
410
tree = self.make_branch_and_tree('.', format='git')
411
self.build_tree_contents([('a', 'text for a\n')])
413
output, error = self.run_bzr('reconcile')
414
self.assertContainsRe(
416
'Reconciling branch file://.*\n'
417
'Reconciling repository file://.*\n'
418
'Reconciliation complete.\n')
419
self.assertEqual(error, '')
422
class StatusTests(ExternalBase):
424
def test_empty_dir(self):
425
tree = self.make_branch_and_tree('.', format='git')
426
self.build_tree(['a/', 'a/foo'])
427
self.build_tree_contents([('.gitignore', 'foo\n')])
428
tree.add(['.gitignore'])
429
tree.commit('add ignore')
430
output, error = self.run_bzr('st')
431
self.assertEqual(output, '')
432
self.assertEqual(error, '')
435
class StatsTests(ExternalBase):
437
def test_simple_stats(self):
438
self.requireFeature(PluginLoadedFeature('stats'))
439
tree = self.make_branch_and_tree('.', format='git')
440
self.build_tree_contents([('a', 'text for a\n')])
442
tree.commit('a commit', committer='Somebody <somebody@example.com>')
443
output, error = self.run_bzr('stats')
444
self.assertEqual(output, ' 1 Somebody <somebody@example.com>\n')
447
class GitObjectsTests(ExternalBase):
449
def run_simple(self, format):
450
tree = self.make_branch_and_tree('.', format=format)
451
self.build_tree(['a/', 'a/foo'])
454
output, error = self.run_bzr('git-objects')
455
shas = list(output.splitlines())
456
self.assertEqual([40, 40], [len(s) for s in shas])
457
self.assertEqual(error, '')
459
output, error = self.run_bzr('git-object %s' % shas[0])
460
self.assertEqual('', error)
462
def test_in_native(self):
463
self.run_simple(format='git')
465
def test_in_bzr(self):
466
self.run_simple(format='2a')
469
class GitApplyTests(ExternalBase):
471
def test_apply(self):
472
b = self.make_branch_and_tree('.')
474
with open('foo.patch', 'w') as f:
476
From bdefb25fab801e6af0a70e965f60cb48f2b759fa Mon Sep 17 00:00:00 2001
477
From: Dmitry Bogatov <KAction@debian.org>
478
Date: Fri, 8 Feb 2019 23:28:30 +0000
479
Subject: [PATCH] Add fixed for out-of-date-standards-version
483
1 files changed, 14 insertions(+)
484
create mode 100644 message
486
diff --git a/message b/message
488
index 0000000..05ec0b1
492
+Update standards version, no changes needed.
494
+Fixed-Lintian-Tags: out-of-date-standards-version
496
output, error = self.run_bzr('git-apply foo.patch')
497
self.assertContainsRe(
499
'Committing to: .*\n'
500
'Committed revision 1.\n')