diff options
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcToolchainConfigureTest.java')
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcToolchainConfigureTest.java | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcToolchainConfigureTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcToolchainConfigureTest.java new file mode 100644 index 0000000000..dbaa612fb3 --- /dev/null +++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcToolchainConfigureTest.java @@ -0,0 +1,61 @@ +// Copyright 2018 The Bazel Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +package com.google.devtools.build.lib.rules.cpp; + +import com.google.devtools.build.lib.packages.util.ResourceLoader; +import com.google.devtools.build.lib.syntax.SkylarkList.MutableList; +import com.google.devtools.build.lib.syntax.util.EvaluationTestCase; +import com.google.devtools.build.lib.testutil.TestConstants; +import java.io.IOException; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +/** Tests for cc autoconfiguration. */ +@RunWith(JUnit4.class) +public class SkylarkCcToolchainConfigureTest extends EvaluationTestCase { + + @Test + public void testSplitEscaped() throws Exception { + newTest() + .testStatement("split_escaped('a:b:c', ':')", MutableList.of(env, "a", "b", "c")) + .testStatement("split_escaped('a%:b', ':')", MutableList.of(env, "a:b")) + .testStatement("split_escaped('a%%b', ':')", MutableList.of(env, "a%b")) + .testStatement("split_escaped('a:::b', ':')", MutableList.of(env, "a", "", "", "b")) + .testStatement("split_escaped('a:b%:c', ':')", MutableList.of(env, "a", "b:c")) + .testStatement("split_escaped('a%%:b:c', ':')", MutableList.of(env, "a%", "b", "c")) + .testStatement("split_escaped(':a', ':')", MutableList.of(env, "", "a")) + .testStatement("split_escaped('a:', ':')", MutableList.of(env, "a", "")) + .testStatement("split_escaped('::a::', ':')", MutableList.of(env, "", "", "a", "", "")) + .testStatement("split_escaped('%%%:a%%%%:b', ':')", MutableList.of(env, "%:a%%", "b")) + .testStatement("split_escaped('', ':')", MutableList.of(env, "")) + .testStatement("split_escaped('%', ':')", MutableList.of(env, "%")) + .testStatement("split_escaped('%%', ':')", MutableList.of(env, "%")) + .testStatement("split_escaped('%:', ':')", MutableList.of(env, ":")) + .testStatement("split_escaped(':', ':')", MutableList.of(env, "", "")) + .testStatement("split_escaped('a%%b', ':')", MutableList.of(env, "a%b")) + .testStatement("split_escaped('a%:', ':')", MutableList.of(env, "a:")); + } + + private ModalTestCase newTest(String... skylarkOptions) throws IOException { + return new SkylarkTest(skylarkOptions) + // A mock implementation of Label to be able to parse lib_cc_configure under default + // Skylark environment (lib_cc_configure is meant to be used from the repository + // environment). + .setUp("def Label(arg):\n return 42") + .setUp( + ResourceLoader.readFromResources( + TestConstants.BAZEL_REPO_PATH + "tools/cpp/lib_cc_configure.bzl")); + } +} |