def test_set_file_newline(self): stream = StringIO() builder = tests.GitBranchBuilder(stream) builder.set_file(u'foo\nbar', 'contents\nbar\n', False) self.assertEqualDiff('blob\nmark :1\ndata 13\ncontents\nbar\n\n', stream.getvalue()) self.assertEqual(['M 100644 :1 "foo\\nbar"\n'], builder.commit_info)
def test_set_file(self): stream = StringIO() builder = tests.GitBranchBuilder(stream) builder.set_file('foobar', 'foo\nbar\n', False) self.assertEqualDiff('blob\nmark :1\ndata 8\nfoo\nbar\n\n', stream.getvalue()) self.assertEqual(['M 100644 :1 foobar\n'], builder.commit_info)
def test_set_file_executable(self): stream = StringIO() builder = tests.GitBranchBuilder(stream) builder.set_file(u'f\xb5/bar', 'contents\nbar\n', True) self.assertEqualDiff('blob\nmark :1\ndata 13\ncontents\nbar\n\n', stream.getvalue()) self.assertEqual(['M 100755 :1 f\xc2\xb5/bar\n'], builder.commit_info)
def test_set_link_newline(self): stream = StringIO() builder = tests.GitBranchBuilder(stream) builder.set_link(u'foo\nbar', 'link/contents') self.assertEqualDiff('blob\nmark :1\ndata 13\nlink/contents\n', stream.getvalue()) self.assertEqual(['M 120000 :1 "foo\\nbar"\n'], builder.commit_info)
def test_reset_revision(self): stream = StringIO() builder = tests.GitBranchBuilder(stream) builder.reset(mark=123) self.assertEqualDiff('reset refs/heads/master\n' 'from :123\n' '\n', stream.getvalue())
def simple_commit(self): # Create a git repository with a revision. tests.run_git('init') builder = tests.GitBranchBuilder() builder.set_file('a', 'text for a\n', False) builder.commit('Joe Foo <*****@*****.**>', u'<The commit message>') builder.finish()
def test_commit_merge(self): stream = StringIO() builder = tests.GitBranchBuilder(stream) builder.set_file(u'foo', 'contents\nfoo\n', False) r1 = builder.commit('Joe Foo <*****@*****.**>', u'first', timestamp=1194586400) r2 = builder.commit('Joe Foo <*****@*****.**>', u'second', timestamp=1194586405) r3 = builder.commit('Joe Foo <*****@*****.**>', u'third', timestamp=1194586410, base=r1) r4 = builder.commit('Joe Foo <*****@*****.**>', u'Merge', timestamp=1194586415, merge=[r2]) self.assertEqualDiff( 'blob\nmark :1\ndata 13\ncontents\nfoo\n\n' 'commit refs/heads/master\n' 'mark :2\n' 'committer Joe Foo <*****@*****.**> 1194586400 +0000\n' 'data 5\n' 'first' '\n' 'M 100644 :1 foo\n' '\n' 'commit refs/heads/master\n' 'mark :3\n' 'committer Joe Foo <*****@*****.**> 1194586405 +0000\n' 'data 6\n' 'second' '\n' '\n' 'commit refs/heads/master\n' 'mark :4\n' 'committer Joe Foo <*****@*****.**> 1194586410 +0000\n' 'data 5\n' 'third' '\n' 'from :2\n' '\n' 'commit refs/heads/master\n' 'mark :5\n' 'committer Joe Foo <*****@*****.**> 1194586415 +0000\n' 'data 5\n' 'Merge' '\n' 'merge :3\n' '\n', stream.getvalue())
def simple_commit(self): # Create a git repository with some interesting files in a revision. tests.run_git('init') builder = tests.GitBranchBuilder() builder.set_file('data', 'text\n', False) builder.set_file('executable', 'content', True) builder.set_link('link', 'broken') builder.set_file('subdir/subfile', 'subdir text\n', False) commit_handle = builder.commit('Joe Foo <*****@*****.**>', u'message', timestamp=1205433193) mapping = builder.finish() return mapping[commit_handle]
def test_branch(self): os.mkdir("gitbranch") os.chdir("gitbranch") tests.run_git('init') builder = tests.GitBranchBuilder() builder.set_file('a', 'text for a\n', False) builder.commit('Joe Foo <*****@*****.**>', u'<The commit message>') builder.finish() os.chdir("..") output, error = self.run_bzr(['branch', 'gitbranch', 'bzrbranch']) self.assertEqual(error, 'Branched 1 revision(s).\n') self.assertEqual(output, 'git: counting objects: 3\r\n')
def test_create_real_branch(self): tests.run_git('init') builder = tests.GitBranchBuilder() builder.set_file(u'foo', 'contents\nfoo\n', False) r1 = builder.commit('Joe Foo <*****@*****.**>', u'first', timestamp=1194586400) mapping = builder.finish() self.assertEqual( { 1: '44411e8e9202177dd19b6599d7a7991059fa3cb4', 2: 'b0b62e674f67306fddcf72fa888c3b56df100d64', }, mapping)
def test_get_revision(self): # GitRepository.get_revision gives a Revision object. # Create a git repository with a revision. tests.run_git('init') builder = tests.GitBranchBuilder() builder.set_file('a', 'text for a\n', False) commit_handle = builder.commit('Joe Foo <*****@*****.**>', u'message') mapping = builder.finish() commit_id = mapping[commit_handle] # Get the corresponding Revision object. revid = default_mapping.revision_id_foreign_to_bzr(commit_id) repo = Repository.open('.') rev = repo.get_revision(revid) self.assertIsInstance(rev, revision.Revision)
def test_add_and_commit(self): stream = StringIO() builder = tests.GitBranchBuilder(stream) builder.set_file(u'f\xb5/bar', 'contents\nbar\n', False) self.assertEqual( 2, builder.commit('Joe Foo <*****@*****.**>', u'committing f\xb5/bar', timestamp=1194586400, timezone='+0100')) self.assertEqualDiff( 'blob\nmark :1\ndata 13\ncontents\nbar\n\n' 'commit refs/heads/master\n' 'mark :2\n' 'committer Joe Foo <*****@*****.**> 1194586400 +0100\n' 'data 18\n' 'committing f\xc2\xb5/bar' '\n' 'M 100644 :1 f\xc2\xb5/bar\n' '\n', stream.getvalue())
def test_delete_entry_newline(self): stream = StringIO() builder = tests.GitBranchBuilder(stream) builder.delete_entry(u'path/to/foo\nbar') self.assertEqual(['D "path/to/foo\\nbar"\n'], builder.commit_info)
def test_delete_entry(self): stream = StringIO() builder = tests.GitBranchBuilder(stream) builder.delete_entry(u'path/to/f\xb5') self.assertEqual(['D path/to/f\xc2\xb5\n'], builder.commit_info)
def test_auto_timestamp(self): stream = StringIO() builder = tests.GitBranchBuilder(stream) builder.commit('Joe Foo <*****@*****.**>', u'message') self.assertContainsRe(stream.getvalue(), r'committer Joe Foo <joe@foo\.com> \d+ \+0000')
def test__create_blob(self): stream = StringIO() builder = tests.GitBranchBuilder(stream) self.assertEqual(1, builder._create_blob('foo\nbar\n')) self.assertEqualDiff('blob\nmark :1\ndata 8\nfoo\nbar\n\n', stream.getvalue())
def test_reset(self): stream = StringIO() builder = tests.GitBranchBuilder(stream) builder.reset() self.assertEqualDiff('reset refs/heads/master\n\n', stream.getvalue())
def test_reset_named_ref(self): stream = StringIO() builder = tests.GitBranchBuilder(stream) builder.reset('refs/heads/branch') self.assertEqualDiff('reset refs/heads/branch\n\n', stream.getvalue())