Refactor AbstractBlazeOptionHandlerTest into a helper class
For #11750
RELNOTES: None.
PiperOrigin-RevId: 336939219
diff --git a/src/test/java/com/google/devtools/build/lib/runtime/BlazeOptionHandlerTest.java b/src/test/java/com/google/devtools/build/lib/runtime/BlazeOptionHandlerTest.java
index 425a1ed..9c497cd 100644
--- a/src/test/java/com/google/devtools/build/lib/runtime/BlazeOptionHandlerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/runtime/BlazeOptionHandlerTest.java
@@ -21,10 +21,14 @@
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.ListMultimap;
import com.google.devtools.build.lib.events.Event;
+import com.google.devtools.build.lib.events.StoredEventHandler;
import com.google.devtools.build.lib.util.OS;
+import com.google.devtools.common.options.OptionsBase;
+import com.google.devtools.common.options.OptionsParser;
import com.google.devtools.common.options.OptionsParsingException;
import com.google.devtools.common.options.TestOptions;
import java.util.Arrays;
+import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -38,7 +42,23 @@
* messages.
*/
@RunWith(JUnit4.class)
-public class BlazeOptionHandlerTest extends AbstractBlazeOptionHandlerTest {
+public class BlazeOptionHandlerTest {
+
+ private StoredEventHandler eventHandler;
+ private OptionsParser parser;
+ private BlazeOptionHandler optionHandler;
+
+ @Before
+ public void setUp() throws Exception {
+ ImmutableList<Class<? extends OptionsBase>> optionsClasses =
+ ImmutableList.of(TestOptions.class, CommonCommandOptions.class, ClientOptions.class);
+
+ BlazeOptionHandlerTestHelper helper =
+ new BlazeOptionHandlerTestHelper(optionsClasses, /* allowResidue= */ true);
+ eventHandler = helper.getEventHandler();
+ parser = helper.getOptionsParser();
+ optionHandler = helper.getOptionHandler();
+ }
private static ListMultimap<String, RcChunkOfArgs> structuredArgsFrom2SimpleRcsWithOnlyResidue() {
ListMultimap<String, RcChunkOfArgs> structuredArgs = ArrayListMultimap.create();
diff --git a/src/test/java/com/google/devtools/build/lib/runtime/AbstractBlazeOptionHandlerTest.java b/src/test/java/com/google/devtools/build/lib/runtime/BlazeOptionHandlerTestHelper.java
similarity index 61%
rename from src/test/java/com/google/devtools/build/lib/runtime/AbstractBlazeOptionHandlerTest.java
rename to src/test/java/com/google/devtools/build/lib/runtime/BlazeOptionHandlerTestHelper.java
index aa6a831..bce349a 100644
--- a/src/test/java/com/google/devtools/build/lib/runtime/AbstractBlazeOptionHandlerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/runtime/BlazeOptionHandlerTestHelper.java
@@ -13,53 +13,43 @@
// limitations under the License.
package com.google.devtools.build.lib.runtime;
-import static com.google.devtools.common.options.Converters.BLAZE_ALIASING_FLAG;
-
import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
import com.google.devtools.build.lib.analysis.ServerDirectories;
-import com.google.devtools.build.lib.analysis.config.CoreOptions;
import com.google.devtools.build.lib.bazel.rules.BazelRulesModule;
import com.google.devtools.build.lib.events.StoredEventHandler;
import com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicy;
import com.google.devtools.build.lib.testutil.Scratch;
import com.google.devtools.build.lib.testutil.TestConstants;
+import com.google.devtools.common.options.OptionsBase;
import com.google.devtools.common.options.OptionsParser;
import com.google.devtools.common.options.OptionsParsingResult;
import com.google.devtools.common.options.TestOptions;
-import org.junit.Before;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
+import java.util.List;
+import javax.annotation.Nullable;
-// TODO(b/132346407): Consider refactoring into a helper object instead of an abstract class
-/** Abstract class for setting up tests that make use of {@link BlazeOptionHandler}. */
-@RunWith(JUnit4.class)
-public abstract class AbstractBlazeOptionHandlerTest {
+/** Helper class for setting up tests that make use of {@link BlazeOptionHandler}. */
+class BlazeOptionHandlerTestHelper {
- protected final Scratch scratch = new Scratch();
- protected final StoredEventHandler eventHandler = new StoredEventHandler();
- protected OptionsParser parser;
- protected BlazeRuntime runtime;
- protected BlazeOptionHandler optionHandler;
+ private final Scratch scratch = new Scratch();
+ private final StoredEventHandler eventHandler = new StoredEventHandler();
+ private final OptionsParser parser;
+ private final BlazeOptionHandler optionHandler;
- @Before
- public void initStuff() throws Exception {
- parser =
- OptionsParser.builder()
- .optionsClasses(
- TestOptions.class,
- CommonCommandOptions.class,
- ClientOptions.class,
- CoreOptions.class)
- .allowResidue(true)
- .skipStarlarkOptionPrefixes()
- .withAliasFlag(BLAZE_ALIASING_FLAG)
- .build();
+ public BlazeOptionHandlerTestHelper(
+ List<Class<? extends OptionsBase>> optionsClasses,
+ boolean allowResidue,
+ @Nullable String aliasFlag,
+ boolean skipStarlarkPrefixes)
+ throws Exception {
+ parser = createOptionsParser(optionsClasses, allowResidue, aliasFlag, skipStarlarkPrefixes);
+
String productName = TestConstants.PRODUCT_NAME;
ServerDirectories serverDirectories =
new ServerDirectories(
scratch.dir("install_base"), scratch.dir("output_base"), scratch.dir("user_root"));
- this.runtime =
+
+ BlazeRuntime runtime =
new BlazeRuntime.Builder()
.setFileSystem(scratch.getFileSystem())
.setServerDirectories(serverDirectories)
@@ -68,7 +58,7 @@
OptionsParser.builder().optionsClasses(BlazeServerStartupOptions.class).build())
.addBlazeModule(new BazelRulesModule())
.build();
- this.runtime.overrideCommands(ImmutableList.of(new C0Command()));
+ runtime.overrideCommands(ImmutableList.of(new C0Command()));
BlazeDirectories directories =
new BlazeDirectories(
@@ -88,6 +78,42 @@
InvocationPolicy.getDefaultInstance());
}
+ public BlazeOptionHandlerTestHelper(
+ List<Class<? extends OptionsBase>> optionsClasses, boolean allowResidue) throws Exception {
+ this(optionsClasses, allowResidue, /* aliasFlag= */ null, /* skipStarlarkPrefixes= */ false);
+ }
+
+ private static OptionsParser createOptionsParser(
+ List<Class<? extends OptionsBase>> optionsClasses,
+ boolean allowResidue,
+ @Nullable String aliasFlag,
+ boolean skipStarlarkPrefixes) {
+
+ OptionsParser.Builder optionsParserBuilder =
+ OptionsParser.builder()
+ .optionsClasses(optionsClasses)
+ .allowResidue(allowResidue)
+ .withAliasFlag(aliasFlag);
+
+ if (skipStarlarkPrefixes) {
+ optionsParserBuilder.skipStarlarkOptionPrefixes();
+ }
+
+ return optionsParserBuilder.build();
+ }
+
+ public OptionsParser getOptionsParser() {
+ return parser;
+ }
+
+ public StoredEventHandler getEventHandler() {
+ return eventHandler;
+ }
+
+ public BlazeOptionHandler getOptionHandler() {
+ return optionHandler;
+ }
+
/** Custom command for testing. */
@Command(
name = "c0",
diff --git a/src/test/java/com/google/devtools/build/lib/runtime/FlagAliasTest.java b/src/test/java/com/google/devtools/build/lib/runtime/FlagAliasTest.java
index 4906c5e..efe1103 100644
--- a/src/test/java/com/google/devtools/build/lib/runtime/FlagAliasTest.java
+++ b/src/test/java/com/google/devtools/build/lib/runtime/FlagAliasTest.java
@@ -14,16 +14,45 @@
package com.google.devtools.build.lib.runtime;
import static com.google.common.truth.Truth.assertThat;
+import static com.google.devtools.build.lib.runtime.BlazeOptionHandler.BAD_OPTION_TAG;
+import static com.google.devtools.common.options.Converters.BLAZE_ALIASING_FLAG;
import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.lib.analysis.config.CoreOptions;
import com.google.devtools.build.lib.events.Event;
+import com.google.devtools.build.lib.events.StoredEventHandler;
+import com.google.devtools.common.options.OptionsBase;
+import com.google.devtools.common.options.OptionsParser;
+import com.google.devtools.common.options.TestOptions;
+import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
/** Tests --flag_alias functionality in {@link BlazeOptionHandler}. */
@RunWith(JUnit4.class)
-public final class FlagAliasTest extends AbstractBlazeOptionHandlerTest {
+public final class FlagAliasTest {
+
+ private StoredEventHandler eventHandler;
+ private OptionsParser parser;
+ private BlazeOptionHandler optionHandler;
+
+ @Before
+ public void setUp() throws Exception {
+ ImmutableList<Class<? extends OptionsBase>> optionsClasses =
+ ImmutableList.of(
+ TestOptions.class, CommonCommandOptions.class, ClientOptions.class, CoreOptions.class);
+
+ BlazeOptionHandlerTestHelper helper =
+ new BlazeOptionHandlerTestHelper(
+ optionsClasses,
+ /* allowResidue= */ true,
+ /* aliasFlag= */ BLAZE_ALIASING_FLAG,
+ /* skipStarlarkPrefixes= */ true);
+ eventHandler = helper.getEventHandler();
+ parser = helper.getOptionsParser();
+ optionHandler = helper.getOptionHandler();
+ }
@Test
public void useAliasWithoutSettingFeature() {
@@ -190,6 +219,20 @@
}
@Test
+ public void useAliasWithNoBooleanSyntax() {
+ ImmutableList<String> args =
+ ImmutableList.of(
+ "c0",
+ "--rc_source=/somewhere/.blazerc",
+ "--experimental_enable_flag_alias",
+ "--flag_alias=foo=//bar",
+ "--nofoo");
+ optionHandler.parseOptions(args, eventHandler);
+ assertThat(eventHandler.getEvents())
+ .contains(Event.error("--nofoo :: Unrecognized option: --nofoo").withTag(BAD_OPTION_TAG));
+ }
+
+ @Test
public void lastRepeatMappingTakesPrecedence() {
ImmutableList<String> args =
ImmutableList.of(
@@ -258,9 +301,7 @@
"--flag_alias=foo=//bar");
optionHandler.parseOptions(args, eventHandler);
assertThat(eventHandler.getEvents())
- .contains(
- Event.error("--foo=7 :: Unrecognized option: --foo=7")
- .withTag(BlazeOptionHandler.BAD_OPTION_TAG));
+ .contains(Event.error("--foo=7 :: Unrecognized option: --foo=7").withTag(BAD_OPTION_TAG));
}
@Test
@@ -274,8 +315,6 @@
"--flag_alias=foo=//bar");
optionHandler.parseOptions(args, eventHandler);
assertThat(eventHandler.getEvents())
- .contains(
- Event.error("--foo=7 :: Unrecognized option: --foo=7")
- .withTag(BlazeOptionHandler.BAD_OPTION_TAG));
+ .contains(Event.error("--foo=7 :: Unrecognized option: --foo=7").withTag(BAD_OPTION_TAG));
}
}