/** * Tests that the UnwovenClassFiles corresponding to jars on the inpath have the correct class * name when there is no output path (ultimately tests AjBuildManager.initBcelWorld() when there * is a jar on the inpath). Only does one build. */ public void testPathResolutionWithInpathJarAndNoOutputPath() { String inpathDir = inpathTestingDir + File.separator + "inpathJar.jar"; addInpathEntry(inpathDir); build("inpathTesting"); // expect to compile the aspect in 'inpathTesting' project and weave // both the aspect and the class in the jar on the inpath. checkCompileWeaveCount("inpathTesting", 1, 2); AjState state = getState(); // tests AjState.createUnwovenClassFile(BinarySourceFile) Map binarySources = state.getAjBuildManager().getBinarySourcesForThisWeave(); assertFalse( "expected there to be binary sources from the inpath setting but didn't find any", binarySources.isEmpty()); List unwovenClassFiles = (List) binarySources.get(inpathDir); List fileNames = new ArrayList(); for (Iterator iterator = unwovenClassFiles.iterator(); iterator.hasNext(); ) { UnwovenClassFile ucf = (UnwovenClassFile) iterator.next(); if (ucf.getFilename().indexOf(expectedOutputDir) == -1) { fileNames.add(ucf.getFilename()); } } assertTrue( "expected to find UnwovenClassFile from directory\n" + expectedOutputDir + ", \n but found files " + fileNames, fileNames.isEmpty()); }
/** * Tests that the UnwovenClassFiles corresponding to classes on the inpath have the correct class * name when there is no output directory (ultimately tests * AjState.createUnwovenClassFile(BinarySourceFile) and ensures the unwovenClassFile has the * correct name. Makes a change to a class file on the inpath to ensure we enter this method * (there is a check that says are we the first build)) */ public void testPathResolutionAfterChangeInClassOnInpath() throws Exception { String inpathDir = inpathTestingDir + File.separator + "injarBin" + File.separator + "pkg"; addInpathEntry(inpathDir); build("inpathTesting"); // build again so that we enter // AjState.createUnwovenClassFile(BinarySourceFile) File from = new File( testdataSrcDir + File.separatorChar + "inpathTesting" + File.separatorChar + "newInpathClass" + File.separatorChar + "InpathClass.class"); File destination = new File(inpathDir + File.separatorChar + "InpathClass.class"); FileUtil.copyFile(from, destination); // get hold of the state for this project - expect to find one AjState state = getState(); AjBuildConfig buildConfig = state.getBuildConfig(); state.prepareForNextBuild(buildConfig); Map binarySources = state.getBinaryFilesToCompile(true); assertFalse( "expected there to be binary sources from the inpath setting but didn't find any", binarySources.isEmpty()); List unwovenClassFiles = (List) binarySources.get(inpathDir + File.separator + "InpathClass.class"); List fileNames = new ArrayList(); // the unwovenClassFiles should have filenames that point to the output dir // (which in this case is the sandbox dir) and not where they came from. for (Iterator iterator = unwovenClassFiles.iterator(); iterator.hasNext(); ) { UnwovenClassFile ucf = (UnwovenClassFile) iterator.next(); if (ucf.getFilename().indexOf(expectedOutputDir) == -1) { fileNames.add(ucf.getFilename()); } } assertTrue( "expected to find UnwovenClassFile from directory\n" + expectedOutputDir + ", \n but found files " + fileNames, fileNames.isEmpty()); }
/** * Tests that the UnwovenClassFiles corresponding to classes on the inpath have the correct class * name when there is no output directory (ultimately tests AjBuildManager.initBcelWorld() when * there is a jar on the inpath). Only does one build. */ public void testPathResolutionWithInpathDirAndNoOutputPath() { String inpathDir = inpathTestingDir + File.separator + "injarBin" + File.separator + "pkg"; addInpathEntry(inpathDir); build("inpathTesting"); // expect to compile the aspect in 'inpathTesting' project and weave // both the aspect and the class on the inpath. checkCompileWeaveCount("inpathTesting", 1, 2); // get hold of the state for this project - expect to find one AjState state = getState(); // the classes onthe inpath are recorded against the AjBuildManager // (they are deleted from the ajstate whilst cleaning up after a build) Map binarySources = state.getAjBuildManager().getBinarySourcesForThisWeave(); assertFalse( "expected there to be binary sources from the inpath setting but didn't find any", binarySources.isEmpty()); List unwovenClassFiles = (List) binarySources.get(inpathDir + File.separator + "InpathClass.class"); List fileNames = new ArrayList(); // the unwovenClassFiles should have filenames that point to the output dir // (which in this case is the sandbox dir) and not where they came from. for (Iterator iterator = unwovenClassFiles.iterator(); iterator.hasNext(); ) { UnwovenClassFile ucf = (UnwovenClassFile) iterator.next(); if (ucf.getFilename().indexOf(expectedOutputDir) == -1) { fileNames.add(ucf.getFilename()); } } assertTrue( "expected to find UnwovenClassFile from directory\n" + expectedOutputDir + ", \n but found files " + fileNames, fileNames.isEmpty()); }