diff options
Diffstat (limited to 'src/test/java/com/google/devtools/build')
3 files changed, 23 insertions, 7 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/Crosstool.java b/src/test/java/com/google/devtools/build/lib/packages/util/Crosstool.java index ddd5b584c9..3642fda958 100644 --- a/src/test/java/com/google/devtools/build/lib/packages/util/Crosstool.java +++ b/src/test/java/com/google/devtools/build/lib/packages/util/Crosstool.java @@ -20,6 +20,8 @@ import com.google.protobuf.TextFormat; import java.io.IOException; import java.util.ArrayList; import java.util.Collection; +import java.util.LinkedHashSet; +import java.util.Set; /** * A helper class to create a crosstool package containing a CROSSTOOL file, and the various @@ -111,9 +113,15 @@ final class Crosstool { CrosstoolConfig.CrosstoolRelease.newBuilder(); TextFormat.merge(crosstoolFileContents, configBuilder); StringBuilder compilerMap = new StringBuilder(); + // Remove duplicates + Set<String> keys = new LinkedHashSet<>(); for (CrosstoolConfig.CToolchain toolchain : configBuilder.build().getToolchainList()) { - compilerMap.append(String.format("'%s|%s': ':cc-compiler-%s',\n", - toolchain.getTargetCpu(), toolchain.getCompiler(), toolchain.getTargetCpu())); + String key = String.format("%s|%s", toolchain.getTargetCpu(), toolchain.getCompiler()); + if (!keys.contains(key)) { + keys.add(key); + compilerMap.append( + String.format("'%s': ':cc-compiler-%s',\n", key, toolchain.getTargetCpu())); + } } for (String arch : archs) { diff --git a/src/test/java/com/google/devtools/build/lib/syntax/EvaluationTest.java b/src/test/java/com/google/devtools/build/lib/syntax/EvaluationTest.java index a3251da4f3..ff5940a95e 100644 --- a/src/test/java/com/google/devtools/build/lib/syntax/EvaluationTest.java +++ b/src/test/java/com/google/devtools/build/lib/syntax/EvaluationTest.java @@ -359,6 +359,19 @@ public class EvaluationTest extends EvaluationTestCase { } @Test + public void testDictWithDuplicatedKey() throws Exception { + new SkylarkTest("--incompatible_dict_literal_has_no_duplicates=true") + .testIfErrorContains( + "Duplicated key \"str\" when creating dictionary", "{'str': 1, 'x': 2, 'str': 3}"); + } + + @Test + public void testDictAllowDuplicatedKey() throws Exception { + new SkylarkTest("--incompatible_dict_literal_has_no_duplicates=false") + .testStatement("{'str': 1, 'x': 2, 'str': 3}", ImmutableMap.of("str", 3, "x", 2)); + } + + @Test public void testRecursiveTupleDestructuring() throws Exception { newTest() .setUp("((a, b), (c, d)) = [(1, 2), (3, 4)]") diff --git a/src/test/java/com/google/devtools/build/lib/syntax/MethodLibraryTest.java b/src/test/java/com/google/devtools/build/lib/syntax/MethodLibraryTest.java index 6b93e7e938..a76bbc6847 100644 --- a/src/test/java/com/google/devtools/build/lib/syntax/MethodLibraryTest.java +++ b/src/test/java/com/google/devtools/build/lib/syntax/MethodLibraryTest.java @@ -1122,11 +1122,6 @@ public class MethodLibraryTest extends EvaluationTestCase { } @Test - public void testDictionaryWithMultipleKeys() throws Exception { - new BothModesTest().testStatement("{0: 'a', 1: 'b', 0: 'c'}[0]", "c"); - } - - @Test public void testDictionaryKeyNotFound() throws Exception { new BothModesTest() .testIfErrorContains("key \"0\" not found in dictionary", "{}['0']") |