public String getPackageName() { final ClassName name = getMutatedClass(); final int lastDot = name.asJavaName().lastIndexOf('.'); return lastDot > 0 ? name.asJavaName().substring(0, lastDot) : "default"; }
public Optional<byte[]> querySource(final ClassName name) { if (this.unknownClasses.contains(name)) { return Optional.empty(); } final Optional<byte[]> option = this.source.getBytes(name.asJavaName()); if (option.isPresent()) { return option; } this.unknownClasses.add(name); return option; }
public Optional<byte[]> querySource(final ClassName name) { if (this.unknownClasses.contains(name)) { return Optional.empty(); } final Optional<byte[]> option = this.source.getBytes(name.asJavaName()); if (option.isPresent()) { return option; } this.unknownClasses.add(name); return option; }
private void restoreForLoader(ClassLoader loader) throws ClassNotFoundException { final Class<?> clazz = Class.forName(this.lastMutatedClass.asJavaName(), false, loader); HotSwapAgent.hotSwap(clazz, this.lastClassPreMutation); }
public String getPackageName() { final String packageName = getMutatedClasses().iterator().next().getName() .asJavaName(); final int lastDot = packageName.lastIndexOf('.'); return lastDot > 0 ? packageName.substring(0, lastDot) : "default"; }
public ClassName withoutPrefixChars(final int prefixLength) { final String nameWithoutPackage = this.getNameWithoutPackage().asJavaName(); return ClassName.fromString(this.getPackage().asJavaName() + "/" + nameWithoutPackage.substring(prefixLength, nameWithoutPackage.length())); }
public ClassName withoutSuffixChars(final int suffixLength) { final String nameWithoutPacakge = this.getNameWithoutPackage().asJavaName(); return ClassName.fromString(this.getPackage().asJavaName() + "/" + nameWithoutPacakge.substring(0, nameWithoutPacakge.length() - suffixLength)); }
private void writeBytecodeToDisk(final byte[] clazz, Path folder) throws IOException { final ClassReader reader = new ClassReader(clazz); final CharArrayWriter buffer = new CharArrayWriter(); reader.accept(new TraceClassVisitor(null, new Textifier(), new PrintWriter( buffer)), ClassReader.EXPAND_FRAMES); final Path outFile = folder.resolve(this.currentClass.asJavaName() + ".txt"); Files.write(outFile, Collections.singleton(buffer.toString()), StandardCharsets.UTF_8, StandardOpenOption.CREATE); }
public Optional<ClassName> findTestee(final String className) { final ClassName name = ClassName.fromString(className); if (name.asJavaName().endsWith("Test") && tryName(name.withoutSuffixChars(TEST_LENGTH))) { return Optional.ofNullable(name.withoutSuffixChars(TEST_LENGTH)); } if (name.getNameWithoutPackage().asJavaName().startsWith("Test") && tryName(name.withoutPrefixChars(TEST_LENGTH))) { return Optional.ofNullable(name.withoutPrefixChars(TEST_LENGTH)); } return Optional.empty(); }
@Override public InputStream getData(String name) throws IOException { final Collection<String> names = classNames(); if (!names.contains(ClassName.fromString(name).asJavaName())) { return null; } return this.child.getData(name); }
public Optional<ClassName> findTestee(final String className) { final ClassName name = ClassName.fromString(className); if (name.asJavaName().endsWith("Test") && tryName(name.withoutSuffixChars(TEST_LENGTH))) { return Optional.ofNullable(name.withoutSuffixChars(TEST_LENGTH)); } if (name.getNameWithoutPackage().asJavaName().startsWith("Test") && tryName(name.withoutPrefixChars(TEST_LENGTH))) { return Optional.ofNullable(name.withoutPrefixChars(TEST_LENGTH)); } return Optional.empty(); }
private SideEffect1<ClassInfo> throwErrorIfHasNoSourceFile() { return a -> { if (a.getSourceFileName() == null) { throw new PitHelpError(Help.NO_SOURCE_FILE, a.getName().asJavaName()); } }; }
private MethodNode makeTree(final Class<?> clazz, final String name) { final ClassReader reader = new ClassReader(this.byteSource.getBytes( ClassName.fromClass(clazz).asJavaName()).get()); final ClassNode tree = new ClassNode(); reader.accept(tree, 0); for (final Object m : tree.methods) { final MethodNode mn = (MethodNode) m; if (mn.name.equals(name)) { return mn; } } throw new RuntimeException("Method " + name + " not found in " + clazz); }
private Optional<MethodTree> parseMethodFromCompiledResource(ClassName clazz, Compiler compiler, Predicate<MethodTree> method) { final ResourceFolderByteArraySource source = new ResourceFolderByteArraySource(); final Optional<byte[]> bs = source.getBytes("loops/" + compiler.name() + "/" + clazz.getNameWithoutPackage().asJavaName()); if (bs.isPresent()) { final ClassTree tree = ClassTree.fromBytes(bs.get()); return tree.methods().stream().filter(method).findFirst(); } return Optional.empty(); }
private Transformation createTransformation(final Mutant mutant) { return (name, bytes) -> { if (name.equals(mutant.getDetails().getClassName().asJavaName())) { return mutant.getBytes(); } else { return bytes; } }; }
@Test public void shouldWriteDisassembledOriginalBytecodeToDisk() { executeFor(VeryMutable.class); final Path shouldBeCreated = classBasePath(VeryMutable.class).resolve(ClassName.fromClass(VeryMutable.class).asJavaName() + ".txt"); assertThat(shouldBeCreated).exists(); }
@Test public void shouldConvertInternalNamesToJavaNames() { final ClassName testee = ClassName.fromString("com/foo/bar"); assertEquals("com.foo.bar", testee.asJavaName()); }
@Test public void shouldWriteDissasembledMutantBytecodeToDisk() { executeFor(VeryMutable.class); final Path shouldBeCreated = mutantBasePath(VeryMutable.class,0).resolve(ClassName.fromClass(VeryMutable.class).asJavaName() + ".txt"); assertThat(shouldBeCreated).exists(); }
@Test public void shouldWriteMutantBytesToDisk() { final Collection<MutationDetails> mutations = executeFor(VeryMutable.class); final Mutant firstMutant = this.mutator.getMutation(mutations.iterator().next().getId()); final Path shouldBeCreated = mutantBasePath(VeryMutable.class,0).resolve(ClassName.fromClass(VeryMutable.class).asJavaName() + ".class"); assertThat(shouldBeCreated).hasBinaryContent(firstMutant.getBytes()); }
public static CoverageResultBuilder aCoverageResult() { final ClassName fooTest = ClassName.fromString("FooTest"); return QB .builder(CoverageResultBuilder.class, CoverageResultSeed()) .withTestUnitDescription( new Description("fooTest", fooTest.asJavaName())) .withExecutionTime(1).withGreenSuite(true) .withVisitedBlocks(Collections.<BlockLocation> emptyList()); }