177
188
output, error = self.run_bzr(['diff', '--format=git'], retcode=1)
178
189
self.assertEqual(error, '')
179
190
self.assertEqual(output,
180
'diff --git /dev/null b/a\n'
183
'index 0000000..c197bd8 100644\n'
191
'diff --git /dev/null b/a\n'
194
'index 0000000..c197bd8 100644\n'
189
200
def test_git_import_uncolocated(self):
190
201
r = GitRepo.init("a", mkdir=True)
191
202
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")
204
r.do_commit(ref=b"refs/heads/abranch",
205
committer=b"Joe <joe@example.com>", message=b"Dummy")
206
r.do_commit(ref=b"refs/heads/bbranch",
207
committer=b"Joe <joe@example.com>", message=b"Dummy")
195
208
self.run_bzr(["git-import", "a", "b"])
196
self.assertEqual(set([".bzr", "abranch", "bbranch"]), set(os.listdir("b")))
210
set([".bzr", "abranch", "bbranch"]), set(os.listdir("b")))
198
212
def test_git_import(self):
199
213
r = GitRepo.init("a", mkdir=True)
200
214
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")
216
r.do_commit(ref=b"refs/heads/abranch",
217
committer=b"Joe <joe@example.com>", message=b"Dummy")
218
r.do_commit(ref=b"refs/heads/bbranch",
219
committer=b"Joe <joe@example.com>", message=b"Dummy")
204
220
self.run_bzr(["git-import", "--colocated", "a", "b"])
205
221
self.assertEqual(set([".bzr"]), set(os.listdir("b")))
206
222
self.assertEqual(set(["abranch", "bbranch"]),
207
set(ControlDir.open("b").get_branches().keys()))
223
set(ControlDir.open("b").get_branches().keys()))
209
225
def test_git_import_incremental(self):
210
226
r = GitRepo.init("a", mkdir=True)
211
227
self.build_tree(["a/file"])
213
r.do_commit(ref=b"refs/heads/abranch", committer=b"Joe <joe@example.com>", message=b"Dummy")
229
r.do_commit(ref=b"refs/heads/abranch",
230
committer=b"Joe <joe@example.com>", message=b"Dummy")
214
231
self.run_bzr(["git-import", "--colocated", "a", "b"])
215
232
self.run_bzr(["git-import", "--colocated", "a", "b"])
216
233
self.assertEqual(set([".bzr"]), set(os.listdir("b")))
221
238
r = GitRepo.init("a", mkdir=True)
222
239
self.build_tree(["a/file"])
224
cid = r.do_commit(ref=b"refs/heads/abranch", committer=b"Joe <joe@example.com>", message=b"Dummy")
241
cid = r.do_commit(ref=b"refs/heads/abranch",
242
committer=b"Joe <joe@example.com>", message=b"Dummy")
225
243
r[b"refs/tags/atag"] = cid
226
244
self.run_bzr(["git-import", "--colocated", "a", "b"])
227
245
self.assertEqual(set([".bzr"]), set(os.listdir("b")))
228
246
b = ControlDir.open("b")
229
247
self.assertEqual(["abranch"], list(b.get_branches().keys()))
230
248
self.assertEqual(["atag"],
231
list(b.open_branch("abranch").tags.get_tag_dict().keys()))
249
list(b.open_branch("abranch").tags.get_tag_dict().keys()))
233
251
def test_git_import_colo(self):
234
252
r = GitRepo.init("a", mkdir=True)
235
253
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")
255
r.do_commit(ref=b"refs/heads/abranch",
256
committer=b"Joe <joe@example.com>", message=b"Dummy")
257
r.do_commit(ref=b"refs/heads/bbranch",
258
committer=b"Joe <joe@example.com>", message=b"Dummy")
239
259
self.make_controldir("b", format="development-colo")
240
260
self.run_bzr(["git-import", "--colocated", "a", "b"])
241
261
self.assertEqual(
246
266
r = GitRepo.init("a", mkdir=True)
247
267
self.build_tree(["a/file"])
249
cid = r.do_commit(ref=b"refs/heads/abranch", committer=b"Joe <joe@example.com>", message=b"Dummy")
269
cid = r.do_commit(ref=b"refs/heads/abranch",
270
committer=b"Joe <joe@example.com>", message=b"Dummy")
250
271
r[b"refs/tags/atag"] = cid
251
272
(stdout, stderr) = self.run_bzr(["git-refs", "a"])
252
273
self.assertEqual(stderr, "")
253
274
self.assertEqual(stdout,
254
'refs/heads/abranch -> ' + cid.decode('ascii') + '\n'
255
'refs/tags/atag -> ' + cid.decode('ascii') + '\n')
275
'refs/heads/abranch -> ' + cid.decode('ascii') + '\n'
276
'refs/tags/atag -> ' + cid.decode('ascii') + '\n')
257
278
def test_git_refs_from_bzr(self):
258
279
tree = self.make_branch_and_tree('a')
259
280
self.build_tree(["a/file"])
260
281
tree.add(["file"])
261
revid = tree.commit(committer=b"Joe <joe@example.com>", message=b"Dummy")
283
committer=b"Joe <joe@example.com>", message=b"Dummy")
262
284
tree.branch.tags.set_tag("atag", revid)
263
285
(stdout, stderr) = self.run_bzr(["git-refs", "a"])
264
286
self.assertEqual(stderr, "")
285
307
self.build_tree_contents([("gitr/foo", b"hello from git")])
286
308
self.repo.stage("foo")
287
309
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])
310
b"message", committer=b"Somebody <user@example.com>",
311
author=b"Somebody <user@example.com>",
312
commit_timestamp=1526330165, commit_timezone=0,
313
author_timestamp=1526330165, author_timezone=0,
314
merge_heads=[b'aa' * 20])
293
316
def test_log_shallow(self):
294
317
# Check that bzr log does not fail and includes the revision.
295
318
output, error = self.run_bzr(['log', 'gitr'], retcode=3)
296
self.assertEqual(error, 'brz: ERROR: Further revision history missing.\n')
320
error, 'brz: ERROR: Further revision history missing.\n')
297
321
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'
322
'------------------------------------------------------------\n'
323
'revision-id: git-v1:' + self.repo.head().decode('ascii') + '\n'
324
'git commit: ' + self.repo.head().decode('ascii') + '\n'
325
'committer: Somebody <user@example.com>\n'
326
'timestamp: Mon 2018-05-14 20:36:05 +0000\n'
306
330
def test_version_info_rio(self):
307
331
output, error = self.run_bzr(['version-info', '--rio', 'gitr'])
316
340
def test_version_info_custom_with_revno(self):
317
341
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')
342
['version-info', '--custom',
343
'--template=VERSION_INFO r{revno})\n', 'gitr'], retcode=3)
345
error, 'brz: ERROR: Variable {revno} is not available.\n')
321
346
self.assertEqual(output, 'VERSION_INFO r')
323
348
def test_version_info_custom_without_revno(self):
324
349
output, error = self.run_bzr(
325
['version-info', '--custom', '--template=VERSION_INFO \n',
350
['version-info', '--custom', '--template=VERSION_INFO \n',
327
352
self.assertEqual(error, '')
328
353
self.assertEqual(output, 'VERSION_INFO \n')
356
class SwitchTests(ExternalBase):
358
def test_switch_branch(self):
359
# Create a git repository with a revision.
360
repo = GitRepo.init(self.test_dir)
361
builder = tests.GitBranchBuilder()
362
builder.set_branch(b'refs/heads/oldbranch')
363
builder.set_file('a', b'text for a\n', False)
364
builder.commit(b'Joe Foo <joe@foo.com>', u'<The commit message>')
365
builder.set_branch(b'refs/heads/newbranch')
367
builder.set_file('a', b'text for new a\n', False)
368
builder.commit(b'Joe Foo <joe@foo.com>', u'<The commit message>')
371
repo.refs.set_symbolic_ref(b'HEAD', b'refs/heads/newbranch')
375
output, error = self.run_bzr('switch oldbranch')
376
self.assertEqual(output, '')
377
self.assertTrue(error.startswith('Updated to revision 1.\n'), error)
379
self.assertFileEqual("text for a\n", 'a')
380
tree = WorkingTree.open('.')
381
with tree.lock_read():
382
basis_tree = tree.basis_tree()
383
with basis_tree.lock_read():
384
self.assertEqual([], list(tree.iter_changes(basis_tree)))
387
class GrepTests(ExternalBase):
389
def test_simple_grep(self):
390
tree = self.make_branch_and_tree('.', format='git')
391
self.build_tree_contents([('a', 'text for a\n')])
393
output, error = self.run_bzr('grep text')
394
self.assertEqual(output, 'a:text for a\n')
395
self.assertEqual(error, '')
398
class ReconcileTests(ExternalBase):
400
def test_simple_reconcile(self):
401
tree = self.make_branch_and_tree('.', format='git')
402
self.build_tree_contents([('a', 'text for a\n')])
404
output, error = self.run_bzr('reconcile')
405
self.assertContainsRe(
407
'Reconciling branch file://.*\n'
408
'Reconciling repository file://.*\n'
409
'Reconciliation complete.\n')
410
self.assertEqual(error, '')
413
class StatusTests(ExternalBase):
415
def test_empty_dir(self):
416
tree = self.make_branch_and_tree('.', format='git')
417
self.build_tree(['a/', 'a/foo'])
418
self.build_tree_contents([('.gitignore', 'foo\n')])
419
tree.add(['.gitignore'])
420
tree.commit('add ignore')
421
output, error = self.run_bzr('st')
422
self.assertEqual(output, '')
423
self.assertEqual(error, '')
426
class StatsTests(ExternalBase):
428
def test_simple_stats(self):
429
self.requireFeature(PluginLoadedFeature('stats'))
430
tree = self.make_branch_and_tree('.', format='git')
431
self.build_tree_contents([('a', 'text for a\n')])
433
tree.commit('a commit', committer='Somebody <somebody@example.com>')
434
output, error = self.run_bzr('stats')
435
self.assertEqual(output, ' 1 Somebody <somebody@example.com>\n')
438
class GitObjectsTests(ExternalBase):
440
def run_simple(self, format):
441
tree = self.make_branch_and_tree('.', format=format)
442
self.build_tree(['a/', 'a/foo'])
445
output, error = self.run_bzr('git-objects')
446
shas = list(output.splitlines())
447
self.assertEqual([40, 40], [len(s) for s in shas])
448
self.assertEqual(error, '')
450
output, error = self.run_bzr('git-object %s' % shas[0])
451
self.assertEqual('', error)
453
def test_in_native(self):
454
self.run_simple(format='git')
456
def test_in_bzr(self):
457
self.run_simple(format='2a')
460
class GitApplyTests(ExternalBase):
462
def test_apply(self):
463
b = self.make_branch_and_tree('.')
465
with open('foo.patch', 'w') as f:
467
From bdefb25fab801e6af0a70e965f60cb48f2b759fa Mon Sep 17 00:00:00 2001
468
From: Dmitry Bogatov <KAction@debian.org>
469
Date: Fri, 8 Feb 2019 23:28:30 +0000
470
Subject: [PATCH] Add fixed for out-of-date-standards-version
474
1 files changed, 14 insertions(+)
475
create mode 100644 message
477
diff --git a/message b/message
479
index 0000000..05ec0b1
483
+Update standards version, no changes needed.
485
+Fixed-Lintian-Tags: out-of-date-standards-version
487
output, error = self.run_bzr('git-apply foo.patch')
488
self.assertContainsRe(
490
'Committing to: .*\n'
491
'Committed revision 1.\n')