private String configureAndGetClasspath(){ String classpath = System.getProperty("java.class.path"); classpath += File.pathSeparator + executor.getProjectClassPath(); return JarPathing.createJarPathing(classpath); }
public static String expandPathingJars(String sequence) { List<String> list = new ArrayList<>(); for(String token : sequence.split(File.pathSeparator)) { if(isPathingJar(token)) { list.add(extractCPFromPathingJar(token)); } else { list.add(token); } } return String.join(File.pathSeparator, list); }
@Test public void testBase(){ String first = "target"+File.separator+"classes"; String second = "target"+File.separator+"test-classes"; String classpath = first + File.pathSeparator + second; assertFalse(JarPathing.containsAPathingJar(classpath)); String pathing = JarPathing.createJarPathing(classpath); assertTrue(JarPathing.isPathingJar(pathing)); String back = JarPathing.extractCPFromPathingJar(pathing); assertTrue(back.contains(first)); assertTrue(back.contains(second)); }
@Test public void testSpace() throws Exception{ String name = " a file with many spaces.jar"; File file = new File(name); if(! file.exists()) { assertTrue(file.createNewFile()); file.deleteOnExit(); } String pathing = JarPathing.createJarPathing(file.getAbsolutePath()); String back = JarPathing.extractCPFromPathingJar(pathing); assertTrue(back.contains(file.getName())); } }
if(JarPathing.containsAPathingJar(evosuiteCP)){ evosuiteCP = JarPathing.expandPathingJars(evosuiteCP); if(JarPathing.containsAPathingJar(targetProjectCP)){ targetProjectCP = JarPathing.expandPathingJars(targetProjectCP);
public static boolean containsAPathingJar(String sequence) { for(String token : sequence.split(File.pathSeparator)) { if(isPathingJar(token)) { return true; } } return false; }
public static String extractCPFromPathingJar(String pathingJar) throws IllegalArgumentException{ Inputs.checkNull(pathingJar); if(!isPathingJar(pathingJar)) { throw new IllegalArgumentException("Invalid pathing jar name: "+pathingJar); } File jar = new File(pathingJar); if(!jar.exists()) { throw new IllegalArgumentException("Pathing jar does not exist: "+pathingJar); } try (JarInputStream in = new JarInputStream(new FileInputStream(jar))) { Manifest m = in.getManifest(); String escapedCP = m.getMainAttributes().getValue(Attributes.Name.CLASS_PATH); List<String> list = new ArrayList<>(); for(String token : escapedCP.split(" ")) { File file = new File(token.replace("%20"," ")); if(!file.exists()) { //this should never happen, unless bug in EvoSuite throw new IllegalStateException("Pathing jar "+pathingJar+" refers to non-existing entry " + token); } if(isPathingJar(file.getAbsolutePath())) { throw new IllegalArgumentException("Pathing jar "+pathingJar+" contains the pathing jar "+file.getAbsolutePath()); } list.add(file.getAbsolutePath()); } return String.join(File.pathSeparator, list); } catch (IOException e) { logger.error(e.toString(),e); return pathingJar; } }
private static String findEvoSuiteMainJar(String path){ if(isEvoSuiteMainJar(path)){ return path; } if(JarPathing.isPathingJar(path)){ for(String subpath : JarPathing.extractCPFromPathingJar(path).split(File.pathSeparator)){ if(isEvoSuiteMainJar(subpath)){ return subpath; } } } return null; }
private static void handleClassPath(List<String> cmdLine) { String classPath = ClassPathHandler.getInstance().getEvoSuiteClassPath(); String projectCP = ClassPathHandler.getInstance().getTargetProjectClasspath(); if (! classPath.isEmpty() && ! projectCP.isEmpty()) { classPath += File.pathSeparator; } if(! projectCP.isEmpty()) { classPath += projectCP; } cmdLine.add("-cp"); //cmdLine.add(classPath); String pathingJar = JarPathing.createJarPathing(classPath); cmdLine.add(pathingJar); if (projectCP.isEmpty()) { projectCP = classPath; } String projectCPFilePath = ClassPathHandler.writeClasspathToFile(projectCP); cmdLine.add("-DCP_file_path="+projectCPFilePath); }
if(isPathingJar(element)) { elements.addAll(Arrays.asList(extractCPFromPathingJar(element).split(File.pathSeparator))); continue;