Skip to content

Commit ae489f0

Browse files
committed
Fix Submodule.open() if parent repo is instance of Repository subclass
1 parent 7bed9d2 commit ae489f0

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

pygit2/repository.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1548,6 +1548,6 @@ def _from_c(cls, ptr, owned):
15481548
cptr = ffi.new('git_repository **')
15491549
cptr[0] = ptr
15501550
repo = cls.__new__(cls)
1551-
super(cls, repo)._from_c(bytes(ffi.buffer(cptr)[:]), owned)
1551+
BaseRepository._from_c(repo, bytes(ffi.buffer(cptr)[:]), owned)
15521552
repo._common_init()
15531553
return repo

test/test_submodule.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,20 @@ def test_submodule_open(repo):
9191
assert r.head.target == SUBM_HEAD_SHA
9292

9393

94+
@utils.requires_network
95+
def test_submodule_open_from_repository_subclass(repo):
96+
class CustomRepoClass(pygit2.Repository):
97+
pass
98+
99+
custom_repo = CustomRepoClass(repo.workdir)
100+
s = custom_repo.submodules[SUBM_PATH]
101+
custom_repo.submodules.init()
102+
custom_repo.submodules.update()
103+
r = s.open()
104+
assert isinstance(r, CustomRepoClass)
105+
assert r.head.target == SUBM_HEAD_SHA
106+
107+
94108
def test_name(repo):
95109
s = repo.submodules[SUBM_PATH]
96110
assert SUBM_NAME == s.name

0 commit comments

Comments
 (0)