• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 package org.chromium.testing.local;
6 
7 import java.util.HashSet;
8 import java.util.Set;
9 
10 /** Parses command line arguments for JunitTestMain. */
11 public class JunitTestArgParser {
12     final Set<String> mPackageFilters = new HashSet<>();
13     final Set<Class<?>> mRunnerFilters = new HashSet<>();
14     final Set<String> mGtestFilters = new HashSet<>();
15     boolean mListTests;
16     String mJsonConfig;
17     String mJsonOutput;
18 
parse(String[] args)19     public static JunitTestArgParser parse(String[] args) {
20         JunitTestArgParser parsed = new JunitTestArgParser();
21 
22         for (int i = 0; i < args.length; ++i) {
23             if (args[i].startsWith("--")) {
24                 String argName = args[i].substring(2);
25                 try {
26                     if ("list-tests".equals(argName)) {
27                         parsed.mListTests = true;
28                     } else if ("package-filter".equals(argName)) {
29                         parsed.mPackageFilters.add(args[++i]);
30                     } else if ("runner-filter".equals(argName)) {
31                         parsed.mRunnerFilters.add(Class.forName(args[++i]));
32                     } else if ("gtest-filter".equals(argName)) {
33                         parsed.mGtestFilters.add(args[++i]);
34                     } else if ("json-results".equals(argName)) {
35                         parsed.mJsonOutput = args[++i];
36                     } else if ("json-config".equals(argName)) {
37                         parsed.mJsonConfig = args[++i];
38                     } else {
39                         System.out.println("Ignoring flag: \"" + argName + "\"");
40                     }
41                 } catch (ArrayIndexOutOfBoundsException e) {
42                     System.err.println("No value specified for argument \"" + argName + "\"");
43                     System.exit(1);
44                 } catch (ClassNotFoundException e) {
45                     System.err.println("Class not found. (" + e + ")");
46                     System.exit(1);
47                 }
48             } else {
49                 System.out.println("Ignoring argument: \"" + args[i] + "\"");
50             }
51         }
52         if (parsed.mJsonConfig == null) {
53             System.err.println("Missing required argument --json-config.");
54             System.exit(1);
55         }
56 
57         return parsed;
58     }
59 }
60