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 domain import ReleaseType, Release from infrastructure import ReleaseTypeRepository, VersionRepository, ReleaseRepository from infrastructure_api import GitApi class TestGitApi(GitApi): def __init__(self, commit_string): self.commit_string = commit_string def get_latest_commit(self): return self.commit_string def test_git_repository(): # init commit_string = "Major bla" repo = GitRepository.create_from_commit_string(commit_string) release_type = repo.get_release_type_from_latest_commit() # test assert release_type == ReleaseType.MAJOR # init commit_string = "MINOR bla" repo = GitRepository.create_from_commit_string(commit_string) release_type = repo.get_release_type_from_latest_commit() # test assert release_type == ReleaseType.MINOR # init commit_string = "PATCH bla" repo = GitRepository.create_from_commit_string(commit_string) release_type = repo.get_release_type_from_latest_commit() # test assert release_type == ReleaseType.PATCH # init commit_string = "SNAPSHOT bla" repo = GitRepository.create_from_commit_string(commit_string) release_type = repo.get_release_type_from_latest_commit() # test assert release_type == ReleaseType.SNAPSHOT # init commit_string = "bla" repo = GitRepository.create_from_commit_string(commit_string) release_type = repo.get_release_type_from_latest_commit() # test assert release_type == None def test_gradle(tmp_path): # init file_name = 'config.gradle' with open(f'test/resources/{file_name}', 'r') as gradle_file: contents = gradle_file.read() f = tmp_path / file_name f.write_text(contents) # test repo = VersionRepository(f) version = repo.get_version() version = version.create_release_version(ReleaseType.SNAPSHOT) repo.write_file(version.get_version_string()) # check assert 'version = "12.4.678-SNAPSHOT"' in f.read_text() def test_json(tmp_path): # init file_name = 'config.json' with open(f'test/resources/{file_name}', 'r') as gradle_file: contents = gradle_file.read() f = tmp_path / file_name f.write_text(contents) # test repo = VersionRepository(f) version = repo.get_version() version = version.create_release_version(ReleaseType.SNAPSHOT) repo.write_file(version.get_version_string()) # check assert '"version": "123.123.456-SNAPSHOT"' in f.read_text() def test_clojure(tmp_path): # init file_name = 'config.clj' with open(f'test/resources/{file_name}', 'r') as gradle_file: contents = gradle_file.read() f = tmp_path / file_name f.write_text(contents) # test repo = VersionRepository(f) version = repo.get_version() version = version.create_release_version(ReleaseType.SNAPSHOT) repo.write_file(version.get_version_string()) # check assert '1.1.3-SNAPSHOT' in f.read_text() def test_python(tmp_path): # init file_name = 'config.py' with open(f'test/resources/{file_name}', 'r') as gradle_file: contents = gradle_file.read() f = tmp_path / file_name f.write_text(contents) # test repo = VersionRepository(f) version = repo.get_version() version = version.create_release_version(ReleaseType.SNAPSHOT) repo.write_file(version.get_version_string()) # check assert '3.1.3-SNAPSHOT' in f.read_text() def test_release_repository(tmp_path): # init file_name = 'config.json' with open(f'test/resources/{file_name}', 'r') as gradle_file: contents = gradle_file.read() f = tmp_path / file_name f.write_text(contents) # test sut = ReleaseRepository(VersionRepository(f), ReleaseTypeRepository(TestGitApi('MINOR test'))) release = sut.get_current_release() assert release.version is not None def test_release_type_repository(): sut = ReleaseTypeRepository(TestGitApi('MINOR test')) release_type = sut.get_release_type() assert release_type is ReleaseType.MINOR