Skip to content

Commit 45e6c5a

Browse files
committed
unit test for token usage
1 parent 0a56c44 commit 45e6c5a

File tree

9 files changed

+63
-19
lines changed

9 files changed

+63
-19
lines changed

ForgejoRepoAPI.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,20 @@
44
import isodate
55
from pyforgejo import PyforgejoApi
66

7-
from interface_wrapper import (Branch, Comment, Commit, Contributor, Invite,
8-
IRepositoryAPI, Issue, PullRequest, Repository,
9-
User, WikiPage, logging)
7+
from interface_wrapper import (
8+
Branch,
9+
Comment,
10+
Commit,
11+
Contributor,
12+
Invite,
13+
IRepositoryAPI,
14+
Issue,
15+
PullRequest,
16+
Repository,
17+
User,
18+
WikiPage,
19+
logging,
20+
)
1021

1122

1223
class ForgejoRepoAPI(IRepositoryAPI):

GitHubRepoAPI.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,17 @@
1-
from interface_wrapper import (Branch, Comment, Commit, Contributor, Invite,
2-
IRepositoryAPI, Issue, PullRequest, Repository,
3-
User, WikiPage, logging)
1+
from interface_wrapper import (
2+
Branch,
3+
Comment,
4+
Commit,
5+
Contributor,
6+
Invite,
7+
IRepositoryAPI,
8+
Issue,
9+
PullRequest,
10+
Repository,
11+
User,
12+
WikiPage,
13+
logging,
14+
)
415

516
from github import Github, GithubException
617

contributors_parser.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
from dataclasses import asdict, dataclass
22
from time import sleep
33
from typing import Generator
4-
from datetime import datetime
54

65
from constants import EMPTY_FIELD, TIMEDELTA
76
from interface_wrapper import IRepositoryAPI, Repository

git_logger.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from constants import TIMEDELTA
44
from interface_wrapper import IRepositoryAPI, RepositoryFactory
55

6+
67
def login(source, token, base_url):
78
client = RepositoryFactory.create_api(source, token, base_url)
89
return client
@@ -21,6 +22,7 @@ def get_repos_from_file(repos_path: str) -> list[str]:
2122

2223
return list_repos
2324

25+
2426
class Clients:
2527
def __init__(self, source: str, tokens: list[str], base_url: str | None = None):
2628
# Возможно это можно переписать покрасивее

main.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
from utils import parse_time
1414

15+
1516
def parse_args():
1617
parser = argparse.ArgumentParser()
1718
parser.add_argument("--invites", help="print pending invites", action="store_true")
@@ -115,6 +116,7 @@ def parse_args():
115116
action.required = True
116117
return parser.parse_args()
117118

119+
118120
def run(args, binded_repos, repos_for_wiki=None):
119121
start = parse_time(args.start.split('-'))
120122
finish = parse_time(args.finish.split('-'))
@@ -150,6 +152,7 @@ def run(args, binded_repos, repos_for_wiki=None):
150152
args.out, args.google_token, args.table_id, args.sheet_id
151153
)
152154

155+
153156
def main():
154157
args = parse_args()
155158

@@ -171,5 +174,6 @@ def main():
171174
else:
172175
run(args, binded_repos)
173176

177+
174178
if __name__ == '__main__':
175179
main()

pull_requests_parser.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
from interface_wrapper import IRepositoryAPI, Repository
1313
from utils import logger
1414

15+
1516
@dataclass(kw_only=True, frozen=True)
1617
class PullRequestData:
1718
repository_name: str = ''

test_token_usage.py

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import git_logger
88

9+
910
def parse_args(args):
1011
parser = argparse.ArgumentParser()
1112
parser.add_argument('--tt1', type=str, required=True, help='first test token')
@@ -23,6 +24,7 @@ def parse_args(args):
2324

2425
return parser.parse_args(args)
2526

27+
2628
class TestTokenUsage(unittest.TestCase):
2729
def setUp(self):
2830
test_args = parse_args(sys.argv[1:])
@@ -53,16 +55,17 @@ def _get_rate_limit(clients: git_logger.Clients):
5355

