• 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.io.File;
8 import java.util.HashSet;
9 import java.util.Set;
10 import java.util.regex.Pattern;
11 
12 /**
13  *  Parses command line arguments for JunitTestMain.
14  */
15 public class JunitTestArgParser {
16 
17     private static final Pattern COLON = Pattern.compile(":");
18 
19     private final Set<String> mPackageFilters;
20     private final Set<Class<?>> mRunnerFilters;
21     private final Set<String> mGtestFilters;
22     private boolean mListTests;
23     private File mJsonOutput;
24     private String[] mTestJars;
25 
parse(String[] args)26     public static JunitTestArgParser parse(String[] args) {
27 
28         JunitTestArgParser parsed = new JunitTestArgParser();
29 
30         for (int i = 0; i < args.length; ++i) {
31             if (args[i].startsWith("-")) {
32                 String argName;
33                 if (args[i].startsWith("-", 1)) {
34                     argName = args[i].substring(2, args[i].length());
35                 } else {
36                     argName = args[i].substring(1, args[i].length());
37                 }
38                 try {
39                     if ("list-tests".equals(argName)) {
40                         // Read the command line argument after the flag.
41                         parsed.mListTests = true;
42                     } else if ("package-filter".equals(argName)) {
43                         // Read the command line argument after the flag.
44                         parsed.addPackageFilter(args[++i]);
45                     } else if ("runner-filter".equals(argName)) {
46                         // Read the command line argument after the flag.
47                         parsed.addRunnerFilter(Class.forName(args[++i]));
48                     } else if ("gtest-filter".equals(argName)) {
49                         // Read the command line argument after the flag.
50                         parsed.addGtestFilter(args[++i]);
51                     } else if ("json-results-file".equals(argName)) {
52                         // Read the command line argument after the flag.
53                         parsed.setJsonOutputFile(args[++i]);
54                     } else {
55                         System.out.println("Ignoring flag: \"" + argName + "\"");
56                     }
57                 } catch (ArrayIndexOutOfBoundsException e) {
58                     System.err.println("No value specified for argument \"" + argName + "\"");
59                     System.exit(1);
60                 } catch (ClassNotFoundException e) {
61                     System.err.println("Class not found. (" + e.toString() + ")");
62                     System.exit(1);
63                 }
64             } else {
65                 System.out.println("Ignoring argument: \"" + args[i] + "\"");
66             }
67         }
68 
69         return parsed;
70     }
71 
JunitTestArgParser()72     private JunitTestArgParser() {
73         mPackageFilters = new HashSet<String>();
74         mRunnerFilters = new HashSet<Class<?>>();
75         mGtestFilters = new HashSet<String>();
76         mJsonOutput = null;
77     }
78 
isListTests()79     public boolean isListTests() {
80         return mListTests;
81     }
82 
getPackageFilters()83     public Set<String> getPackageFilters() {
84         return mPackageFilters;
85     }
86 
getRunnerFilters()87     public Set<Class<?>> getRunnerFilters() {
88         return mRunnerFilters;
89     }
90 
getGtestFilters()91     public Set<String> getGtestFilters() {
92         return mGtestFilters;
93     }
94 
getJsonOutputFile()95     public File getJsonOutputFile() {
96         return mJsonOutput;
97     }
98 
addPackageFilter(String packageFilter)99     private void addPackageFilter(String packageFilter) {
100         mPackageFilters.add(packageFilter);
101     }
102 
addRunnerFilter(Class<?> runnerFilter)103     private void addRunnerFilter(Class<?> runnerFilter) {
104         mRunnerFilters.add(runnerFilter);
105     }
106 
addGtestFilter(String gtestFilter)107     private void addGtestFilter(String gtestFilter) {
108         mGtestFilters.add(gtestFilter);
109     }
110 
setJsonOutputFile(String path)111     private void setJsonOutputFile(String path) {
112         mJsonOutput = new File(path);
113     }
114 }