Index: test/java/javax/jdo/EnhancerTest.java =================================================================== --- test/java/javax/jdo/EnhancerTest.java (revision 818642) +++ test/java/javax/jdo/EnhancerTest.java (working copy) @@ -241,6 +241,37 @@ assertEquals("Wrong return value ", 3, result.getExitValue()); } + public void testDir() { + // invoke enhancer with directory and not recurse + InvocationResult result = invokeEnhancer("-v " + basedir + "/target/test-classes/enhancer-test-dir"); + String outputString = result.getOutputString(); + String errorString = result.getErrorString(); + assertEquals("Wrong exit code from Enhancer with stderr:\n" + errorString, 0, result.getExitValue()); + assertTrue("Expected directory enhancer-test-dir in message from out:\n" + outputString + " with err:\n" + errorString, outputString.contains("enhancer-test-dir")); + assertTrue("Expected file file1.jdo in message from out:\n" + outputString + " with err:\n" + errorString, outputString.contains("file1.jdo")); + assertTrue("Expected file file2.class in message from out:\n" + outputString + " with err:\n" + errorString, outputString.contains("file2.class")); + assertTrue("Expected file file3.jar in message from out:\n" + outputString + " with err:\n" + errorString, outputString.contains("file3.jar")); + assertFalse("Expected no directory enhancer-test-subdir in message from out:\n" + outputString + " with err:\n" + errorString, outputString.contains("enhancer-test-subdir")); + assertTrue("Expected 3 files to be enhanced in message from out:\n" + outputString + " with err:\n" + errorString, outputString.contains("3")); + } + + public void testDirRecurse() { + // invoke enhancer with directory and recurse + InvocationResult result = invokeEnhancer("-v -r " + basedir + "/target/test-classes/enhancer-test-dir"); + String outputString = result.getOutputString(); + String errorString = result.getErrorString(); + assertEquals("Wrong exit code from Enhancer with stderr:\n" + errorString, 0, result.getExitValue()); + assertTrue("Expected directory enhancer-test-dir in message from out:\n" + outputString + " with err:\n" + errorString, outputString.contains("enhancer-test-dir")); + assertTrue("Expected directory enhancer-test-subdir in message from out:\n" + outputString + " with err:\n" + errorString, outputString.contains("enhancer-test-subdir")); + assertTrue("Expected file file1.jdo in message from out:\n" + outputString + " with err:\n" + errorString, outputString.contains("file1.jdo")); + assertTrue("Expected file file2.class in message from out:\n" + outputString + " with err:\n" + errorString, outputString.contains("file2.class")); + assertTrue("Expected file file3.jar in message from out:\n" + outputString + " with err:\n" + errorString, outputString.contains("file3.jar")); + assertTrue("Expected file file4.jdo in message from out:\n" + outputString + " with err:\n" + errorString, outputString.contains("file4.jdo")); + assertTrue("Expected file file5.class in message from out:\n" + outputString + " with err:\n" + errorString, outputString.contains("file5.class")); + assertTrue("Expected file file6.jar in message from out:\n" + outputString + " with err:\n" + errorString, outputString.contains("file6.jar")); + assertTrue("Expected 6 files to be enhanced in message from out:\n" + outputString + " with err:\n" + errorString, outputString.contains("6")); + } + private InvocationResult invokeEnhancer(String string) { InvocationResult result = new InvocationResult(); try { Index: test/resources/enhancer-test-dir/file2.class =================================================================== Index: test/resources/enhancer-test-dir/enhancer-test-subdir/file6.jar =================================================================== Index: test/resources/enhancer-test-dir/enhancer-test-subdir/file5.class =================================================================== Index: test/resources/enhancer-test-dir/enhancer-test-subdir/file4.jdo =================================================================== Property changes on: test/resources/enhancer-test-dir/enhancer-test-subdir/file4.jdo ___________________________________________________________________ Name: svn:eol-style + LF Index: test/resources/enhancer-test-dir/file1.jdo =================================================================== Property changes on: test/resources/enhancer-test-dir/file1.jdo ___________________________________________________________________ Name: svn:eol-style + LF Index: test/resources/enhancer-test-dir/file3.jar =================================================================== Index: src/java/javax/jdo/Enhancer.java =================================================================== --- src/java/javax/jdo/Enhancer.java (revision 818642) +++ src/java/javax/jdo/Enhancer.java (working copy) @@ -335,12 +335,17 @@ classFileNames.add(fileName); addVerboseMessage("MSG_EnhancerClassFileName", fileName); //NOI18N } else { - // assume a directory if no suffix - File directory = new File(fileName); - if (directory.isDirectory() && search) { - String[] files = directory.list(); + // assume a directory if no recognized suffix + File directoryFile = new File(fileName); + if (directoryFile.isDirectory() && search) { + String directoryPath = directoryFile.getAbsolutePath(); + String[] files = directoryFile.list(); + String[] pathName = new String[1]; if (files != null) { - parseFiles(files, recurse, recurse); + for (String file: files) { + pathName[0] = directoryPath + '/' + file; + parseFiles(pathName, recurse, recurse); + } } } }