Skip to content

Commit f37d08e

Browse files
authored
Merge pull request #4 from SAnCherepan/develop
Added tests
2 parents c276be7 + 305fc8c commit f37d08e

11 files changed

Lines changed: 335 additions & 20 deletions

File tree

.github/workflows/release.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,11 @@ jobs:
2626
python -m pip install --upgrade pip
2727
pip install build
2828
pip install -r requirements.txt
29-
29+
30+
- name: Run tests
31+
run: |
32+
python -m pytest -s --color=yes -v tests
33+
3034
- name: Build package
3135
run: python -m build
3236

pyproject.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@ classifiers = [
1818
"License :: OSI Approved :: MIT License"
1919
]
2020
dependencies = [
21-
"requests"
21+
"requests~=2.28",
22+
"pytest~=7.0",
23+
"requests-mock~=1.9",
2224
]
2325

2426
[project.urls]

requirements.txt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,4 @@
1-
requests
1+
requests~=2.28
2+
3+
pytest~=7.0
4+
requests-mock~=1.9

src/repo_reader_sancherepan/branch.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ def __init__(self, data):
33
if "name" in data:
44
self.name = data["name"]
55
else:
6-
raise ValueError("bad repository data: expected name")
6+
raise ValueError('bad repository branch data: expected attribute "name"')
77

88
if "protected" in data:
99
self.protected = data["protected"]
1010
else:
11-
raise ValueError("bad repository data: expected protected")
11+
raise ValueError('bad repository branch data: expected attribute "protected"')

src/repo_reader_sancherepan/repository.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,20 @@ def __init__(self, session, data: dict):
1414
if "name" in data:
1515
self.name = data["name"]
1616
else:
17-
raise ValueError("bad repository data: expected name")
17+
raise ValueError('bad repository data: expected attribute "name"')
1818

1919
if "size" in data:
2020
self.size = data["size"]
2121
else:
22-
raise ValueError("bad repository data: expected size")
22+
raise ValueError('bad repository data: expected attribute "size"')
2323

24-
if "open_issues_count" in data:
25-
self.open_issues_count = data["open_issues_count"]
24+
if "has_issues" in data and data["has_issues"] is True:
25+
if "open_issues_count" in data:
26+
self.open_issues_count = data["open_issues_count"]
27+
else:
28+
raise ValueError('bad repository data: expected attribute "open_issues_count"')
2629
else:
27-
raise ValueError("bad repository data: expected open_issues_count")
30+
self.open_issues_count = "Issues are not enabled in this repo"
2831

2932
if "url" in data:
3033
self.count_branches(data["url"])

tests/conftest.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import pytest
2+
import json
3+
4+
github_base_url = "https://api.github.com"
5+
6+
7+
# ToDo: recursively lookup resources directory and generate mocks wherever response.json is present
8+
@pytest.fixture(autouse=True)
9+
def request_register_get_urls(requests_mock):
10+
# list of repositories
11+
with open('tests/resources/orgs/docker/repos/response.json', 'r') as fp:
12+
requests_mock.get(
13+
f'{github_base_url}/orgs/docker/repos',
14+
json=json.loads(fp.read())
15+
)
16+
17+
# branches for individual repositories
18+
repos = ['docker-py', 'compose', 'docs']
19+
for repo in repos:
20+
with open(f'tests/resources/repos/docker/{repo}/branches/response.json', 'r') as fp:
21+
requests_mock.get(
22+
f'{github_base_url}/repos/docker/{repo}/branches',
23+
json=json.loads(fp.read())
24+
)
25+
26+
return requests_mock

tests/data/repos_list.json renamed to tests/resources/orgs/docker/repos/response.json

File renamed without changes.

tests/data/compose_branches_list.json renamed to tests/resources/repos/docker/compose/branches/response.json

