import pytest as pt from pathlib import Path import sys import os # getting the name of the directory # where the this file is present. current = os.path.dirname(os.path.realpath(__file__)) # Getting the parent directory name # where the current directory is present. parent = os.path.dirname(current) # adding the parent directory to # the sys.path. sys.path.append(parent) # now we can import the module in the parent # directory. from services import PrepareReleaseService, TagAndPushReleaseService from infrastructure import VersionRepository, ReleaseRepository, ReleaseTypeRepository from infrastructure_api import GitApi def change_test_dir( tmp_path: Path, monkeypatch: pt.MonkeyPatch): monkeypatch.chdir(tmp_path) def test_prepare_release_service(tmp_path: Path, monkeypatch: pt.MonkeyPatch): # todo: maybe use mocks for service api tests # 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() latest_commit = git_api.get_latest_commit() assert '"Release v123.124.0 "\n' in latest_commit prepare_release_service.write_and_commit_bump() 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()