@Override public String analyze(Iterable<Mutation> mutations, HtmlReport report) { List<String> lines = new ArrayList<String>(); for (Mutation mutation : mutations) { if (mutation.isKilled()) { MutationTestResult result = mutation.getMutationResult(); Set<TestMessage> detecting = new HashSet<TestMessage>(); Collection<TestMessage> failures = result.getFailures(); detecting.addAll(failures); Collection<TestMessage> errors = result.getErrors(); detecting.addAll(errors); String tests = getIds(detecting); String line = mutation.getId() + "," + tests; lines.add(line); } } Set<Entry<String, Integer>> entrySet = testsIds.entrySet(); lines.add("Ids"); for (Entry<String, Integer> entry : entrySet) { lines.add(entry.getKey() + "," + entry.getValue()); } try { FileUtils.writeLines(new File("detectedByTest.csv"), lines); } catch (IOException e) { e.printStackTrace(); } return Joiner.on("\n").join(lines); }
/** @return The names of the classes to mutate. */ public Collection<String> getClassNames() { Set<String> classNames = new HashSet<String>(); for (Mutation m : mutations) { classNames.add(m.getClassName()); } return classNames; }
/** * Checks whether a mutation is a mutation for this run (should be applied). * * @param mutation the mutation to check * @return true, if the given mutation is a mutation for this run. */ public boolean containsMutation(Mutation mutation) { if (mutation != null) { for (Mutation m : mutations) { if (mutation.equalsWithoutIdAndResult(m)) { return true; } } } return false; }
public MutationsForRun(File idFile, boolean filter) { if (idFile == null || !idFile.exists()) { throw new RuntimeException("Given id file does not exist: " + idFile); } mutations = getMutationsForRun(idFile, filter); logger.info( "Got " + mutations.size() + " mutations from file: " + idFile); // + " Trace " + Util.getStackTraceString() List<Long> ids = new ArrayList<Long>(); for (Mutation m : mutations) { logger.debug("Mutation ID: " + m.getId()); logger.debug(m); ids.add(m.getId()); } String join = StringUtils.join(ids.toArray(), ", "); logger.debug("Mutation Ids: " + join); }
/** * Removes the mutations that have a result from the given list of mutations. * * @param mutations the list of mutations to be filtered. */ private static void filterMutationsWithResult(List<Mutation> mutations) { if (mutations != null) { // make sure that we have not got any mutations that have already an // result Session session = HibernateUtil.getSessionFactory().openSession(); Transaction tx = session.beginTransaction(); List<Mutation> toRemove = new ArrayList<Mutation>(); for (Mutation m : mutations) { session.load(m, m.getId()); if (m.getMutationResult() != null) { logger.debug("Found mutation that already has a mutation result " + m); toRemove.add(m); } } mutations.removeAll(toRemove); tx.commit(); session.close(); } }