1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 package org.chromium.testing.local;
7 import java.util.HashSet;
11 * Parses command line arguments for JunitTestMain.
13 public class JunitTestArgParser {
15 private final Set<String> mPackageFilters;
16 private final Set<Class<?>> mRunnerFilters;
17 private final Set<String> mGtestFilters;
19 public static JunitTestArgParser parse(String[] args) {
21 JunitTestArgParser parsed = new JunitTestArgParser();
23 for (int i = 0; i < args.length; ++i) {
24 if (args[i].startsWith("-")) {
26 if (args[i].startsWith("-", 1)) {
27 argName = args[i].substring(2, args[i].length());
29 argName = args[i].substring(1, args[i].length());
32 if ("package-filter".equals(argName)) {
33 // Read the command line argument after the flag.
34 parsed.addPackageFilter(args[++i]);
35 } else if ("runner-filter".equals(argName)) {
36 // Read the command line argument after the flag.
37 parsed.addRunnerFilter(Class.forName(args[++i]));
38 } else if ("gtest-filter".equals(argName)) {
39 // Read the command line argument after the flag.
40 parsed.addGtestFilter(args[++i]);
42 System.out.println("Ignoring flag: \"" + argName + "\"");
44 } catch (ArrayIndexOutOfBoundsException e) {
45 System.err.println("No value specified for argument \"" + argName + "\"");
47 } catch (ClassNotFoundException e) {
48 System.err.println("Class not found. (" + e.toString() + ")");
52 System.out.println("Ignoring argument: \"" + args[i] + "\"");
59 private JunitTestArgParser() {
60 mPackageFilters = new HashSet<String>();
61 mRunnerFilters = new HashSet<Class<?>>();
62 mGtestFilters = new HashSet<String>();
65 public Set<String> getPackageFilters() {
66 return mPackageFilters;
69 public Set<Class<?>> getRunnerFilters() {
70 return mRunnerFilters;
73 public Set<String> getGtestFilters() {
77 private void addPackageFilter(String packageFilter) {
78 mPackageFilters.add(packageFilter);
81 private void addRunnerFilter(Class<?> runnerFilter) {
82 mRunnerFilters.add(runnerFilter);
85 private void addGtestFilter(String gtestFilter) {
86 mGtestFilters.add(gtestFilter);