diff options
author | 2016-08-02 10:04:22 +0000 | |
---|---|---|
committer | 2016-08-02 11:16:42 +0000 | |
commit | 8f08c63365d1e72d5f70285294d4df774d693a68 (patch) | |
tree | 28268c8ccac729adedb58c585dc816a3433cafd3 /src/test | |
parent | fbe4221dca7715edd784c2fc598877fb102cb8a3 (diff) |
Move the --define command line option from CppConfiguration to BuildConfiguration.
It makes much more sense there because it does *not* specify C++ #defines but BUILD variables. Also rename the getter method to make that clearer.
This allows us to remove BuildConfiguration.Fragment#getCommandLineDefines().
--
MOS_MIGRATED_REVID=129080014
Diffstat (limited to 'src/test')
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationTest.java | 48 |
1 files changed, 44 insertions, 4 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationTest.java b/src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationTest.java index 873b6c4fda..fc60ff6fb7 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationTest.java @@ -30,14 +30,12 @@ import com.google.devtools.build.lib.rules.cpp.CppOptions; import com.google.devtools.build.lib.rules.java.JavaConfiguration; import com.google.devtools.build.lib.rules.objc.J2ObjcConfiguration; import com.google.devtools.common.options.Options; - +import java.util.Map; +import java.util.regex.Pattern; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; -import java.util.Map; -import java.util.regex.Pattern; - /** * Tests for {@link BuildConfiguration}. */ @@ -334,4 +332,46 @@ public class BuildConfigurationTest extends ConfigurationTestCase { assertThat(config1.getFragment(J2ObjcConfiguration.class)) .isNotSameAs(config3.getFragment(J2ObjcConfiguration.class)); } + + @Test + public void testCommandLineVariables() throws Exception { + BuildConfiguration config = create( + "--define", "a=b/c:d", "--define", "b=FOO", "--define", "DEFUN=Nope"); + assertThat(config.getCommandLineBuildVariables().get("a")).isEqualTo("b/c:d"); + assertThat(config.getCommandLineBuildVariables().get("b")).isEqualTo("FOO"); + assertThat(config.getCommandLineBuildVariables().get("DEFUN")).isEqualTo("Nope"); + } + + // Regression test for bug #2518997: + // "--define in blazerc overrides --define from command line" + @Test + public void testCommandLineVariablesOverride() throws Exception { + BuildConfiguration config = create("--define", "a=b", "--define", "a=c"); + assertThat(config.getCommandLineBuildVariables().get("a")).isEqualTo("c"); + } + + // This is really a test of option parsing, not command-line variable + // semantics. + @Test + public void testCommandLineVariablesWithFunnyCharacters() throws Exception { + BuildConfiguration config = create( + "--define", "foo=#foo", + "--define", "comma=a,b", + "--define", "space=foo bar", + "--define", "thing=a \"quoted\" thing", + "--define", "qspace=a\\ quoted\\ space", + "--define", "#a=pounda"); + assertThat(config.getCommandLineBuildVariables().get("foo")).isEqualTo("#foo"); + assertThat(config.getCommandLineBuildVariables().get("comma")).isEqualTo("a,b"); + assertThat(config.getCommandLineBuildVariables().get("space")).isEqualTo("foo bar"); + assertThat(config.getCommandLineBuildVariables().get("thing")).isEqualTo("a \"quoted\" thing"); + assertThat(config.getCommandLineBuildVariables().get("qspace")).isEqualTo("a\\ quoted\\ space"); + assertThat(config.getCommandLineBuildVariables().get("#a")).isEqualTo("pounda"); + } + + @Test + public void testHostDefine() throws Exception { + BuildConfiguration cfg = createHost("--define=foo=bar"); + assertThat(cfg.getCommandLineBuildVariables().get("foo")).isEqualTo("bar"); + } } |