use of fr.inria.diversify.automaticbuilder.AutomaticBuilder in project dspot by STAMP-project.
the class PitMutantScoreSelector method selectToKeep.
@Override
public List<CtMethod<?>> selectToKeep(List<CtMethod<?>> amplifiedTestToBeKept) {
if (amplifiedTestToBeKept.isEmpty()) {
return amplifiedTestToBeKept;
}
CtType clone = this.currentClassTestToBeAmplified.clone();
clone.setParent(this.currentClassTestToBeAmplified.getParent());
this.currentClassTestToBeAmplified.getMethods().stream().filter(AmplificationChecker::isTest).forEach(clone::removeMethod);
amplifiedTestToBeKept.forEach(clone::addMethod);
DSpotUtils.printCtTypeToGivenDirectory(clone, new File(DSpotCompiler.pathToTmpTestSources));
final AutomaticBuilder automaticBuilder = AutomaticBuilderFactory.getAutomaticBuilder(this.configuration);
final String classpath = AutomaticBuilderFactory.getAutomaticBuilder(this.configuration).buildClasspath(this.program.getProgramDir()) + AmplificationHelper.PATH_SEPARATOR + this.program.getProgramDir() + "/" + this.program.getClassesDir() + AmplificationHelper.PATH_SEPARATOR + "target/dspot/dependencies/" + AmplificationHelper.PATH_SEPARATOR + this.program.getProgramDir() + "/" + this.program.getTestClassesDir();
DSpotCompiler.compile(DSpotCompiler.pathToTmpTestSources, classpath, new File(this.program.getProgramDir() + "/" + this.program.getTestClassesDir()));
AutomaticBuilderFactory.getAutomaticBuilder(this.configuration).runPit(this.program.getProgramDir(), clone);
final List<PitResult> results = PitResultParser.parseAndDelete(program.getProgramDir() + automaticBuilder.getOutputDirectoryPit());
Set<CtMethod<?>> selectedTests = new HashSet<>();
if (results != null) {
LOGGER.info("{} mutants has been generated ({})", results.size(), this.numberOfMutant);
if (results.size() != this.numberOfMutant) {
LOGGER.warn("Number of generated mutant is different than the original one.");
}
results.stream().filter(result -> result.getStateOfMutant() == PitResult.State.KILLED && !this.originalKilledMutants.contains(result) && !this.mutantNotTestedByOriginal.contains(result)).forEach(result -> {
CtMethod method = result.getMethod(clone);
if (killsMoreMutantThanParents(method, result)) {
if (!testThatKilledMutants.containsKey(method)) {
testThatKilledMutants.put(method, new HashSet<>());
}
testThatKilledMutants.get(method).add(result);
if (method == null) {
// output of pit test does not allow us to know which test case kill new mutants... we keep them all...
selectedTests.addAll(amplifiedTestToBeKept);
} else {
selectedTests.add(method);
}
}
});
}
this.selectedAmplifiedTest.addAll(selectedTests);
selectedTests.forEach(selectedTest -> LOGGER.info("{} kills {} more mutants", selectedTest == null ? this.currentClassTestToBeAmplified.getSimpleName() : selectedTest.getSimpleName(), this.testThatKilledMutants.containsKey(selectedTest) ? this.testThatKilledMutants.get(selectedTest).size() : this.testThatKilledMutants.get(null)));
return new ArrayList<>(selectedTests);
}
use of fr.inria.diversify.automaticbuilder.AutomaticBuilder in project dspot by STAMP-project.
the class PitMutantScoreSelector method init.
@Override
public void init(InputConfiguration configuration) {
super.init(configuration);
if (configuration.getProperties().get("pitVersion") != null) {
pitVersion = (String) configuration.getProperties().get("pitVersion");
} else if (descartesMode) {
pitVersion = "1.2.0";
}
if (this.originalKilledMutants == null) {
final AutomaticBuilder automaticBuilder = AutomaticBuilderFactory.getAutomaticBuilder(this.configuration);
automaticBuilder.runPit(this.program.getProgramDir());
initOriginalPitResult(PitResultParser.parseAndDelete(this.program.getProgramDir() + automaticBuilder.getOutputDirectoryPit()));
}
}
use of fr.inria.diversify.automaticbuilder.AutomaticBuilder in project dspot by STAMP-project.
the class Initializer method initialize.
public static void initialize(InputConfiguration configuration, InputProgram program) {
AutomaticBuilderFactory.reset();
AutomaticBuilder builder = AutomaticBuilderFactory.getAutomaticBuilder(configuration);
builder.compile(program.getProgramDir());
if (!new File("target/dspot/dependencies/compare").exists()) {
DSpotUtils.copyPackageFromResources("fr/inria/diversify/compare/", "MethodsHandler", "ObjectLog", "Observation", "Utils");
}
}
use of fr.inria.diversify.automaticbuilder.AutomaticBuilder in project dspot by STAMP-project.
the class ExecutedMutantSelector method init.
@Override
public void init(InputConfiguration configuration) {
super.init(configuration);
if (this.originalMutantExecuted == null) {
LOGGER.info("Computing executed mutants by the original test suite...");
final AutomaticBuilder automaticBuilder = AutomaticBuilderFactory.getAutomaticBuilder(this.configuration);
automaticBuilder.runPit(this.program.getProgramDir());
this.originalMutantExecuted = PitResultParser.parseAndDelete(this.program.getProgramDir() + automaticBuilder.getOutputDirectoryPit()).stream().filter(pitResult -> pitResult.getStateOfMutant() == PitResult.State.KILLED || pitResult.getStateOfMutant() == PitResult.State.SURVIVED).collect(Collectors.toList());
}
}
use of fr.inria.diversify.automaticbuilder.AutomaticBuilder in project Ex2Amplifier by STAMP-project.
the class AbstractTest method initSpoonModel.
private Launcher initSpoonModel(String pathToConfigurationFile) {
try {
this.configuration = new InputConfiguration(pathToConfigurationFile);
final InputProgram program = InputConfiguration.initInputProgram(this.configuration);
this.configuration.setInputProgram(program);
AutomaticBuilder builder = AutomaticBuilderFactory.getAutomaticBuilder(this.configuration);
String dependencies = builder.buildClasspath(program.getProgramDir());
return initLauncher(program.getAbsoluteSourceCodeDir(), program.getAbsoluteTestSourceCodeDir(), dependencies + AmplificationHelper.PATH_SEPARATOR + "lib/catg-dev.jar");
} catch (IOException ignored) {
// should not happen
fail();
}
// make javac happy
return null;
}
Aggregations