@Override public void addInputResource(String path) { File file = new File(path); if (file.isDirectory()) { addInputResource(new FileSystemFolder(file)); } else { addInputResource(new FileSystemFile(file)); } }
private static Factory createFactory(File spoonJavaSourcesDirectory) { final Launcher launcher = new Launcher(); launcher.getEnvironment().setNoClasspath(true); launcher.getEnvironment().setCommentEnabled(true); // // Spoon model interfaces Arrays.asList("spoon/reflect/code", "spoon/reflect/declaration", "spoon/reflect/reference", "spoon/support/reflect/declaration", "spoon/support/reflect/code", "spoon/support/reflect/reference").forEach(path -> launcher.addInputResource(new FileSystemFolder(new File(spoonJavaSourcesDirectory, path)))); launcher.buildModel(); return launcher.getFactory(); }
/** returns the AST of an inline class */ public static CtClass<?> parseClass(String code) { Launcher launcher = new Launcher(); launcher.addInputResource(new VirtualFile(code)); launcher.getEnvironment().setNoClasspath(true); launcher.getEnvironment().setAutoImports(true); Collection<CtType<?>> allTypes = launcher.buildModel().getAllTypes(); if (allTypes.size() != 1) { throw new SpoonException("parseClass only considers one class. Please consider using a Launcher object for more advanced usage."); } try { return (CtClass<?>) allTypes.stream().findFirst().get(); } catch (ClassCastException e) { throw new SpoonException("parseClass only considers classes (and not interfaces and enums). Please consider using a Launcher object for more advanced usage."); } } }
@Override public void addInputResource(String path) { File file = new File(path); if (file.isDirectory()) { addInputResource(new FileSystemFolder(file)); } else { addInputResource(new FileSystemFile(file)); } }
launcher.addInputResource(javaTestClass);
spoon.addInputResource(s.getAbsolutePath());
/** * this method analyze all java class in generatedTestDir and return java paths composed of packages.class * @param generatedTestFolder * @param classPath * @return List<String> list of class ({package.package.classname}) */ public static List<String> getNewTestClasses(String generatedTestFolder, String classPath){ List<String> testsClasses = new ArrayList<String>(); logger.debug("--------------------------------------------------"); logger.debug(" ##### Search tests files path ##### "); Launcher spoon = new Launcher(); spoon.getEnvironment().setAutoImports(true); spoon.addInputResource(generatedTestFolder); spoon.getEnvironment().setSourceClasspath(classPath.split(File.pathSeparator)); spoon.buildModel(); //getannotatedMethod.. could be better for(CtType<?> clazz : spoon.getFactory().Class().getAll()){ String className = clazz.getPackage().toString()+"."+clazz.getSimpleName(); logger.debug("[FOUND] "+className); testsClasses.add(className); } return testsClasses; }
spoonLauncher.addProcessor(new TestSelectionProcessor(keptMethods)); spoonLauncher.addProcessor(new RemoveEvosuiteEffectsProcessor()); spoonLauncher.addInputResource(newTestFolder); spoonLauncher.getEnvironment().setSourceClasspath(classPath.split(File.pathSeparator)); spoonLauncher.setSourceOutputDirectory(destSrcTestFolder); lastLauncher.addProcessor(new TestSelectionProcessor(keptMethods)); lastLauncher.addProcessor(new RemoveEvosuiteEffectsProcessor()); lastLauncher.addInputResource(newTestFolder); lastLauncher.getEnvironment().setSourceClasspath(classPath.split(File.pathSeparator)); lastLauncher.setSourceOutputDirectory(destSrcTestFolder);
/** * this method analyze all java class in generatedTestDir and return a list of all Junit method * @param generatedTestFolder * @param classPath * @return List<CtMethod> list of methods */ public static List<CtMethod<?>> getNewTestsMethods(String generatedTestFolder, String classPath){ List<CtMethod<?>> testsMethods = new ArrayList<CtMethod<?>>(); logger.debug("--------------------------------------------------"); logger.debug(" ##### Search tests methods ##### "); Launcher spoon = new Launcher(); spoon.getEnvironment().setAutoImports(true); spoon.addInputResource(generatedTestFolder); spoon.getEnvironment().setSourceClasspath(classPath.split(File.pathSeparator)); spoon.buildModel(); //getannotatedMethod.. could be better for(CtType<?> clazz : spoon.getFactory().Class().getAll()){ methodLoop: for(CtMethod<?> method : clazz.getAllMethods()){ for(CtAnnotation<? extends Annotation> annotation : method.getAnnotations()){ if (annotation.getType().equals(method.getFactory().Annotation().createReference(org.junit.Test.class))) { logger.debug("[FOUND] "+method.getSignature()); testsMethods.add(method); continue methodLoop; } } } } return testsMethods; }
private static CtClass<?> getExistingClass(CtType<?> type, String pathname) { Launcher launcher = new Launcher(); launcher.getEnvironment().setNoClasspath(true); launcher.addInputResource(pathname); launcher.buildModel(); return launcher.getFactory().Class().get(type.getQualifiedName()); }
private Launcher getSpoonAPIForProject() { EntryPoint.verbose = this.configuration.isVerbose(); Launcher launcher = new Launcher(); launcher.getEnvironment().setAutoImports(true); launcher.getEnvironment().setNoClasspath(true); launcher.getEnvironment().setCommentEnabled(true); launcher.getEnvironment().setSourceClasspath(this.configuration.getClasspath().split(Util.PATH_SEPARATOR)); if (this.configuration.getPathToSourceFolder() != null) { for (String path : this.configuration.getPathToSourceFolder()) { launcher.addInputResource(path); } } if (this.configuration.getPathToTestFolder() == null) { throw new RuntimeException("Test folder must be set for AssertFixer to be executed."); } for (String path : this.configuration.getPathToTestFolder()) { launcher.addInputResource(path); } launcher.getEnvironment().setShouldCompile(true); launcher.run(); return launcher; }
private static CtClass<?> getNewModelCtClass(String pathToSrcFolder, String fullQualifiedName) { Launcher launcher = new Launcher(); launcher.getEnvironment().setNoClasspath(true); launcher.getEnvironment().setCommentEnabled(true); launcher.addInputResource(pathToSrcFolder); launcher.buildModel(); return launcher.getFactory().Class().get(fullQualifiedName); }
/** * Compile the original code * * @param properties */ protected void compileProject(ProjectConfiguration properties) { final Launcher launcher = new Launcher(); for (String path_src : properties.getOriginalDirSrc()) { log.debug("Add folder to compile: " + path_src); launcher.addInputResource(path_src); } for (String path_test : properties.getTestDirSrc()) { log.debug("Add folder to compile: " + path_test); launcher.addInputResource(path_test); } String binoutput = properties.getWorkingDirForBytecode() + File.separator + (ProgramVariant.DEFAULT_ORIGINAL_VARIANT); launcher.setBinaryOutputDirectory(binoutput); log.info("Compiling original code from " + launcher.getModelBuilder().getInputSources() + "\n bytecode saved in " + launcher.getModelBuilder().getBinaryOutputDirectory()); launcher.getEnvironment() .setPreserveLineNumbers(ConfigurationProperties.getPropertyBool("preservelinenumbers")); launcher.getEnvironment().setComplianceLevel(ConfigurationProperties.getPropertyInt("javacompliancelevel")); launcher.getEnvironment().setShouldCompile(true); launcher.getEnvironment().setSourceClasspath(properties.getDependenciesString().split(File.pathSeparator)); launcher.buildModel(); launcher.getModelBuilder().generateProcessedSourceFiles(OutputType.COMPILATION_UNITS); launcher.getModelBuilder().compile(InputType.FILES); // launcher.getModelBuilder().generateProcessedSourceFiles(OutputType.CLASSES); }