class TestDatasetCheckDatasetLists: def setup(self): self.uut = DatasetCheck({}, '', '') self.uut._report_unknown_dataset_entry = MagicMock() self.uut._check_misuse_location_exists = MagicMock() def test_unknown_entry(self): self.uut.datasets = {"-dataset-": ["-unknown-entry-"]} self.uut.end() self.uut._report_unknown_dataset_entry.assert_any_call( "-dataset-", "-unknown-entry-") def test_no_warning_on_known_project(self): project = create_project("-project-", meta=EMPTY_META) self.uut.datasets = {"-dataset-": [project.id]} self.uut.process_project(project) self.uut.end() self.uut._report_unknown_dataset_entry.assert_not_called() def test_no_warning_on_known_version(self): project = create_project("-project-", meta=EMPTY_META) version = create_version("-version-", project=project, meta=EMPTY_META) self.uut.datasets = {"-dataset-": [version.id]} self.uut.process_project_version(project, version) self.uut.end() self.uut._report_unknown_dataset_entry.assert_not_called() def test_no_warning_on_known_misuse(self): project = create_project("-project-", meta=EMPTY_META) misuse = create_misuse("-misuse-", project=project, meta=EMPTY_META) version = create_version("-version-", project=project, misuses=[misuse], meta=EMPTY_META) self.uut.datasets = {"-dataset-": [misuse.id]} self.uut.process_project_version_misuse(project, version, misuse) self.uut.end() self.uut._report_unknown_dataset_entry.assert_not_called() def test_invalid_violation_type(self): meta = {"characteristics": ["invalid/violation_type"]} project = create_project("-project-", meta=EMPTY_META) misuse = create_misuse("-id-", project=project, meta=meta) version = create_version("-version-", meta=EMPTY_META, project=project, misuses=[misuse]) self.uut._report_invalid_violation_type = MagicMock() self.uut.process_project_version_misuse(project, version, misuse) self.uut._report_invalid_violation_type.assert_any_call( "invalid/violation_type", "-project-/misuses/-id-/misuse.yml") def test_valid_violation_type(self): meta = {"characteristics": ["missing/condition/value_or_state"]} project = create_project("-project-", meta=EMPTY_META) misuse = create_misuse("-id-", project=project, meta=meta) version = create_version("-version-", meta=EMPTY_META, project=project, misuses=[misuse]) self.uut._report_invalid_violation_type = MagicMock() self.uut.process_project_version_misuse(project, version, misuse) self.uut._report_invalid_violation_type.assert_not_called()
class TestDatasetCheckProject: def setup(self): self.uut = DatasetCheck({}, '', '') self.uut._report_missing_key = MagicMock() self.uut._check_misuse_location_exists = MagicMock() def test_missing_name(self): meta = { "repository": { "type": "git", "url": "https://github.com/stg-tud/MUBench.git" } } project = create_project("-id-", meta=meta) self.uut.process_project(project) self.uut._report_missing_key.assert_any_call("name", "-id-/project.yml") def test_missing_repository(self): meta = {"name": "-project-name-"} project = create_project("-id-", meta=meta) self.uut.process_project(project) self.uut._report_missing_key.assert_any_call("repository", "-id-/project.yml") def test_missing_repository_type(self): meta = { "name": "-project-name-", "repository": { "url": "https://github.com/stg-tud/MUBench.git" } } project = create_project("-id-", meta=meta) self.uut.process_project(project) self.uut._report_missing_key.assert_any_call("repository.type", "-id-/project.yml") def test_missing_repository_url(self): meta = {"name": "-project-name-", "repository": {"type": "git"}} project = create_project("-id-", meta=meta) self.uut.process_project(project) self.uut._report_missing_key.assert_any_call("repository.url", "-id-/project.yml") def test_version_and_misuse_with_same_name(self): self.uut._report_id_conflict = MagicMock() project = create_project("-project-", meta=EMPTY_META) misuse = create_misuse("-conflict-", project=project, meta=EMPTY_META) version = create_version("-conflict-", project=project, misuses=[misuse], meta=EMPTY_META) self.uut.process_project(project) self.uut._report_id_conflict.assert_any_call("-project-.-conflict-") def test_version_and_misuse_from_different_version_with_same_name(self): self.uut._report_id_conflict = MagicMock() project = create_project("-project-", meta=EMPTY_META) misuse_with_conflict = create_misuse("-conflict-", project=project, meta=EMPTY_META) version = create_version("-version-", project=project, misuses=[misuse_with_conflict], meta=EMPTY_META) version_with_conflict = create_version("-conflict-", project=project, misuses=[], meta=EMPTY_META) self.uut.process_project(project) self.uut._report_id_conflict.assert_any_call("-project-.-conflict-") def test_no_id_conflict_on_synthetic_repositories(self): self.uut._report_id_conflict = MagicMock() project = create_project("-project-", meta={"repository": { "type": "synthetic" }}) misuse = create_misuse("-conflict-", project=project, meta=EMPTY_META) version = create_version("-conflict-", project=project, misuses=[misuse], meta=EMPTY_META) self.uut.process_project(project) self.uut._report_id_conflict.assert_not_called() def test_synthetic_no_url(self): meta = {"name": "-project-name-", "repository": {"type": "synthetic"}} project = create_project("-id-", meta=meta) self.uut.process_project(project) self.uut._report_missing_key.assert_not_called()