Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(169)

Side by Side Diff: base/test/android/javatests/src/org/chromium/base/test/BaseActivityInstrumentationTestCase.java

Issue 879993002: [Android] Add support for command-line flags via annotation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix gtests Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 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.
4
5 package org.chromium.base.test;
6
7 import android.app.Activity;
8 import android.test.ActivityInstrumentationTestCase2;
9
10 import org.chromium.base.BaseChromiumApplication;
11 import org.chromium.base.CommandLine;
12 import org.chromium.base.test.util.CommandLineFlags;
13
14 import java.lang.reflect.Method;
15 import java.util.Arrays;
16 import java.util.HashSet;
17 import java.util.Iterator;
18 import java.util.Set;
19
20 /**
21 * Base class for all Activity-based Instrumentation tests.
22 *
23 * @param <T> The Activity type.
24 */
25 public class BaseActivityInstrumentationTestCase<T extends Activity>
26 extends ActivityInstrumentationTestCase2<T> {
27 private static final String TAG = "BaseActivityInstrumentationTestCase";
nyquist 2015/01/28 23:10:36 Nit: I don't think this field is used.
jbudorick 2015/01/29 04:46:45 Removed.
28
29 /**
30 * Creates a instance for running tests against an Activity of the given cla ss.
31 *
32 * @param activityClass The type of activity that will be tested.
33 */
34 public BaseActivityInstrumentationTestCase(Class<T> activityClass) {
35 super(activityClass);
36 }
37
38 /**
39 * Sets up the CommandLine with the appropriate flags.
40 *
41 * This will add the difference of the sets of flags specified by @CommandLi neFlags.Add and
nyquist 2015/01/28 23:10:36 Nit: How about using {@link CommandLineFlags.Add}
jbudorick 2015/01/29 04:46:45 Done.
42 * @CommandLineFlags.Remove to the CommandLine. Note that trying to remove a flag set
Ted C 2015/01/29 00:39:51 This caveat scares me. If a test is explicitly tr
jbudorick 2015/01/29 04:46:45 Understandably so. Neither base::CommandLine nor o
jbudorick 2015/01/29 04:46:45 added {@link org.chromium.base.CommandLine} here
43 * externally, i.e. by the command-line flags file, will not work.
44 */
45 @Override
46 protected void setUp() throws Exception {
47 super.setUp();
48
49 CommandLine.reset();
50 BaseChromiumApplication.initCommandLine(getInstrumentation().getTargetCo ntext());
Ted C 2015/01/29 00:39:51 You might want to do what is in CommandLineTestUti
jbudorick 2015/01/29 04:46:45 Criteria & CriteriaHelper are in content/. I've re
51
52 Class<?> testClass = getClass();
53 Method testMethod = testClass.getMethod(getName());
54
55 Set<String> flags = getClassFlags(testClass);
56
57 if (testMethod.isAnnotationPresent(CommandLineFlags.Add.class)) {
58 flags.addAll(
59 Arrays.asList(testMethod.getAnnotation(CommandLineFlags.Add. class).value()));
60 }
61
62 if (testMethod.isAnnotationPresent(CommandLineFlags.Remove.class)) {
63 flags.removeAll(
64 Arrays.asList(testMethod.getAnnotation(CommandLineFlags.Remo ve.class).value()));
65 }
66
67 Iterator<String> flagIter = flags.iterator();
68 while (flagIter.hasNext()) {
nyquist 2015/01/28 23:10:36 Nit: I often find it easier to read: for (String f
jbudorick 2015/01/29 04:46:45 Done.
69 CommandLine.getInstance().appendSwitch(flagIter.next());
70 }
71 }
72
73 private Set<String> getClassFlags(Class<?> testClass) {
nyquist 2015/01/28 23:10:36 Nit: This method should be static to signal that i
jbudorick 2015/01/29 04:46:45 Done.
74 Class<?> superclass = testClass.getSuperclass();
75 Set<String> flags = null;
nyquist 2015/01/28 23:10:36 Nit: You are always initializing this field below,
jbudorick 2015/01/29 04:46:45 Done.
76 if (superclass != null) {
nyquist 2015/01/28 23:10:36 Optional nit: My personal preference is to not fli
jbudorick 2015/01/29 04:46:45 ternary conditional it is
77 flags = getClassFlags(superclass);
78 } else {
79 flags = new HashSet<String>();
80 }
81
82 if (testClass.isAnnotationPresent(CommandLineFlags.Add.class)) {
Ted C 2015/01/29 00:39:51 Can this and the if below be abstracted out to a h
jbudorick 2015/01/29 04:46:45 Done.
83 flags.addAll(
84 Arrays.asList(testClass.getAnnotation(CommandLineFlags.Add.c lass).value()));
85 }
86
87 if (testClass.isAnnotationPresent(CommandLineFlags.Remove.class)) {
88 flags.removeAll(
89 Arrays.asList(testClass.getAnnotation(CommandLineFlags.Remov e.class).value()));
90 }
91
92 return flags;
93 }
94 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698