Compare commits

...

2 commits

Author SHA1 Message Date
bom
d5d8b8e7e1 Add test for TagAndPushReleaseService 2023-03-02 16:56:09 +01:00
bom
950d76c883 Add get_latest_tag to GitApi
also rename system_repo to system_api
2023-03-02 16:55:49 +01:00
2 changed files with 46 additions and 18 deletions

View file

@ -192,42 +192,46 @@ class SystemAPI():
class GitApi():
def __init__(self):
self.system_repository = SystemAPI()
self.system_api = SystemAPI()
def get_latest_n_commits(self, n: int):
self.system_repository.run_checked(
self.system_api.run_checked(
'git', 'log', '--oneline', '--format="%s %b"', f'-n {n}')
return self.system_repository.stdout
return self.system_api.stdout
def get_latest_commit(self):
output = self.get_latest_n_commits(1)
return " ".join(output)
def tag_annotated(self, annotation: str, message: str, count: int):
self.system_repository.run_checked(
self.system_api.run_checked(
'git', 'tag', '-a', annotation, '-m', message, f'HEAD~{count}')
return self.system_repository.stdout
return self.system_api.stdout
def get_latest_tag(self):
self.system_api.run_checked('git', 'describe', '--tags', '--abbrev=0')
return self.system_api.stdout
def get_current_branch(self):
self.system_repository.run_checked('git', 'branch', '--show-current')
return ''.join(self.system_repository.stdout).rstrip()
self.system_api.run_checked('git', 'branch', '--show-current')
return ''.join(self.system_api.stdout).rstrip()
def init(self):
self.system_repository.run_checked('git', 'init')
self.system_api.run_checked('git', 'init')
def add_file(self, file_path: Path):
self.system_repository.run_checked('git', 'add', file_path)
return self.system_repository.stdout
self.system_api.run_checked('git', 'add', file_path)
return self.system_api.stdout
def commit(self, commit_message: str):
self.system_repository.run_checked(
self.system_api.run_checked(
'git', 'commit', '-m', commit_message)
return self.system_repository.stdout
return self.system_api.stdout
def push(self):
self.system_repository.run_checked('git', 'push')
return self.system_repository.stdout
self.system_api.run_checked('git', 'push')
return self.system_api.stdout
def checkout(self, branch: str):
self.system_repository.run_checked('git', 'checkout', branch)
return self.system_repository.stdout
self.system_api.run_checked('git', 'checkout', branch)
return self.system_api.stdout

View file

@ -18,8 +18,7 @@ sys.path.append(parent)
# now we can import the module in the parent
# directory.
from services import PrepareReleaseService
from domain import ReleaseType
from services import PrepareReleaseService, TagAndPushReleaseService
from infrastructure import VersionRepository, ReleaseRepository, ReleaseTypeRepository
from infrastructure_api import GitApi
@ -53,3 +52,28 @@ def test_prepare_release_service(tmp_path: Path, monkeypatch: pt.MonkeyPatch):
latest_commit = git_api.get_latest_commit()
assert '"Version bump "\n' in latest_commit
def test_tag_and_push_release_service(tmp_path: Path, monkeypatch: pt.MonkeyPatch):
# init
file_name = 'config.json'
with open(f'test/resources/{file_name}', 'r') as json_file:
contents = json_file.read()
f = tmp_path / file_name
f.write_text(contents)
change_test_dir(tmp_path, monkeypatch) # change the context of the script execution to tmp_path
git_api = GitApi()
git_api.init()
git_api.add_file(file_name)
git_api.commit("MINOR release")
repo = ReleaseRepository(VersionRepository(f), ReleaseTypeRepository(GitApi()), 'main')
prepare_release_service = PrepareReleaseService(repo)
prepare_release_service.main_branch = "main"
prepare_release_service.write_and_commit_release()
tag_and_push_release_service = TagAndPushReleaseService(git_api)
tag_and_push_release_service.tag_release(repo.get_release())
assert 'v123.124.0\n' in git_api.get_latest_tag()