File renamed without changes.
Lines changed: 186 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,186 @@
1+
[
2+
{
3+
"name": "3.7.0-release",
4+
"commit": {
5+
"sha": "e6783d8cf33d0bd2654da01904b986a4af134daa",
6+
"url": "https://api.github.com/repos/docker/docker-py/commits/e6783d8cf33d0bd2654da01904b986a4af134daa"
7+
},
8+
"protected": false
9+
},
10+
{
11+
"name": "3.7.3-release",
12+
"commit": {
13+
"sha": "abc7308008e76b3c4752c774082698419b0c3244",
14+
"url": "https://api.github.com/repos/docker/docker-py/commits/abc7308008e76b3c4752c774082698419b0c3244"
15+
},
16+
"protected": false
17+
},
18+
{
19+
"name": "4.0.2-release",
20+
"commit": {
21+
"sha": "805f5f4b38cedce36b2037d66bf1a6f99982c017",
22+
"url": "https://api.github.com/repos/docker/docker-py/commits/805f5f4b38cedce36b2037d66bf1a6f99982c017"
23+
},
24+
"protected": false
25+
},
26+
{
27+
"name": "4.1.0-release",
28+
"commit": {
29+
"sha": "2bb08b3985fbde794a75fbf321872c9c4d84abf9",
30+
"url": "https://api.github.com/repos/docker/docker-py/commits/2bb08b3985fbde794a75fbf321872c9c4d84abf9"
31+
},
32+
"protected": false
33+
},
34+
{
35+
"name": "4.3.0-release",
36+
"commit": {
37+
"sha": "7db995b1ce94d8ec012793037acb789c17f95779",
38+
"url": "https://api.github.com/repos/docker/docker-py/commits/7db995b1ce94d8ec012793037acb789c17f95779"
39+
},
40+
"protected": false
41+
},
42+
{
43+
"name": "4.3.1-release",
44+
"commit": {
45+
"sha": "43e56fd3fe611e0d0d914466f61c72baacf004f0",
46+
"url": "https://api.github.com/repos/docker/docker-py/commits/43e56fd3fe611e0d0d914466f61c72baacf004f0"
47+
},
48+
"protected": false
49+
},
50+
{
51+
"name": "4.4.0-release",
52+
"commit": {
53+
"sha": "cb2aedfb1498590123c066c4130daac6a6206b9b",
54+
"url": "https://api.github.com/repos/docker/docker-py/commits/cb2aedfb1498590123c066c4130daac6a6206b9b"
55+
},
56+
"protected": false
57+
},
58+
{
59+
"name": "4.4.2-release",
60+
"commit": {
61+
"sha": "98eadb9f98ef80b4fd6d370b8252d1b5d4f41c50",
62+
"url": "https://api.github.com/repos/docker/docker-py/commits/98eadb9f98ef80b4fd6d370b8252d1b5d4f41c50"
63+
},
64+
"protected": false
65+
},
66+
{
67+
"name": "4.4.3-release",
68+
"commit": {
69+
"sha": "9acb9421ac08250175e0be5467afa46b4e6558c9",
70+
"url": "https://api.github.com/repos/docker/docker-py/commits/9acb9421ac08250175e0be5467afa46b4e6558c9"
71+
},
72+
"protected": false
73+
},
74+
{
75+
"name": "4.4.4-release",
76+
"commit": {
77+
"sha": "0265818d1087132e030fcb049925ca2fd2aab62a",
78+
"url": "https://api.github.com/repos/docker/docker-py/commits/0265818d1087132e030fcb049925ca2fd2aab62a"
79+
},
80+
"protected": false
81+
},
82+
{
83+
"name": "5.0.0-release",
84+
"commit": {
85+
"sha": "80878bc61064616a26a3c9423fab4049ad50260d",
86+
"url": "https://api.github.com/repos/docker/docker-py/commits/80878bc61064616a26a3c9423fab4049ad50260d"
87+
},
88+
"protected": false
89+
},
90+
{
91+
"name": "5.0.1-release",
92+
"commit": {
93+
"sha": "0a016ff523d4810f5d6ad25535321effb95a95e2",
94+
"url": "https://api.github.com/repos/docker/docker-py/commits/0a016ff523d4810f5d6ad25535321effb95a95e2"
95+
},
96+
"protected": false
97+
},
98+
{
99+
"name": "5.0.2-release",
100+
"commit": {
101+
"sha": "23cc7b6d8d29d97b4eaa8e9087c940fda786fd8b",
102+
"url": "https://api.github.com/repos/docker/docker-py/commits/23cc7b6d8d29d97b4eaa8e9087c940fda786fd8b"
103+
},
104+
"protected": false
105+
},
106+
{
107+
"name": "add-gha",
108+
"commit": {
109+
"sha": "d33719bfddb9c5675914ea222b1c8e4634255254",
110+
"url": "https://api.github.com/repos/docker/docker-py/commits/d33719bfddb9c5675914ea222b1c8e4634255254"
111+
},
112+
"protected": false
113+
},
114+
{
115+
"name": "buildkit",
116+
"commit": {
117+
"sha": "941b3054c3876a1f51f3b9d6f23d2dffa343a3de",
118+
"url": "https://api.github.com/repos/docker/docker-py/commits/941b3054c3876a1f51f3b9d6f23d2dffa343a3de"
119+
},
120+
"protected": false
121+
},
122+
{
123+
"name": "main",
124+
"commit": {
125+
"sha": "82cf559b5a641f53e9035b44b91f829f3b4cca80",
126+
"url": "https://api.github.com/repos/docker/docker-py/commits/82cf559b5a641f53e9035b44b91f829f3b4cca80"
127+
},
128+
"protected": true
129+
},
130+
{
131+
"name": "master",
132+
"commit": {
133+
"sha": "2494d63f36eba0e1811f05e7b2136f8b30f7cdb7",
134+
"url": "https://api.github.com/repos/docker/docker-py/commits/2494d63f36eba0e1811f05e7b2136f8b30f7cdb7"
135+
},
136+
"protected": false
137+
},
138+
{
139+
"name": "prune_build_cache",
140+
"commit": {
141+
"sha": "37e930f4d059b30261d24c5ddd315cef25e2fb87",
142+
"url": "https://api.github.com/repos/docker/docker-py/commits/37e930f4d059b30261d24c5ddd315cef25e2fb87"
143+
},
144+
"protected": false
145+
},
146+
{
147+
"name": "release",
148+
"commit": {
149+
"sha": "30089ec681d9016154c722717e974bec9116ef47",
150+
"url": "https://api.github.com/repos/docker/docker-py/commits/30089ec681d9016154c722717e974bec9116ef47"
151+
},
152+
"protected": false
153+
},
154+
{
155+
"name": "replace_paramiko",
156+
"commit": {
157+
"sha": "d96666881d2ece3be7a6ea1c638f76fee4ee1af0",
158+
"url": "https://api.github.com/repos/docker/docker-py/commits/d96666881d2ece3be7a6ea1c638f76fee4ee1af0"
159+
},
160+
"protected": false
161+
},
162+
{
163+
"name": "resync-release",
164+
"commit": {
165+
"sha": "0200e051c0f8a83dcd203d0108f67992dabedb25",
166+
"url": "https://api.github.com/repos/docker/docker-py/commits/0200e051c0f8a83dcd203d0108f67992dabedb25"
167+
},
168+
"protected": false
169+
},
170+
{
171+
"name": "set-minimal-python-to-3_6",
172+
"commit": {
173+
"sha": "c8fba210a222d4f7fde90da8f48db1e7faa637ec",
174+
"url": "https://api.github.com/repos/docker/docker-py/commits/c8fba210a222d4f7fde90da8f48db1e7faa637ec"
175+
},
176+
"protected": false
177+
},
178+
{
179+
"name": "sync-release",
180+
"commit": {
181+
"sha": "4db37a12676e106b5f2980e959c9baa623ff6231",
182+
"url": "https://api.github.com/repos/docker/docker-py/commits/4db37a12676e106b5f2980e959c9baa623ff6231"
183+
},
184+
"protected": false
185+
}
186+
]
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
[
2+
{
3+
"name": "docs-base",
4+
"commit": {
5+
"sha": "4f86db67af7d5f37812927ce0323b2454c05a050",
6+
"url": "https://api.github.com/repos/docker/docs/commits/4f86db67af7d5f37812927ce0323b2454c05a050"
7+
},
8+
"protected": false
9+
},
10+
{
11+
"name": "lab",
12+
"commit": {
13+
"sha": "79ca07f10b147029739432bb301d0ce8ceb0d1c9",
14+
"url": "https://api.github.com/repos/docker/docs/commits/79ca07f10b147029739432bb301d0ce8ceb0d1c9"
15+
},
16+
"protected": true
17+
},
18+
{
19+
"name": "main",
20+
"commit": {
21+
"sha": "72c6f3c8994ee632997773719664f33cd2e78d93",
22+
"url": "https://api.github.com/repos/docker/docs/commits/72c6f3c8994ee632997773719664f33cd2e78d93"
23+
},
24+
"protected": true
25+
},
26+
{
27+
"name": "network-proxy",
28+
"commit": {
29+
"sha": "51d428f608531f9de76cac5fc695db56579d90f6",
30+
"url": "https://api.github.com/repos/docker/docs/commits/51d428f608531f9de76cac5fc695db56579d90f6"
31+
},
32+
"protected": false
33+
},
34+
{
35+
"name": "overlay-deprecation-7439",
36+
"commit": {
37+
"sha": "111ae39bb26de9d91fbc1e5c85a7c5a4648815ae",
38+
"url": "https://api.github.com/repos/docker/docs/commits/111ae39bb26de9d91fbc1e5c85a7c5a4648815ae"
39+
},
40+
"protected": false
41+
},
42+
{
43+
"name": "publish-tools",
44+
"commit": {
45+
"sha": "67ca5f2c802472916cc1788d738a6e03450bcee3",
46+
"url": "https://api.github.com/repos/docker/docs/commits/67ca5f2c802472916cc1788d738a6e03450bcee3"
47+
},
48+
"protected": false
49+
},
50+
{
51+
"name": "published",
52+
"commit": {
53+
"sha": "4d632a904ecf20306e9a26d76573749f67fbc7e4",
54+
"url": "https://api.github.com/repos/docker/docs/commits/4d632a904ecf20306e9a26d76573749f67fbc7e4"
55+
},
56+
"protected": true
57+
},
58+
{
59+
"name": "revert-15292-ENGDOCS-883",
60+
"commit": {
61+
"sha": "79caaea773b9e6c16d9efc27265541c983528b15",
62+
"url": "https://api.github.com/repos/docker/docs/commits/79caaea773b9e6c16d9efc27265541c983528b15"
63+
},
64+
"protected": false
65+
},
66+
{
67+
"name": "static-ip-tables-rules",
68+
"commit": {
69+
"sha": "3ef6e5a9e58260e9333fa7c046cdecbc885ae9cc",
70+
"url": "https://api.github.com/repos/docker/docs/commits/3ef6e5a9e58260e9333fa7c046cdecbc885ae9cc"
71+
},
72+
"protected": false
73+
},
74+
{
75+
"name": "update-firewalld-text",
76+
"commit": {
77+
"sha": "ba7a366387106bda16c92cb1f784806aab978354",
78+
"url": "https://api.github.com/repos/docker/docs/commits/ba7a366387106bda16c92cb1f784806aab978354"
79+
},
80+
"protected": false
81+
},
82+
{
83+
"name": "vnext-engine",
84+
"commit": {
85+
"sha": "8c76a0c1a5b273d0b65ad75e0dd52ada1b80c743",
86+
"url": "https://api.github.com/repos/docker/docs/commits/8c76a0c1a5b273d0b65ad75e0dd52ada1b80c743"
87+
},
88+
"protected": false
89+
}
90+
]

0 commit comments

Comments
 (0)