Chromium Code Reviews| Index: testing/android/java/src/org/chromium/testing/local/JunitTestArgParser.java |
| diff --git a/testing/android/java/src/org/chromium/testing/local/JunitTestArgParser.java b/testing/android/java/src/org/chromium/testing/local/JunitTestArgParser.java |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..181116a9b5a8852c9de50322e6947a86d6f4f5d3 |
| --- /dev/null |
| +++ b/testing/android/java/src/org/chromium/testing/local/JunitTestArgParser.java |
| @@ -0,0 +1,90 @@ |
| +// Copyright 2014 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +package org.chromium.testing.local; |
| + |
| +import java.util.HashSet; |
| +import java.util.Set; |
| + |
| +/** |
| + * Parses command line arguments for JunitTestMain. |
| + */ |
| +public class JunitTestArgParser { |
| + |
| + private Set<String> mPackageFilters; |
|
nyquist
2014/09/19 22:21:45
All these can be final.
jbudorick
2014/09/20 00:11:29
Done.
|
| + private Set<Class<?>> mRunnerFilters; |
| + private Set<String> mGtestFilters; |
| + |
| + public static JunitTestArgParser parse(String[] args) { |
| + |
| + JunitTestArgParser parsed = new JunitTestArgParser(); |
| + |
| + for (int i = 0; i < args.length; ++i) { |
| + if (args[i].startsWith("-")) { |
| + String argName; |
| + if (args[i].startsWith("-", 1)) { |
| + argName = args[i].substring(2, args[i].length()); |
| + } else { |
| + argName = args[i].substring(1, args[i].length()); |
| + } |
| + try { |
| + if ("package-filter".equals(argName)) { |
| + // Read the command line argument after the flag. |
| + parsed.addPackageFilter(args[++i]); |
| + } else if ("runner-filter".equals(argName)) { |
| + // Read the command line argument after the flag. |
| + parsed.addRunnerFilter(Class.forName(args[++i])); |
| + } else if ("gtest-filter".equals(argName)) { |
| + // Read the command line argument after the flag. |
| + parsed.addGtestFilter(args[++i]); |
| + } else { |
| + System.out.println("Ignoring flag: \"" + argName + "\""); |
| + } |
| + } catch (ArrayIndexOutOfBoundsException e) { |
| + System.err.println("No value specified for argument \"" + argName + "\""); |
| + System.exit(1); |
| + } catch (ClassNotFoundException e) { |
| + System.err.println("Class not found. (" + e.toString() + ")"); |
| + System.exit(1); |
| + } |
| + } else { |
| + System.out.println("Ignoring argument: \"" + args[i] + "\""); |
| + } |
| + } |
| + |
| + return parsed; |
| + } |
| + |
| + public Set<String> getPackageFilters() { |
| + return mPackageFilters; |
| + } |
| + |
| + public Set<Class<?>> getRunnerFilters() { |
| + return mRunnerFilters; |
| + } |
| + |
| + public Set<String> getGtestFilters() { |
| + return mGtestFilters; |
| + } |
| + |
| + private JunitTestArgParser() { |
|
nyquist
2014/09/19 22:21:45
Could you move the constructor above the public no
jbudorick
2014/09/20 00:11:29
Done.
|
| + mPackageFilters = new HashSet<String>(); |
| + mRunnerFilters = new HashSet<Class<?>>(); |
| + mGtestFilters = new HashSet<String>(); |
| + } |
| + |
| + private void addPackageFilter(String packageFilter) { |
| + mPackageFilters.add(packageFilter); |
| + } |
| + |
| + private void addRunnerFilter(Class<?> runnerFilter) { |
| + mRunnerFilters.add(runnerFilter); |
| + } |
| + |
| + private void addGtestFilter(String gtestFilter) { |
| + mGtestFilters.add(gtestFilter); |
| + } |
| + |
| +} |
| + |