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 TestDatasetCheckProjectVersion: def setup(self): self.uut = DatasetCheck({}, '', '') self.uut._report_missing_key = MagicMock() self.uut._check_misuse_location_exists = MagicMock() def test_missing_revision(self): meta = {"misuses": ["1"]} project = create_project("-project-", meta=EMPTY_META) version = create_version("-id-", meta=meta, project=project) self.uut.process_project_version(project, version) self.uut._report_missing_key.assert_any_call( "revision", "-project-/versions/-id-/version.yml") def test_synthetic_no_revision(self): meta = {"misuses": ["1"]} project = create_project("-project-", meta={"repository": { "type": "synthetic" }}) version = create_version("-id-", meta=meta, project=project) self.uut.process_project_version(project, version) assert call("revision", "-project-/versions/-id-/version.yml") \ not in self.uut._report_missing_key.call_args_list def test_missing_misuses(self): meta = {"revision": "1"} project = create_project("-project-", meta=EMPTY_META) version = create_version("-id-", meta=meta, project=project) self.uut.process_project_version(project, version) self.uut._report_missing_key.assert_any_call( "misuses", "-project-/versions/-id-/version.yml") def test_empty_misuses(self): meta = {"misuses": []} project = create_project("-project-", meta=EMPTY_META) version = create_version("-id-", meta=meta, project=project) self.uut.process_project_version(project, version) self.uut._report_missing_key.assert_any_call( "misuses", "-project-/versions/-id-/version.yml") def test_misuses_none(self): project = create_project("-project-", meta=EMPTY_META) version = create_version("-id-", meta={"misuses": None}, project=project) self.uut.process_project_version(project, version) self.uut._report_missing_key.assert_any_call( "misuses", "-project-/versions/-id-/version.yml") def test_missing_build(self): meta = {"misuses": ["1"]} project = create_project("-project-", meta=EMPTY_META) version = create_version("-id-", meta=meta, project=project) self.uut.process_project_version(project, version) self.uut._report_missing_key.assert_any_call( "build", "-project-/versions/-id-/version.yml") def test_missing_build_classes(self): meta = {"build": {}} project = create_project("-project-", meta=EMPTY_META) version = create_version("-id-", meta=meta, project=project) self.uut.process_project_version(project, version) self.uut._report_missing_key.assert_any_call( "build.classes", "-project-/versions/-id-/version.yml") def test_missing_build_commands(self): meta = {"build": {}} project = create_project("-project-", meta=EMPTY_META) version = create_version("-id-", meta=meta, project=project) self.uut.process_project_version(project, version) self.uut._report_missing_key.assert_any_call( "build.commands", "-project-/versions/-id-/version.yml") def test_empty_build_commands(self): meta = {"build": {"commands": []}} project = create_project("-project-", meta=EMPTY_META) version = create_version("-id-", meta=meta, project=project) self.uut.process_project_version(project, version) self.uut._report_missing_key.assert_any_call( "build.commands", "-project-/versions/-id-/version.yml") def test_missing_build_src(self): meta = {"build": {}} project = create_project("-project-", meta=EMPTY_META) version = create_version("-id-", meta=meta, project=project) self.uut.process_project_version(project, version) self.uut._report_missing_key.assert_any_call( "build.src", "-project-/versions/-id-/version.yml") def test_non_existent_misuse(self): self.uut._report_unknown_misuse = MagicMock() project = create_project("-project-", meta=EMPTY_META) version = create_version("-id-", meta={"misuses": ["-misuse-"]}, project=project) version._MISUSES = [] self.uut.process_project_version(project, version) self.uut._report_unknown_misuse.assert_any_call(version.id, "-misuse-") def test_existent_misuse(self): self.uut._report_unknown_misuse = MagicMock() project = create_project("-project-", meta=EMPTY_META) version = create_version("-id-", meta={"misuses": ["-misuse-"]}, project=project) project.path = mkdtemp(prefix="mubench_test-dataset-check_") try: misuse_yml_path = join(project.path, Project.MISUSES_DIR, "-misuse-", Misuse.MISUSE_FILE) create_file(misuse_yml_path) self.uut.process_project_version(project, version) self.uut._report_unknown_misuse.assert_not_called() finally: remove_tree(project.path)