private MutationAnalysisUnit makeUnanalysedUnit( final Collection<MutationDetails> needAnalysis) { final Set<ClassName> uniqueTestClasses = new HashSet<>(); FCollection.flatMapTo(needAnalysis, mutationDetailsToTestClass(), uniqueTestClasses); return new MutationTestUnit(needAnalysis, uniqueTestClasses, this.workerFactory); }
private void runTestInSeperateProcessForMutationRange( final MutationStatusMap mutations) throws IOException, InterruptedException { final Collection<MutationDetails> remainingMutations = mutations .getUnrunMutations(); final MutationTestProcess worker = this.workerFactory.createWorker( remainingMutations, this.testClasses); worker.start(); setFirstMutationToStatusOfStartedInCaseMinionFailsAtBoot(mutations, remainingMutations); final ExitCode exitCode = waitForMinionToDie(worker); worker.results(mutations); correctResultForProcessExitCode(mutations, exitCode); }
@Override public MutationMetaData call() throws Exception { final MutationStatusMap mutations = new MutationStatusMap(); mutations.setStatusForMutations(this.availableMutations, DetectionStatus.NOT_STARTED); mutations.markUncoveredMutations(); runTestsInSeperateProcess(mutations); return reportResults(mutations); }
@Test public void shouldReportPriorityBasedOnNumberOfMutations() { this.mutations.add(MutationDetailsMother.aMutationDetail().build()); this.testee = new MutationTestUnit(MutationDetailsMother.aMutationDetail() .build(42), this.tests, null); assertThat(this.testee.priority()).isEqualTo(42); }
private void runTestsInSeperateProcess(final MutationStatusMap mutations) throws IOException, InterruptedException { while (mutations.hasUnrunMutations()) { runTestInSeperateProcessForMutationRange(mutations); } }
@Test public void shouldReportWhenMutationsNotCoveredByAnyTest() throws Exception { addMutation(); this.tests.add(ClassName.fromString("foo")); final MutationMetaData actual = this.testee.call(); final MutationResult expected = new MutationResult(this.mutations.get(0), MutationStatusTestPair.notAnalysed(0, DetectionStatus.NO_COVERAGE)); assertThat(actual.getMutations()).contains(expected); }
@Before public void setUp() { MockitoAnnotations.initMocks(this); this.mutationConfig = new MutationConfig(this.engine, new LaunchOptions( this.javaAgent)); this.mutations = new ArrayList<>(); this.tests = new ArrayList<>(); this.testee = new MutationTestUnit(this.mutations, this.tests, new WorkerFactory(null, TestPluginArguments.defaults(), this.mutationConfig, EngineArguments.arguments(), this.timeout, false, false, null)); }