summaryrefslogtreecommitdiff
path: root/test/test_fun.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_fun.py')
-rw-r--r--test/test_fun.py103
1 files changed, 60 insertions, 43 deletions
diff --git a/test/test_fun.py b/test/test_fun.py
index e3d07194..7c99a4a1 100644
--- a/test/test_fun.py
+++ b/test/test_fun.py
@@ -16,23 +16,19 @@ from git.objects.fun import (
tree_to_stream,
tree_entries_from_data,
)
-from git.repo.fun import (
- find_worktree_git_dir
-)
-from test.lib import (
- TestBase,
- with_rw_repo,
- with_rw_directory
-)
+from git.repo.fun import find_worktree_git_dir
+from test.lib import TestBase, with_rw_repo, with_rw_directory
from git.util import bin_to_hex, cygpath, join_path_native
from gitdb.base import IStream
from gitdb.typ import str_tree_type
class TestFun(TestBase):
-
def _assert_index_entries(self, entries, trees):
- index = IndexFile.from_tree(self.rorepo, *[self.rorepo.tree(bin_to_hex(t).decode('ascii')) for t in trees])
+ index = IndexFile.from_tree(
+ self.rorepo,
+ *[self.rorepo.tree(bin_to_hex(t).decode("ascii")) for t in trees]
+ )
assert entries
assert len(index.entries) == len(entries)
for entry in entries:
@@ -80,7 +76,7 @@ class TestFun(TestBase):
istream = odb.store(IStream(str_tree_type, len(sio.getvalue()), sio))
return istream.binsha
- @with_rw_repo('0.1.6')
+ @with_rw_repo("0.1.6")
def test_three_way_merge(self, rwrepo):
def mkfile(name, sha, executable=0):
return (sha, S_IFREG | 0o644 | executable * 0o111, name)
@@ -91,6 +87,7 @@ class TestFun(TestBase):
def assert_entries(entries, num_entries, has_conflict=False):
assert len(entries) == num_entries
assert has_conflict == (len([e for e in entries if e.stage != 0]) > 0)
+
mktree = self.mktree
shaa = b"\1" * 20
@@ -100,14 +97,14 @@ class TestFun(TestBase):
odb = rwrepo.odb
# base tree
- bfn = 'basefile'
+ bfn = "basefile"
fbase = mkfile(bfn, shaa)
tb = mktree(odb, [fbase])
# non-conflicting new files, same data
- fa = mkfile('1', shab)
+ fa = mkfile("1", shab)
th = mktree(odb, [fbase, fa])
- fb = mkfile('2', shac)
+ fb = mkfile("2", shac)
tm = mktree(odb, [fbase, fb])
# two new files, same base file
@@ -115,9 +112,9 @@ class TestFun(TestBase):
assert_entries(aggressive_tree_merge(odb, trees), 3)
# both delete same file, add own one
- fa = mkfile('1', shab)
+ fa = mkfile("1", shab)
th = mktree(odb, [fa])
- fb = mkfile('2', shac)
+ fb = mkfile("2", shac)
tm = mktree(odb, [fb])
# two new files
@@ -125,9 +122,9 @@ class TestFun(TestBase):
assert_entries(aggressive_tree_merge(odb, trees), 2)
# same file added in both, differently
- fa = mkfile('1', shab)
+ fa = mkfile("1", shab)
th = mktree(odb, [fa])
- fb = mkfile('1', shac)
+ fb = mkfile("1", shac)
tm = mktree(odb, [fb])
# expect conflict
@@ -135,9 +132,9 @@ class TestFun(TestBase):
assert_entries(aggressive_tree_merge(odb, trees), 2, True)
# same file added, different mode
- fa = mkfile('1', shab)
+ fa = mkfile("1", shab)
th = mktree(odb, [fa])
- fb = mkcommit('1', shab)
+ fb = mkcommit("1", shab)
tm = mktree(odb, [fb])
# expect conflict
@@ -145,9 +142,9 @@ class TestFun(TestBase):
assert_entries(aggressive_tree_merge(odb, trees), 2, True)
# same file added in both
- fa = mkfile('1', shab)
+ fa = mkfile("1", shab)
th = mktree(odb, [fa])
- fb = mkfile('1', shab)
+ fb = mkfile("1", shab)
tm = mktree(odb, [fb])
# expect conflict
@@ -194,7 +191,11 @@ class TestFun(TestBase):
if is_them:
trees = [tb, tb, th]
entries = aggressive_tree_merge(odb, trees)
- assert len(entries) == 1 and entries[0].binsha == shaa and entries[0].mode == fa[1]
+ assert (
+ len(entries) == 1
+ and entries[0].binsha == shaa
+ and entries[0].mode == fa[1]
+ )
# one side deletes, the other changes = conflict
fa = mkfile(bfn, shab)
@@ -209,8 +210,20 @@ class TestFun(TestBase):
def test_stat_mode_to_index_mode(self):
modes = (
- 0o600, 0o611, 0o640, 0o641, 0o644, 0o650, 0o651,
- 0o700, 0o711, 0o740, 0o744, 0o750, 0o751, 0o755,
+ 0o600,
+ 0o611,
+ 0o640,
+ 0o641,
+ 0o644,
+ 0o650,
+ 0o651,
+ 0o700,
+ 0o711,
+ 0o740,
+ 0o744,
+ 0o750,
+ 0o751,
+ 0o755,
)
for mode in modes:
expected_mode = S_IFREG | (mode & S_IXUSR and 0o755 or 0o644)
@@ -229,42 +242,46 @@ class TestFun(TestBase):
def test_tree_traversal(self):
# low level tree tarversal
odb = self.rorepo.odb
- H = self.rorepo.tree('29eb123beb1c55e5db4aa652d843adccbd09ae18') # head tree
- M = self.rorepo.tree('e14e3f143e7260de9581aee27e5a9b2645db72de') # merge tree
- B = self.rorepo.tree('f606937a7a21237c866efafcad33675e6539c103') # base tree
- B_old = self.rorepo.tree('1f66cfbbce58b4b552b041707a12d437cc5f400a') # old base tree
+ H = self.rorepo.tree("29eb123beb1c55e5db4aa652d843adccbd09ae18") # head tree
+ M = self.rorepo.tree("e14e3f143e7260de9581aee27e5a9b2645db72de") # merge tree
+ B = self.rorepo.tree("f606937a7a21237c866efafcad33675e6539c103") # base tree
+ B_old = self.rorepo.tree(
+ "1f66cfbbce58b4b552b041707a12d437cc5f400a"
+ ) # old base tree
# two very different trees
- entries = traverse_trees_recursive(odb, [B_old.binsha, H.binsha], '')
+ entries = traverse_trees_recursive(odb, [B_old.binsha, H.binsha], "")
self._assert_tree_entries(entries, 2)
- oentries = traverse_trees_recursive(odb, [H.binsha, B_old.binsha], '')
+ oentries = traverse_trees_recursive(odb, [H.binsha, B_old.binsha], "")
assert len(oentries) == len(entries)
self._assert_tree_entries(oentries, 2)
# single tree
- is_no_tree = lambda i, d: i.type != 'tree'
- entries = traverse_trees_recursive(odb, [B.binsha], '')
+ is_no_tree = lambda i, d: i.type != "tree"
+ entries = traverse_trees_recursive(odb, [B.binsha], "")
assert len(entries) == len(list(B.traverse(predicate=is_no_tree)))
self._assert_tree_entries(entries, 1)
# two trees
- entries = traverse_trees_recursive(odb, [B.binsha, H.binsha], '')
+ entries = traverse_trees_recursive(odb, [B.binsha, H.binsha], "")
self._assert_tree_entries(entries, 2)
# tree trees
- entries = traverse_trees_recursive(odb, [B.binsha, H.binsha, M.binsha], '')
+ entries = traverse_trees_recursive(odb, [B.binsha, H.binsha, M.binsha], "")
self._assert_tree_entries(entries, 3)
def test_tree_traversal_single(self):
max_count = 50
count = 0
odb = self.rorepo.odb
- for commit in self.rorepo.commit("29eb123beb1c55e5db4aa652d843adccbd09ae18").traverse():
+ for commit in self.rorepo.commit(
+ "29eb123beb1c55e5db4aa652d843adccbd09ae18"
+ ).traverse():
if count >= max_count:
break
count += 1
- entries = traverse_tree_recursive(odb, commit.tree.binsha, '')
+ entries = traverse_tree_recursive(odb, commit.tree.binsha, "")
assert entries
# END for each commit
@@ -275,12 +292,12 @@ class TestFun(TestBase):
if git.version_info[:3] < (2, 5, 1):
raise SkipTest("worktree feature unsupported")
- rw_master = self.rorepo.clone(join_path_native(rw_dir, 'master_repo'))
- branch = rw_master.create_head('aaaaaaaa')
- worktree_path = join_path_native(rw_dir, 'worktree_repo')
+ rw_master = self.rorepo.clone(join_path_native(rw_dir, "master_repo"))
+ branch = rw_master.create_head("aaaaaaaa")
+ worktree_path = join_path_native(rw_dir, "worktree_repo")
if Git.is_cygwin():
worktree_path = cygpath(worktree_path)
- rw_master.git.worktree('add', worktree_path, branch.name)
+ rw_master.git.worktree("add", worktree_path, branch.name)
dotgit = osp.join(worktree_path, ".git")
statbuf = stat(dotgit)
@@ -292,5 +309,5 @@ class TestFun(TestBase):
self.assertTrue(statbuf.st_mode & S_IFDIR)
def test_tree_entries_from_data_with_failing_name_decode_py3(self):
- r = tree_entries_from_data(b'100644 \x9f\0aaa')
- assert r == [(b'aaa', 33188, '\udc9f')], r
+ r = tree_entries_from_data(b"100644 \x9f\0aaa")
+ assert r == [(b"aaa", 33188, "\udc9f")], r