Skip to content

Commit bf4bd32

Browse files
committed
finish tests
1 parent 958b9ea commit bf4bd32

File tree

7 files changed

+130
-14
lines changed

7 files changed

+130
-14
lines changed

gitlab_submodule/gitlab_submodule.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,5 +51,5 @@ def iterate_gitlab_project_submodules(
5151
raise
5252

5353

54-
def list_gitlab_project_submodules(**kwargs) -> List[ProjectSubmodule]:
55-
return list(iterate_gitlab_project_submodules(**kwargs))
54+
def list_gitlab_project_submodules(*args, **kwargs) -> List[ProjectSubmodule]:
55+
return list(iterate_gitlab_project_submodules(*args, **kwargs))

gitlab_submodule/submodule_commit.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ def _get_submodule_commit_id(
5656
last_commit_id = submodule_dir.last_commit_id
5757
update_submodule_commit = project.commits.get(last_commit_id)
5858

59-
submodule_commit_regex = r'Submodule commit ([a-zA-Z0-9]+)\n'
59+
submodule_commit_regex = r'Subproject commit ([a-zA-Z0-9]+)\n'
6060
for diff_file in update_submodule_commit.diff():
6161
if diff_file['new_path'] == submodule_path:
6262
# either the commit id was added for the first time,

tests/test_gitlab_submodule.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import unittest
2+
3+
from gitlab import Gitlab
4+
5+
from gitlab_submodule.objects import ProjectSubmodule
6+
from gitlab_submodule.gitlab_submodule import (list_all_project_submodules,
7+
read_gitlab_submodule,
8+
list_gitlab_project_submodules)
9+
10+
11+
class TestSubmoduleCommit(unittest.TestCase):
12+
13+
def test_read_inkscape_submodule_info(self):
14+
15+
gl = Gitlab()
16+
inkscape = gl.projects.get('inkscape/inkscape')
17+
submodules = list_all_project_submodules(
18+
inkscape,
19+
ref='e371b2f826adcba316f2e64bbf2f697043373d0b')
20+
submodule = [sub for sub in submodules if
21+
sub.url == 'https://gitlab.com/inkscape/lib2geom.git'][0]
22+
submodule_info: ProjectSubmodule = read_gitlab_submodule(submodule)
23+
self.assertEqual(submodule_info.submodule, submodule)
24+
25+
submodule_project = gl.projects.get('inkscape/lib2geom')
26+
self.assertEqual(submodule_info.project, submodule_project)
27+
28+
submodule_commit = submodule_project.commits.get(
29+
'9d38946b7d7a0486a4a75669008112d306309d9e')
30+
self.assertEqual(submodule_info.commit, submodule_commit)
31+
32+
def test_list_all_inkscape_submodule_info(self):
33+
gl = Gitlab()
34+
inkscape = gl.projects.get('inkscape/inkscape')
35+
submodule_info_list = list_gitlab_project_submodules(
36+
inkscape,
37+
ref='e371b2f826adcba316f2e64bbf2f697043373d0b')
38+
for submodule_info in submodule_info_list:
39+
print('- {} -> {}'.format(
40+
submodule_info.submodule.path, submodule_info.commit.id))

tests/test_submodule_to_project.py renamed to tests/test_gitmodules_to_project.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,29 @@
11
import unittest
22

33
from gitlab import Gitlab
4+
from gitlab.v4.objects import Project
45

56
from gitlab_submodule.read_gitmodules import list_project_submodules
67
from gitlab_submodule.gitmodules_to_project import gitmodules_to_project
78

89

9-
class SubmoduleAsGitlabProject(unittest.TestCase):
10+
class TestGitmodulesToProject(unittest.TestCase):
1011

1112
def test_get_inkscape_submodules_as_projects(self):
12-
1313
gl = Gitlab()
1414
inkscape = gl.projects.get('inkscape/inkscape')
15-
submodules = list_project_submodules(inkscape)
15+
submodules = list_project_submodules(
16+
inkscape,
17+
ref='e371b2f826adcba316f2e64bbf2f697043373d0b'
18+
)
1619
submodule_projects = [
1720
gitmodules_to_project(submodule)
1821
for submodule in submodules
1922
]
23+
self.assertTrue(all(
24+
isinstance(project, Project)
25+
for project in submodule_projects
26+
))
2027
self.assertEqual(
2128
{'extensions', 'lib2geom', 'themes'},
2229
{project.name for project in submodule_projects}

tests/test_objects.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ def test_Submodule_str(self):
5656
path='include/test_submodule'
5757
)
5858
self.assertEqual(
59-
"<class 'Submodule'> => {"
59+
"<class 'GitmodulesSubmodule'> => {"
6060
"'name': 'test_submodule', "
6161
"'parent_project': <class 'DictMock'> => {'id': 123456789}, "
6262
"'parent_ref': 'main', "
@@ -76,8 +76,8 @@ def test_Submodule_repr(self):
7676
path='include/test_submodule'
7777
)
7878
self.assertEqual(
79-
"Submodule ({'id': 123456789}, 'main', 'test_submodule', "
80-
"'include/test_submodule', 'git@gitlab.com:test/submodule')",
79+
"GitmodulesSubmodule ({'id': 123456789}, 'main', 'test_submodule',"
80+
" 'include/test_submodule', 'git@gitlab.com:test/submodule')",
8181
repr(submodule)
8282
)
8383

@@ -171,14 +171,13 @@ def test_ProjectSubmodule_str(self):
171171
project_submodule = ProjectSubmodule(
172172
submodule, mock_project, mock_commit, commit_is_exact=True)
173173

174-
print( str(project_submodule))
175174
str_lines = str(project_submodule).split('\n')
176175
self.assertEqual(
177176
"<class 'ProjectSubmodule'> => {",
178177
str_lines[0]
179178
)
180179
self.assertEqual(
181-
" 'submodule': <class 'Submodule'> => {"
180+
" 'submodule': <class 'GitmodulesSubmodule'> => {"
182181
"'name': 'test_submodule', "
183182
"'parent_project': <class 'DictMock'> => {'id': '123456789'}, "
184183
"'parent_ref': 'main', "
@@ -224,8 +223,9 @@ def test_ProjectSubmodule_repr(self):
224223
str_lines[0]
225224
)
226225
self.assertEqual(
227-
" Submodule ({'id': '123456789'}, 'main', 'test_submodule', "
228-
"'include/test_submodule', 'git@gitlab.com:test/submodule'),",
226+
" GitmodulesSubmodule ({'id': '123456789'}, 'main', "
227+
"'test_submodule', 'include/test_submodule', "
228+
"'git@gitlab.com:test/submodule'),",
229229
str_lines[1]
230230
)
231231
self.assertEqual(

tests/test_read_gitmodules.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ def test_get_inkscape_submodules(self):
1111

1212
gl = Gitlab()
1313
inkscape = gl.projects.get('inkscape/inkscape')
14-
submodules = list_project_submodules(inkscape)
14+
submodules = list_project_submodules(
15+
inkscape,
16+
ref='e371b2f826adcba316f2e64bbf2f697043373d0b')
1517
self.assertEqual(
1618
{'https://gitlab.com/inkscape/extensions.git',
1719
'https://gitlab.com/inkscape/lib2geom.git',

tests/test_submodule_commit.py

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
import unittest
2+
3+
from gitlab import Gitlab
4+
from gitlab.v4.objects import ProjectCommit
5+
6+
from gitlab_submodule.read_gitmodules import list_project_submodules
7+
from gitlab_submodule.gitmodules_to_project import gitmodules_to_project
8+
from gitlab_submodule.submodule_commit import (get_submodule_commit,
9+
_get_submodule_commit_id)
10+
11+
12+
class TestSubmoduleCommit(unittest.TestCase):
13+
14+
def test_get_inkscape_submodules_commit_ids(self):
15+
gl = Gitlab()
16+
inkscape = gl.projects.get('inkscape/inkscape')
17+
submodules = list_project_submodules(
18+
inkscape,
19+
ref='e371b2f826adcba316f2e64bbf2f697043373d0b'
20+
)
21+
submodule_commit_ids = [
22+
_get_submodule_commit_id(
23+
submodule.parent_project,
24+
submodule.path,
25+
submodule.parent_ref,
26+
get_latest_commit_possible_if_not_found=False
27+
)
28+
for submodule in submodules
29+
]
30+
self.assertEqual(
31+
{'9d38946b7d7a0486a4a75669008112d306309d9e',
32+
'6c9b68507be427bffba23507bbaacf3f8a0f3752',
33+
'2fc6ece138323f905c9b475c3bcdef0d007eb233'},
34+
{commit_id for commit_id, _ in submodule_commit_ids}
35+
)
36+
self.assertTrue(all(is_exact for _, is_exact in submodule_commit_ids))
37+
38+
def test_get_inkscape_submodules_commits(self):
39+
gl = Gitlab()
40+
inkscape = gl.projects.get('inkscape/inkscape')
41+
submodules = list_project_submodules(
42+
inkscape,
43+
ref='e371b2f826adcba316f2e64bbf2f697043373d0b'
44+
)
45+
submodule_projects = [
46+
gitmodules_to_project(submodule) for submodule in submodules
47+
]
48+
submodule_commits = [
49+
get_submodule_commit(
50+
submodule,
51+
submodule_project,
52+
get_latest_commit_possible_if_not_found=False
53+
)
54+
for submodule, submodule_project
55+
in zip(submodules, submodule_projects)
56+
]
57+
self.assertTrue(all(
58+
isinstance(commit, ProjectCommit)
59+
for commit, _ in submodule_commits
60+
))
61+
self.assertEqual(
62+
{'9d38946b7d7a0486a4a75669008112d306309d9e',
63+
'6c9b68507be427bffba23507bbaacf3f8a0f3752',
64+
'2fc6ece138323f905c9b475c3bcdef0d007eb233'},
65+
{commit.id for commit, _ in submodule_commits}
66+
)
67+
self.assertTrue(all(is_exact for _, is_exact in submodule_commits))

0 commit comments

Comments
 (0)