5456
@staticmethod
5557
def _is_only_one_token_used(limit_start, limit_finish):
56-
return (bool(limit_start[0] - limit_finish[0])
57-
!= bool(limit_start[1] - limit_finish[1]))
58-
58+
return bool(limit_start[0] - limit_finish[0]) != bool(
59+
limit_start[1] - limit_finish[1]
60+
)
61+
5962
@staticmethod
6063
def _is_max_token_used(limit_start, limit_finish):
6164
if limit_start[0] - limit_finish[0]:
6265
return limit_start[0] == max(limit_start)
6366
else:
6467
return limit_start[1] == max(limit_start)
65-
68+
6669
@staticmethod
6770
def _change_tokens_order(tokens, key):
6871
key %= len(tokens)
@@ -80,7 +83,9 @@ def _get_usage(self, binded_repos, clients):
8083
def test_commits_parser(self):
8184
self.args.commits = True
8285
for i in range(2):
83-
clients = git_logger.Clients("github", self._change_tokens_order(self.tokens, i))
86+
clients = git_logger.Clients(
87+
"github", self._change_tokens_order(self.tokens, i)
88+
)
8489
binded_repos = git_logger.get_next_binded_repo(clients, [self.repo])
8590

8691
limit_start, limit_finish = self._get_usage(binded_repos, clients)
@@ -91,7 +96,9 @@ def test_commits_parser(self):
9196
def test_contributors_parser(self):
9297
self.args.contributors = True
9398
for i in range(2):
94-
clients = git_logger.Clients("github", self._change_tokens_order(self.tokens, i))
99+
clients = git_logger.Clients(
100+
"github", self._change_tokens_order(self.tokens, i)
101+
)
95102
binded_repos = git_logger.get_next_binded_repo(clients, [self.repo])
96103

97104
limit_start, limit_finish = self._get_usage(binded_repos, clients)
@@ -102,7 +109,9 @@ def test_contributors_parser(self):
102109
def test_issues_parser(self):
103110
self.args.issues = True
104111
for i in range(2):
105-
clients = git_logger.Clients("github", self._change_tokens_order(self.tokens, i))
112+
clients = git_logger.Clients(
113+
"github", self._change_tokens_order(self.tokens, i)
114+
)
106115
binded_repos = git_logger.get_next_binded_repo(clients, [self.repo])
107116

108117
limit_start, limit_finish = self._get_usage(binded_repos, clients)
@@ -113,7 +122,9 @@ def test_issues_parser(self):
113122
def test_invites_parser(self):
114123
self.args.invites = True
115124
for i in range(2):
116-
clients = git_logger.Clients("github", self._change_tokens_order(self.tokens, i))
125+
clients = git_logger.Clients(
126+
"github", self._change_tokens_order(self.tokens, i)
127+
)
117128
binded_repos = git_logger.get_next_binded_repo(clients, [self.repo])
118129

119130
limit_start, limit_finish = self._get_usage(binded_repos, clients)
@@ -124,13 +135,16 @@ def test_invites_parser(self):
124135
def test_pull_requests_parser(self):
125136
self.args.pull_requests = True
126137
for i in range(2):
127-
clients = git_logger.Clients("github", self._change_tokens_order(self.tokens, i))
138+
clients = git_logger.Clients(
139+
"github", self._change_tokens_order(self.tokens, i)
140+
)
128141
binded_repos = git_logger.get_next_binded_repo(clients, [self.repo])
129142

130143
limit_start, limit_finish = self._get_usage(binded_repos, clients)
131144

132145
self.assertTrue(self._is_only_one_token_used(limit_start, limit_finish))
133146
self.assertTrue(self._is_max_token_used(limit_start, limit_finish))
134147

148+
135149
if __name__ == '__main__':
136150
unittest.main(argv=[sys.argv[0]])

utils.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@
44

55
from constants import MIN_SIDE_PADDING, SIDE_WHITE_SPACES, TITLE_LEN, TIMEZONE
66

7+
78
class logger:
8-
#TODO: отключение вывода в stdout
9+
# TODO: отключение вывода в stdout
910
@staticmethod
1011
def log_title(title: str, title_len: int = TITLE_LEN):
1112
final_len = max(
@@ -46,6 +47,7 @@ def log_error(error: str):
4647
def log_warning(warning: str):
4748
pass
4849

50+
4951
def parse_time(datetime_str) -> datetime:
5052
start = (
5153
datetime_str[0].split('/') + datetime_str[1].split(':')

wikipars.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import csv
21
import os
32
import time
43

@@ -8,6 +7,7 @@
87

98
from utils import logger
109

10+
1111
def wikiparser(repositories: list[str], path_drepo: str, csv_name: str):
1212
logger.log_to_csv(csv_name, WIKI_FIELDNAMES)
1313

@@ -87,7 +87,7 @@ def wikiparser(repositories: list[str], path_drepo: str, csv_name: str):
8787

8888
for fieldname in data_commit:
8989
print(fieldname, data_commit[fieldname], sep=': ')
90-
90+
9191
logger.log_sep()
9292
logger.log_to_csv(csv_name, data_commit)
9393

0 commit comments

Comments
 (0)