class TestPotentialHits: # noinspection PyAttributeOutsideInit def setup(self): self.detector = StubDetector() self.misuses = [] self.uut = PotentialHits(self.misuses) def test_no_hit(self): self.misuses.append(create_misuse("-m1-")) finding = Finding({"rank": "no potential hit"}) finding.is_potential_hit = lambda misuse, y: False potential_hits = self.uut.get_potential_hits([finding]) assert_equals([], potential_hits) def test_potential_hit(self): self.misuses.append(create_misuse("-m1-")) finding = Finding({"rank": ":potential hit for m1:"}) finding.is_potential_hit = lambda misuse, y: misuse == self.misuses[0] potential_hits = self.uut.get_potential_hits([finding]) assert_equals(self.misuses[0].id, potential_hits[0]["misuse"]) def test_potential_hit_for_second_misuse(self): self.misuses.extend([create_misuse("-1st-"), create_misuse("-2nd-")]) finding = Finding({"rank": ":some potential hit for second misuse:"}) finding.is_potential_hit = lambda misuse, y: misuse == self.misuses[1] potential_hits = self.uut.get_potential_hits([finding]) assert_equals(self.misuses[1].id, potential_hits[0]["misuse"])
def get_run(self, version: ProjectVersion) -> Run: if self.id == Experiment.PROVIDED_PATTERNS: executions = [ DetectOnlyExecution(self.detector, version, misuse, self.findings_base_path, PotentialHits(self.detector, [misuse])) for misuse in version.misuses if misuse.patterns] elif self.id == Experiment.TOP_FINDINGS: executions = [ MineAndDetectExecution(self.detector, version, self.findings_base_path, AllFindings(self.detector, self.limit))] elif self.id == Experiment.BENCHMARK: executions = [MineAndDetectExecution(self.detector, version, self.findings_base_path, PotentialHits(self.detector, version.misuses))] else: executions = [] return Run(executions)
def setup(self): self.misuse = create_misuse('-misuse-', meta={"location": {"file": "a", "method": "m()"}}) self.version = create_version("-version-", misuses=[self.misuse], project=create_project("-project-")) self.detector = StubDetector() self.findings_base_path = "-findings-" self.logger = logging.getLogger("test") self.uut = DetectOnlyExecution(self.detector, self.version, self.misuse, self.findings_base_path, PotentialHits(self.misuse))
def setup(self): self.detector = StubDetector() self.misuses = [] self.uut = PotentialHits(self.misuses)
def get_run(self, version: ProjectVersion): findings_filter = PotentialHits(version.misuses) return Run([ MineAndDetectExecution(self.detector, version, self.findings_base_path, findings_filter) ])
def __create_execution(self, version, misuse): findings_filter = PotentialHits([misuse]) return DetectOnlyExecution(self.detector, version, misuse, self.findings_base_path, findings_filter)