diff options
author | Brian Carlstrom <bdc@google.com> | 2010-03-12 13:27:03 -0800 |
---|---|---|
committer | Brian Carlstrom <bdc@google.com> | 2010-03-16 16:45:00 -0700 |
commit | 5433932a79aa6e60c901312311873747ec34ca09 (patch) | |
tree | dd311320acfdfd112401e022a441cbdfc3a9b901 /tools | |
parent | f85e98f54ce3f93031ad0106413d0cfa201ae6d3 (diff) | |
download | libcore-5433932a79aa6e60c901312311873747ec34ca09.zip libcore-5433932a79aa6e60c901312311873747ec34ca09.tar.gz libcore-5433932a79aa6e60c901312311873747ec34ca09.tar.bz2 |
misc DalvikRunner changes
Summary:
- "vogar --debug-port <port>" now overrides --timeout-seconds to be zero
to prevent timeouts during interactive debugging
- "vogar --timeout-seconds 0" now disables timeout
as a side-effect of the previous change
- "vogar" no longer defaults to "javac -Xmaxerrs 1"
This is to make using vogar's output more useful when iteratively developing tests.
continuous build needs to use "vogar --javac-arg -Xmaxerrs --javac-arg 1"
- "vogar --ident ''" allows disabling of output formating
This prevents output parsing problems for Emacs *compilation* buffers
Change-Id: I599590c9c4fe3c57524af5c4d7f2be2e30ad4685
Diffstat (limited to 'tools')
-rw-r--r-- | tools/runner/java/dalvik/runner/ActivityMode.java | 7 | ||||
-rw-r--r-- | tools/runner/java/dalvik/runner/Command.java | 3 | ||||
-rw-r--r-- | tools/runner/java/dalvik/runner/DalvikRunner.java | 27 | ||||
-rw-r--r-- | tools/runner/java/dalvik/runner/DeviceDalvikVm.java | 8 | ||||
-rw-r--r-- | tools/runner/java/dalvik/runner/Driver.java | 12 | ||||
-rw-r--r-- | tools/runner/java/dalvik/runner/JavaVm.java | 8 | ||||
-rw-r--r-- | tools/runner/java/dalvik/runner/Javac.java | 7 | ||||
-rw-r--r-- | tools/runner/java/dalvik/runner/Mode.java | 6 | ||||
-rw-r--r-- | tools/runner/java/dalvik/runner/Vm.java | 4 |
9 files changed, 61 insertions, 21 deletions
diff --git a/tools/runner/java/dalvik/runner/ActivityMode.java b/tools/runner/java/dalvik/runner/ActivityMode.java index 163c72a..9adbcd1 100644 --- a/tools/runner/java/dalvik/runner/ActivityMode.java +++ b/tools/runner/java/dalvik/runner/ActivityMode.java @@ -38,11 +38,12 @@ final class ActivityMode extends Mode { private static final String TEST_ACTIVITY_CLASS = "dalvik.runner.TestActivity"; - ActivityMode(Integer debugPort, long timeoutSeconds, File sdkJar, PrintStream tee, File localTemp, - boolean cleanBefore, boolean cleanAfter, File deviceRunnerDir) { + ActivityMode(Integer debugPort, long timeoutSeconds, File sdkJar, List<String> javacArgs, + PrintStream tee, File localTemp, boolean cleanBefore, boolean cleanAfter, + File deviceRunnerDir) { super(new EnvironmentDevice(cleanBefore, cleanAfter, debugPort, localTemp, deviceRunnerDir), - timeoutSeconds, sdkJar, tee); + timeoutSeconds, sdkJar, javacArgs, tee); } private EnvironmentDevice getEnvironmentDevice() { diff --git a/tools/runner/java/dalvik/runner/Command.java b/tools/runner/java/dalvik/runner/Command.java index 88ba38e..7b9a9f4 100644 --- a/tools/runner/java/dalvik/runner/Command.java +++ b/tools/runner/java/dalvik/runner/Command.java @@ -155,6 +155,9 @@ final class Command { return gatherOutput(); } }); + if (timeoutSeconds == 0) { + return future.get(); + } return future.get(timeoutSeconds, TimeUnit.SECONDS); } catch (IOException e) { throw new RuntimeException("Failed to execute process: " + args, e); diff --git a/tools/runner/java/dalvik/runner/DalvikRunner.java b/tools/runner/java/dalvik/runner/DalvikRunner.java index c78866e..34331f2 100644 --- a/tools/runner/java/dalvik/runner/DalvikRunner.java +++ b/tools/runner/java/dalvik/runner/DalvikRunner.java @@ -73,6 +73,9 @@ public final class DalvikRunner { @Option(names = { "--xml-reports-directory" }) private File xmlReportsDirectory; + @Option(names = { "--indent" }) + private String indent = " "; + @Option(names = { "--verbose" }) private boolean verbose; @@ -92,6 +95,9 @@ public final class DalvikRunner { @Option(names = { "--java-home" }) private File javaHome; + @Option(names = { "--javac-arg" }) + private List<String> javacArgs = new ArrayList<String>(); + @Option(names = { "--sdk" }) private File sdkJar = new File("/home/dalvik-prebuild/android-sdk-linux/platforms/android-2.0/android.jar"); @@ -128,19 +134,24 @@ public final class DalvikRunner { System.out.println(" Specify '-' for stdout."); System.out.println(); System.out.println(" --timeout-seconds <seconds>: maximum execution time of each"); - System.out.println(" test before the runner aborts it."); + System.out.println(" test before the runner aborts it. Specifying zero seconds"); + System.out.println(" or using --debug-port will disable the execution timeout"); System.out.println(" Default is: " + timeoutSeconds); System.out.println(); System.out.println(" --xml-reports-directory <path>: directory to emit JUnit-style"); System.out.println(" XML test results."); System.out.println(); + System.out.println(" --ident: amount to indent test result output. Can be set to ''"); + System.out.println(" (aka empty string) to simplify output parsing."); + System.out.println(" Default is: '" + indent + "'"); + System.out.println(); System.out.println(" --verbose: turn on verbose output"); System.out.println(); System.out.println("DEVICE OPTIONS"); System.out.println(); System.out.println(" --debug <port>: enable Java debugging on the specified port."); System.out.println(" This port must be free both on the device and on the local"); - System.out.println(" system."); + System.out.println(" system. Disables the timeout specified by --timeout-seconds."); System.out.println(); System.out.println(" --device-runner-dir <directory>: use the specified directory for"); System.out.println(" on-device temporary files and code."); @@ -165,6 +176,9 @@ public final class DalvikRunner { System.out.println(" a release version like 1.5."); System.out.println(" Default is: " + sdkJar); System.out.println(); + System.out.println(" --javac-arg <argument>: include the specified argument when invoking"); + System.out.println(" javac. Examples: --javac-arg -Xmaxerrs --javac-arg 1"); + System.out.println(); } private boolean parseArgs(String[] args) { @@ -242,6 +256,11 @@ public final class DalvikRunner { // Post-processing arguments // + // disable timeout when debugging + if (debugPort != null) { + timeoutSeconds = 0; + } + for (String testFilename : testFilenames) { testFiles.add(new File(testFilename)); } @@ -293,6 +312,7 @@ public final class DalvikRunner { options.debugPort, options.timeoutSeconds, options.sdkJar, + options.javacArgs, options.tee, localTemp, options.vmArgs, @@ -304,6 +324,7 @@ public final class DalvikRunner { options.debugPort, options.timeoutSeconds, options.sdkJar, + options.javacArgs, options.tee, localTemp, options.javaHome, @@ -315,6 +336,7 @@ public final class DalvikRunner { options.debugPort, options.timeoutSeconds, options.sdkJar, + options.javacArgs, options.tee, localTemp, options.cleanBefore, @@ -335,6 +357,7 @@ public final class DalvikRunner { mode, options.expectationFiles, options.xmlReportsDirectory, + options.indent, codeFinders); try { driver.loadExpectations(); diff --git a/tools/runner/java/dalvik/runner/DeviceDalvikVm.java b/tools/runner/java/dalvik/runner/DeviceDalvikVm.java index 061e374..e2063fc 100644 --- a/tools/runner/java/dalvik/runner/DeviceDalvikVm.java +++ b/tools/runner/java/dalvik/runner/DeviceDalvikVm.java @@ -27,11 +27,11 @@ import java.util.logging.Logger; final class DeviceDalvikVm extends Vm { private static final Logger logger = Logger.getLogger(DeviceDalvikVm.class.getName()); - DeviceDalvikVm(Integer debugPort, long timeoutSeconds, File sdkJar, PrintStream tee, - File localTemp, List<String> additionalVmArgs, - boolean cleanBefore, boolean cleanAfter, File runnerDir) { + DeviceDalvikVm(Integer debugPort, long timeoutSeconds, File sdkJar, List<String> javacArgs, + PrintStream tee, File localTemp, List<String> additionalVmArgs, + boolean cleanBefore, boolean cleanAfter, File runnerDir) { super(new EnvironmentDevice(cleanBefore, cleanAfter, debugPort, localTemp, runnerDir), - timeoutSeconds, sdkJar, tee, additionalVmArgs); + timeoutSeconds, sdkJar, javacArgs, tee, additionalVmArgs); } private EnvironmentDevice getEnvironmentDevice() { diff --git a/tools/runner/java/dalvik/runner/Driver.java b/tools/runner/java/dalvik/runner/Driver.java index 574c8cb..b91f6cd 100644 --- a/tools/runner/java/dalvik/runner/Driver.java +++ b/tools/runner/java/dalvik/runner/Driver.java @@ -45,6 +45,7 @@ final class Driver { private final List<CodeFinder> codeFinders; private final Mode mode; private final File xmlReportsDirectory; + private final String indent; private final Map<String, ExpectedResult> expectedResults = new HashMap<String, ExpectedResult>(); /** @@ -54,11 +55,12 @@ final class Driver { private int unsupportedTests = 0; public Driver(File localTemp, Mode mode, Set<File> expectationFiles, - File xmlReportsDirectory, List<CodeFinder> codeFinders) { + File xmlReportsDirectory, String indent, List<CodeFinder> codeFinders) { this.localTemp = localTemp; this.expectationFiles = expectationFiles; this.mode = mode; this.xmlReportsDirectory = xmlReportsDirectory; + this.indent = indent; this.codeFinders = codeFinders; } @@ -219,16 +221,18 @@ final class Driver { if (testRun.isExpectedResult()) { logger.info("OK " + testRun.getQualifiedName() + " (" + testRun.getResult() + ")"); // In --verbose mode, show the output even on success. - logger.fine(" " + testRun.getFailureMessage().replace("\n", "\n ")); + logger.fine(indent + testRun.getFailureMessage().replace("\n", "\n" + indent)); return; } logger.info("FAIL " + testRun.getQualifiedName() + " (" + testRun.getResult() + ")"); String description = testRun.getDescription(); if (description != null) { - logger.info(" \"" + description + "\""); + logger.info(indent + "\"" + description + "\""); } - logger.info(" " + testRun.getFailureMessage().replace("\n", "\n ")); + // Don't mess with compiler error output for tools (such as + // Emacs) that are trying to parse it with regexps + logger.info(indent + testRun.getFailureMessage().replace("\n", "\n" + indent)); } } diff --git a/tools/runner/java/dalvik/runner/JavaVm.java b/tools/runner/java/dalvik/runner/JavaVm.java index 38e0386..cc4ee46 100644 --- a/tools/runner/java/dalvik/runner/JavaVm.java +++ b/tools/runner/java/dalvik/runner/JavaVm.java @@ -28,11 +28,11 @@ final class JavaVm extends Vm { private final File javaHome; - JavaVm(Integer debugPort, long timeoutSeconds, File sdkJar, PrintStream tee, - File localTemp, File javaHome, List<String> additionalVmArgs, - boolean cleanBefore, boolean cleanAfter) { + JavaVm(Integer debugPort, long timeoutSeconds, File sdkJar, List<String> javacArgs, + PrintStream tee, File localTemp, File javaHome, List<String> additionalVmArgs, + boolean cleanBefore, boolean cleanAfter) { super(new EnvironmentHost(cleanBefore, cleanAfter, debugPort, localTemp), - timeoutSeconds, sdkJar, tee, additionalVmArgs); + timeoutSeconds, sdkJar, javacArgs, tee, additionalVmArgs); this.javaHome = javaHome; } diff --git a/tools/runner/java/dalvik/runner/Javac.java b/tools/runner/java/dalvik/runner/Javac.java index 26e8bb9..82a4ea1 100644 --- a/tools/runner/java/dalvik/runner/Javac.java +++ b/tools/runner/java/dalvik/runner/Javac.java @@ -29,7 +29,7 @@ final class Javac { private final Command.Builder builder = new Command.Builder(); Javac() { - builder.args("javac", "-Xmaxerrs", "1"); + builder.args("javac"); } public Javac bootClasspath(File... path) { @@ -56,6 +56,11 @@ final class Javac { return this; } + public Javac extra(List<String> extra) { + builder.args(extra); + return this; + } + public List<String> compile(Collection<File> files) { return builder.args(Strings.objectsToStrings(files)) .execute(); diff --git a/tools/runner/java/dalvik/runner/Mode.java b/tools/runner/java/dalvik/runner/Mode.java index 3b69cb2..c0c64cc 100644 --- a/tools/runner/java/dalvik/runner/Mode.java +++ b/tools/runner/java/dalvik/runner/Mode.java @@ -45,6 +45,7 @@ abstract class Mode { protected final Environment environment; protected final long timeoutSeconds; protected final File sdkJar; + protected final List<String> javacArgs; protected final PrintStream tee; /** @@ -74,10 +75,11 @@ abstract class Mode { // TODO: jar up just the junit classes and drop the jar in our lib/ directory. new File("out/target/common/obj/JAVA_LIBRARIES/core-tests-luni_intermediates/classes.jar").getAbsoluteFile()); - Mode(Environment environment, long timeoutSeconds, File sdkJar, PrintStream tee) { + Mode(Environment environment, long timeoutSeconds, File sdkJar, List<String> javacArgs, PrintStream tee) { this.environment = environment; this.timeoutSeconds = timeoutSeconds; this.sdkJar = sdkJar; + this.javacArgs = javacArgs; this.tee = tee; } @@ -120,6 +122,7 @@ abstract class Mode { .classpath(classpath) .sourcepath(DalvikRunner.HOME_JAVA) .destination(base) + .extra(javacArgs) .compile(testRunnerJava); postCompileTestRunner(); } @@ -191,6 +194,7 @@ abstract class Mode { .classpath(classpath) .sourcepath(testRun.getTestDirectory()) .destination(testClassesDir) + .extra(javacArgs) .compile(sourceFiles); postCompileTest(testRun); return true; diff --git a/tools/runner/java/dalvik/runner/Vm.java b/tools/runner/java/dalvik/runner/Vm.java index 8ff5858..5aaafb3 100644 --- a/tools/runner/java/dalvik/runner/Vm.java +++ b/tools/runner/java/dalvik/runner/Vm.java @@ -40,9 +40,9 @@ public abstract class Vm extends Mode { protected final List<String> additionalVmArgs; - Vm(Environment environment, long timeoutSeconds, File sdkJar, + Vm(Environment environment, long timeoutSeconds, File sdkJar, List<String> javacArgs, PrintStream tee, List<String> additionalVmArgs) { - super(environment, timeoutSeconds, sdkJar, tee); + super(environment, timeoutSeconds, sdkJar, javacArgs,tee); this.additionalVmArgs = additionalVmArgs; } |