private MutationStatusTestPair handleMutation( final MutationDetails mutationId, final Mutant mutatedClass, final List<TestUnit> relevantTests) { final MutationStatusTestPair mutationDetected; if ((relevantTests == null) || relevantTests.isEmpty()) { LOG.info("No test coverage for mutation " + mutationId + " in " + mutatedClass.getDetails().getMethod()); mutationDetected = MutationStatusTestPair.notAnalysed(0, DetectionStatus.RUN_ERROR); } else { mutationDetected = handleCoveredMutation(mutationId, mutatedClass, relevantTests); } return mutationDetected; }
private MutationStatusTestPair handleCoveredMutation( final MutationDetails mutationId, final Mutant mutatedClass, final List<TestUnit> relevantTests) { final MutationStatusTestPair mutationDetected; if (DEBUG) { LOG.fine("" + relevantTests.size() + " relevant test for " + mutatedClass.getDetails().getMethod()); } final Container c = createNewContainer(); final long t0 = System.currentTimeMillis(); if (this.hotswap.apply(mutationId.getClassName(), this.loader, mutatedClass.getBytes())) { if (DEBUG) { LOG.fine("replaced class with mutant in " + (System.currentTimeMillis() - t0) + " ms"); } mutationDetected = doTestsDetectMutation(c, relevantTests); } else { LOG.warning("Mutation " + mutationId + " was not viable "); mutationDetected = MutationStatusTestPair.notAnalysed(0, DetectionStatus.NON_VIABLE); } return mutationDetected; }
private void processMutation(final Reporter r, final TimeOutDecoratedTestSource testSource, final MutationDetails mutationDetails) throws IOException { final MutationIdentifier mutationId = mutationDetails.getId(); final Mutant mutatedClass = this.mutater.getMutation(mutationId); // For the benefit of mocking frameworks such as PowerMock // mess with the internals of Javassist so our mutated class // bytes are returned JavassistInterceptor.setMutant(mutatedClass); if (DEBUG) { LOG.fine("mutating method " + mutatedClass.getDetails().getMethod()); } final List<TestUnit> relevantTests = testSource .translateTests(mutationDetails.getTestsInOrder()); r.describe(mutationId); final MutationStatusTestPair mutationDetected = handleMutation( mutationDetails, mutatedClass, relevantTests); r.report(mutationId, mutationDetected); if (DEBUG) { LOG.fine("Mutation " + mutationId + " detected = " + mutationDetected); } }
@Override public void handleMutationResult(final ClassMutationResults metaData) { try { for (final MutationResult mutation : metaData.getMutations()) { this.out.write(makeCsv(mutation.getDetails().getFilename(), mutation .getDetails().getClassName().asJavaName(), mutation.getDetails() .getMutator(), mutation.getDetails().getMethod(), mutation .getDetails().getLineNumber(), mutation.getStatus(), createKillingTestDesc(mutation.getKillingTest())) + System.getProperty("line.separator")); } } catch (final IOException ex) { throw Unchecked.translateCheckedException(ex); } }
private MutationStatusTestPair handleMutation( final MutationDetails mutationId, final Mutant mutatedClass, final List<TestUnit> relevantTests) { final MutationStatusTestPair mutationDetected; if ((relevantTests == null) || relevantTests.isEmpty()) { LOG.info("No test coverage for mutation " + mutationId + " in " + mutatedClass.getDetails().getMethod()); mutationDetected = MutationStatusTestPair.notAnalysed(0, DetectionStatus.RUN_ERROR); } else { mutationDetected = handleCoveredMutation(mutationId, mutatedClass, relevantTests); } return mutationDetected; }
private String makeMutationNode(final MutationResult mutation) { final MutationDetails details = mutation.getDetails(); return makeNode(clean(details.getFilename()), sourceFile) + makeNode(clean(details.getClassName().asJavaName()), mutatedClass) + makeNode(clean(details.getMethod().name()), mutatedMethod) + makeNode(clean(details.getId().getLocation().getMethodDesc()), methodDescription) + makeNode("" + details.getLineNumber(), lineNumber) + makeNode(clean(details.getMutator()), mutator) + makeNode("" + details.getFirstIndex(), index) + makeNode("" + details.getBlock(), block) + makeNodeWhenConditionSatisfied(!fullMutationMatrix, createKillingTestDesc(mutation.getKillingTest()), killingTest) + makeNodeWhenConditionSatisfied(fullMutationMatrix, createTestDesc(mutation.getKillingTests()), killingTests) + makeNodeWhenConditionSatisfied(fullMutationMatrix, createTestDesc(mutation.getSucceedingTests()), succeedingTests) + makeNode(clean(details.getDescription()), description); }
private MutationStatusTestPair handleCoveredMutation( final MutationDetails mutationId, final Mutant mutatedClass, final List<TestUnit> relevantTests) { final MutationStatusTestPair mutationDetected; if (DEBUG) { LOG.fine("" + relevantTests.size() + " relevant test for " + mutatedClass.getDetails().getMethod()); } final Container c = createNewContainer(); final long t0 = System.currentTimeMillis(); if (this.hotswap.apply(mutationId.getClassName(), this.loader, mutatedClass.getBytes())) { if (DEBUG) { LOG.fine("replaced class with mutant in " + (System.currentTimeMillis() - t0) + " ms"); } mutationDetected = doTestsDetectMutation(c, relevantTests); } else { LOG.warning("Mutation " + mutationId + " was not viable "); mutationDetected = MutationStatusTestPair.notAnalysed(0, DetectionStatus.NON_VIABLE); } return mutationDetected; }
private void processMutation(final Reporter r, final TimeOutDecoratedTestSource testSource, final MutationDetails mutationDetails) throws IOException { final MutationIdentifier mutationId = mutationDetails.getId(); final Mutant mutatedClass = this.mutater.getMutation(mutationId); // For the benefit of mocking frameworks such as PowerMock // mess with the internals of Javassist so our mutated class // bytes are returned JavassistInterceptor.setMutant(mutatedClass); if (DEBUG) { LOG.fine("mutating method " + mutatedClass.getDetails().getMethod()); } final List<TestUnit> relevantTests = testSource .translateTests(mutationDetails.getTestsInOrder()); r.describe(mutationId); final MutationStatusTestPair mutationDetected = handleMutation( mutationDetails, mutatedClass, relevantTests); r.report(mutationId, mutationDetected); if (DEBUG) { LOG.fine("Mutation " + mutationId + " detected = " + mutationDetected); } }
public static String methodKey(MutationResult mutation) { String className = mutation.getDetails().getClassName().asJavaName(); String methodName = mutation.getDetails().getMethod().name(); String methodDescription = mutation.getDetails().getId().getLocation().getMethodDesc(); return className + "." + methodName + methodDescription; }
private String makeMutationNode(MutationResult mutation) { MutationDetails details = mutation.getDetails(); return makeNode(clean(details.getFilename()), Tag.sourceFile) + makeNode(clean(details.getClassName().asJavaName()), Tag.mutatedClass) + makeNode(clean(details.getMethod().name()), Tag.mutatedMethod) + makeNode(clean(details.getId().getLocation().getMethodDesc()), Tag.methodDescription) + makeNode("" + details.getLineNumber(), Tag.lineNumber) + makeNode(clean(details.getMutator()), Tag.mutator) + makeNode("" + details.getFirstIndex(), Tag.index) + makeNode(createKillingTestDesc(mutation.getKillingTest()), Tag.killingTest) + makeTestInfoNode(details) + makeNode(clean(details.getDescription()), Tag.description); }
String method = details.getMethod().name(); String methodDescription = details.getId().getLocation().getMethodDesc();