aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test
diff options
context:
space:
mode:
authorGravatar John Cater <jcater@google.com>2017-05-01 17:41:12 +0200
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2017-05-02 11:25:44 +0200
commit248581e8c72687c85b5c41edaea6780c8701aa55 (patch)
treef62dd1831c79c9c886cbeeebefedb1e3319f155a /src/test
parent38b835097f9ae9a6062172b8a33ec2e2d1edde20 (diff)
Move platform providers to a new package to break cyclic dependencies.
Part of #2219. Change-Id: I87c7bc9fbfb38d3dbdf193b46247901d0f2a838d PiperOrigin-RevId: 154719063
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/com/google/devtools/build/lib/BUILD1
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/platform/BUILD26
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/platform/PlatformProvidersTest.java150
-rw-r--r--src/test/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/ndk12bfiles.txt152
-rw-r--r--src/test/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/ndkfiles.txt295
-rw-r--r--src/test/java/com/google/devtools/build/lib/packages/ImplicitOutputsFunctionTest.java93
-rw-r--r--src/test/java/com/google/devtools/build/lib/packages/OutputFileTest.java219
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/platform/BUILD1
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/platform/ConstraintTest.java45
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/platform/PlatformCommonTest.java2
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/platform/PlatformTest.java59
11 files changed, 859 insertions, 184 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/BUILD b/src/test/java/com/google/devtools/build/lib/BUILD
index 77a466052a..3b92f212de 100644
--- a/src/test/java/com/google/devtools/build/lib/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/BUILD
@@ -38,6 +38,7 @@ filegroup(
"//src/test/java/com/google/devtools/build/lib/skyframe:srcs",
"//src/test/java/com/google/devtools/build/lib/rules/android:srcs",
"//src/test/java/com/google/devtools/build/lib/rules/config:srcs",
+ "//src/test/java/com/google/devtools/build/lib/analysis/platform:srcs",
"//src/test/java/com/google/devtools/build/lib/rules/platform:srcs",
"//src/test/java/com/google/devtools/build/lib/rules/repository:srcs",
"//src/test/java/com/google/devtools/build/lib/bazel/repository:srcs",
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/platform/BUILD b/src/test/java/com/google/devtools/build/lib/analysis/platform/BUILD
new file mode 100644
index 0000000000..5993fc5516
--- /dev/null
+++ b/src/test/java/com/google/devtools/build/lib/analysis/platform/BUILD
@@ -0,0 +1,26 @@
+filegroup(
+ name = "srcs",
+ srcs = glob(["**"]),
+ visibility = ["//src/test/java/com/google/devtools/build/lib:__pkg__"],
+)
+
+java_test(
+ name = "PlatformAnalysisTests",
+ srcs = glob(["*.java"]),
+ test_class = "com.google.devtools.build.lib.AllTests",
+ deps = [
+ "//src/main/java/com/google/devtools/build/lib:events",
+ "//src/main/java/com/google/devtools/build/lib:os_util",
+ "//src/main/java/com/google/devtools/build/lib:syntax",
+ "//src/main/java/com/google/devtools/build/lib:util",
+ "//src/main/java/com/google/devtools/build/lib/analysis/platform",
+ "//src/main/java/com/google/devtools/build/lib/cmdline",
+ "//src/test/java/com/google/devtools/build/lib:analysis_testutil",
+ "//src/test/java/com/google/devtools/build/lib:packages_testutil",
+ "//src/test/java/com/google/devtools/build/lib/skylark:testutil",
+ "//third_party:guava",
+ "//third_party:guava-testlib",
+ "//third_party:junit4",
+ "//third_party:truth",
+ ],
+)
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/platform/PlatformProvidersTest.java b/src/test/java/com/google/devtools/build/lib/analysis/platform/PlatformProvidersTest.java
new file mode 100644
index 0000000000..235532c2d8
--- /dev/null
+++ b/src/test/java/com/google/devtools/build/lib/analysis/platform/PlatformProvidersTest.java
@@ -0,0 +1,150 @@
+// Copyright 2017 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.analysis.platform;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.testing.EqualsTester;
+import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
+import com.google.devtools.build.lib.events.Location;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+/** Tests of platform providers. */
+@RunWith(JUnit4.class)
+public class PlatformProvidersTest extends BuildViewTestCase {
+ @Rule public ExpectedException expectedException = ExpectedException.none();
+
+ @Test
+ public void constraintSetting_equalsTester() {
+ new EqualsTester()
+ .addEqualityGroup(
+ ConstraintSettingInfo.create(makeLabel("//constraint:basic")),
+ ConstraintSettingInfo.create(makeLabel("//constraint:basic")))
+ .addEqualityGroup(ConstraintSettingInfo.create(makeLabel("//constraint:other")))
+ .testEquals();
+ }
+
+ @Test
+ public void constraintValue_equalsTester() {
+ ConstraintSettingInfo setting1 = ConstraintSettingInfo.create(makeLabel("//constraint:basic"));
+ ConstraintSettingInfo setting2 = ConstraintSettingInfo.create(makeLabel("//constraint:other"));
+ new EqualsTester()
+ .addEqualityGroup(
+ // Base case.
+ ConstraintValueInfo.create(setting1, makeLabel("//constraint:value")),
+ ConstraintValueInfo.create(setting1, makeLabel("//constraint:value")))
+ .addEqualityGroup(
+ // Different label.
+ ConstraintValueInfo.create(setting1, makeLabel("//constraint:otherValue")))
+ .addEqualityGroup(
+ // Different setting.
+ ConstraintValueInfo.create(setting2, makeLabel("//constraint:ovalue")))
+ .testEquals();
+ }
+
+ @Test
+ public void platformInfo_overlappingConstraintsError() throws Exception {
+ ConstraintSettingInfo setting = ConstraintSettingInfo.create(makeLabel("//constraint:basic"));
+
+ ConstraintValueInfo value1 = ConstraintValueInfo.create(setting, makeLabel("//constraint:foo"));
+ ConstraintValueInfo value2 = ConstraintValueInfo.create(setting, makeLabel("//constraint:bar"));
+
+ PlatformInfo.Builder builder =
+ PlatformInfo.builder().addConstraint(value1).addConstraint(value2);
+
+ expectedException.expect(PlatformInfo.DuplicateConstraintException.class);
+ expectedException.expectMessage(
+ "Duplicate constraint_values for constraint_setting //constraint:basic: "
+ + "//constraint:foo, //constraint:bar");
+ builder.build();
+ }
+
+ @Test
+ public void platformInfo_equalsTester() throws Exception {
+ ConstraintSettingInfo setting1 = ConstraintSettingInfo.create(makeLabel("//constraint:basic"));
+ ConstraintSettingInfo setting2 = ConstraintSettingInfo.create(makeLabel("//constraint:other"));
+
+ ConstraintValueInfo value1 =
+ ConstraintValueInfo.create(setting1, makeLabel("//constraint:value1"));
+ ConstraintValueInfo value2 =
+ ConstraintValueInfo.create(setting2, makeLabel("//constraint:value2"));
+ ConstraintValueInfo value3 =
+ ConstraintValueInfo.create(setting2, makeLabel("//constraint:value3"));
+
+ new EqualsTester()
+ .addEqualityGroup(
+ // Base case.
+ PlatformInfo.builder().addConstraint(value1).addConstraint(value2).build(),
+ PlatformInfo.builder().addConstraint(value1).addConstraint(value2).build(),
+ PlatformInfo.builder()
+ .addConstraint(value1)
+ .addConstraint(value2)
+ .addRemoteExecutionProperty("key", "val") // execution properties are ignored.
+ .build())
+ .addEqualityGroup(
+ // Extra constraint.
+ PlatformInfo.builder().addConstraint(value1).addConstraint(value3).build())
+ .addEqualityGroup(
+ // Missing constraint.
+ PlatformInfo.builder().addConstraint(value1).build())
+ .testEquals();
+ }
+
+ @Test
+ public void toolchainInfo_equalsTester() throws Exception {
+ ConstraintSettingInfo setting1 = ConstraintSettingInfo.create(makeLabel("//constraint:basic"));
+ ConstraintSettingInfo setting2 = ConstraintSettingInfo.create(makeLabel("//constraint:other"));
+
+ ConstraintValueInfo value1 =
+ ConstraintValueInfo.create(setting1, makeLabel("//constraint:value1"));
+ ConstraintValueInfo value2 =
+ ConstraintValueInfo.create(setting2, makeLabel("//constraint:value2"));
+ ConstraintValueInfo value3 =
+ ConstraintValueInfo.create(setting2, makeLabel("//constraint:value3"));
+
+ new EqualsTester()
+ .addEqualityGroup(
+ // Base case.
+ new ToolchainInfo(
+ ImmutableList.of(value1, value2),
+ ImmutableList.of(value1, value3),
+ ImmutableMap.<String, Object>of("foo", "val1", "bar", "val2"),
+ Location.BUILTIN),
+ new ToolchainInfo(
+ ImmutableList.of(value1, value2),
+ ImmutableList.of(value1, value3),
+ ImmutableMap.<String, Object>of("foo", "val1", "bar", "val2"),
+ Location.BUILTIN))
+ .addEqualityGroup(
+ // Different target constraints.
+ new ToolchainInfo(
+ ImmutableList.of(value1, value2),
+ ImmutableList.of(value1, value2),
+ ImmutableMap.<String, Object>of("foo", "val1", "bar", "val2"),
+ Location.BUILTIN))
+ .addEqualityGroup(
+ // Different data.
+ new ToolchainInfo(
+ ImmutableList.of(value1, value2),
+ ImmutableList.of(value1, value3),
+ ImmutableMap.<String, Object>of("foo", "val1", "bar", "val3"),
+ Location.BUILTIN))
+ .testEquals();
+ }
+}
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/ndk12bfiles.txt b/src/test/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/ndk12bfiles.txt
index b56ae99fee..068f9613c4 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/ndk12bfiles.txt
+++ b/src/test/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/ndk12bfiles.txt
@@ -1,4 +1,154 @@
-es/rebind_alloc.pass.cpp
+thread.thread.class/types.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/thread/thread.threads/thread.thread.this/get_id.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/thread/thread.threads/thread.thread.this/sleep_for.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/thread/thread.threads/thread.thread.this/sleep_until.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/thread/thread.threads/thread.thread.this/yield.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/thread/thread.threads/version.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.cnstr/allocs.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.cnstr/converting_copy.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.cnstr/converting_move.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.cnstr/copy.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.cnstr/default.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.members/allocate_size_hint.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.members/allocate_size.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.members/construct.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.members/deallocate.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.members/destroy.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.members/inner_allocator.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.members/max_size.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.members/outer_allocator.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.members/select_on_container_copy_construction.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.types/allocator_pointers.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.types/inner_allocator_type.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.types/propagate_on_container_copy_assignment.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.types/propagate_on_container_move_assignment.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/allocator.adaptor/allocator.adaptor.types/propagate_on_container_swap.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/allocator.adaptor/scoped.adaptor.operators/eq.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/allocator.adaptor/types.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/date.time/tested_elsewhere.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/arithmetic.operations/divides.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/arithmetic.operations/minus.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/arithmetic.operations/modulus.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/arithmetic.operations/multiplies.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/arithmetic.operations/negate.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/arithmetic.operations/plus.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/arithmetic.operations/transparent.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/copy.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_int_0.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_lvalue.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_rvalue.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_void_0.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/nested.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.isbind/is_bind_expression.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.isbind/is_placeholder.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.place/placeholders.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/bind/func.bind/nothing_to_do.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/bind/nothing_to_do.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/bitwise.operations/bit_and.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/bitwise.operations/bit_not.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/bitwise.operations/bit_or.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/bitwise.operations/bit_xor.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/bitwise.operations/transparent.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/comparisons/equal_to.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/comparisons/greater_equal.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/comparisons/greater.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/comparisons/less_equal.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/comparisons/less.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/comparisons/not_equal_to.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/comparisons/transparent.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.def/nothing_to_do.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.memfn/member_data.fail.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.memfn/member_data.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.memfn/member_function_const.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.memfn/member_function_const_volatile.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.memfn/member_function.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.memfn/member_function_volatile.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.require/binary_function.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.require/invoke.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.require/unary_function.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.wrap/func.wrap.badcall/bad_function_call.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.wrap/func.wrap.badcall/func.wrap.badcall.const/bad_function_call_ctor.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.alg/swap.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.cap/operator_bool.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_F.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_function.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_nullptr.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_rfunction.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_assign.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/default.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_assign.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_incomplete.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/nullptr_t_assign.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/nullptr_t.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke.fail.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke_int_0.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke_void_0.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.mod/assign_F_alloc.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.mod/swap.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.nullptr/operator_EQEQ.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.nullptr/operator_==.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.targ/target.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.targ/target_type.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/types.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/func.wrap/nothing_to_do.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/logical.operations/logical_and.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/logical.operations/logical_not.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/logical.operations/logical_or.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/logical.operations/transparent.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/negators/binary_negate.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/negators/not1.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/negators/not2.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/negators/unary_negate.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/refwrap/binary.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/refwrap/refwrap.access/conversion.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/refwrap/refwrap.assign/copy_assign.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/refwrap/refwrap.const/copy_ctor.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/refwrap/refwrap.const/type_ctor.fail.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/refwrap/refwrap.const/type_ctor.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/cref_1.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/cref_2.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/ref_1.fail.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/ref_1.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/ref_2.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/refwrap/refwrap.invoke/invoke.fail.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/refwrap/refwrap.invoke/invoke_int_0.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/refwrap/refwrap.invoke/invoke.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/refwrap/refwrap.invoke/invoke_void_0.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/refwrap/type.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/refwrap/unary.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/refwrap/weak_result.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/unord.hash/enum.fail.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/unord.hash/enum.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/unord.hash/floating.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/unord.hash/integral.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/unord.hash/pointer.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/function.objects/version.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/intseq/intseq.general/integer_seq.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/intseq/intseq.intseq/integer_seq.fail.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/intseq/intseq.intseq/integer_seq.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/intseq/intseq.make/make_integer_seq.fail.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/intseq/intseq.make/make_integer_seq.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/intseq/nothing_to_do.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/memory/allocator.tag/allocator_arg.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/memory/allocator.traits/allocator.traits.members/allocate_hint.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/memory/allocator.traits/allocator.traits.members/allocate.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/memory/allocator.traits/allocator.traits.members/construct.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/memory/allocator.traits/allocator.traits.members/deallocate.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/memory/allocator.traits/allocator.traits.members/destroy.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/memory/allocator.traits/allocator.traits.members/max_size.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/memory/allocator.traits/allocator.traits.members/select_on_container_copy_construction.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/const_pointer.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/const_void_pointer.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/difference_type.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/pointer.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/propagate_on_container_copy_assignment.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/propagate_on_container_move_assignment.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/propagate_on_container_swap.pass.cpp
+sources/cxx-stl/llvm-libc++/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/rebind_alloc.pass.cpp
sources/cxx-stl/llvm-libc++/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/size_type.pass.cpp
sources/cxx-stl/llvm-libc++/libcxx/test/utilities/memory/allocator.traits/allocator.traits.types/void_pointer.pass.cpp
sources/cxx-stl/llvm-libc++/libcxx/test/utilities/memory/allocator.traits/allocator_type.pass.cpp
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/ndkfiles.txt b/src/test/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/ndkfiles.txt
index bf6e08efc3..ad209a867c 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/ndkfiles.txt
+++ b/src/test/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/ndkfiles.txt
@@ -1,4 +1,297 @@
-21/arch-x86/usr/include/linux/connector.h
+-21/arch-x86_64/usr/lib64/libc.so
+platforms/android-21/arch-x86_64/usr/lib64/libdl.so
+platforms/android-21/arch-x86_64/usr/lib64/libEGL.so
+platforms/android-21/arch-x86_64/usr/lib64/libGLESv1_CM.so
+platforms/android-21/arch-x86_64/usr/lib64/libGLESv2.so
+platforms/android-21/arch-x86_64/usr/lib64/libGLESv3.so
+platforms/android-21/arch-x86_64/usr/lib64/libjnigraphics.so
+platforms/android-21/arch-x86_64/usr/lib64/liblog.so
+platforms/android-21/arch-x86_64/usr/lib64/libm.a
+platforms/android-21/arch-x86_64/usr/lib64/libmediandk.so
+platforms/android-21/arch-x86_64/usr/lib64/libm.so
+platforms/android-21/arch-x86_64/usr/lib64/libOpenMAXAL.so
+platforms/android-21/arch-x86_64/usr/lib64/libOpenSLES.so
+platforms/android-21/arch-x86_64/usr/lib64/libstdc++.a
+platforms/android-21/arch-x86_64/usr/lib64/libstdc++.so
+platforms/android-21/arch-x86_64/usr/lib64/libz.a
+platforms/android-21/arch-x86_64/usr/lib64/libz.so
+platforms/android-21/arch-x86_64/usr/lib64/rs/libclcore.bc
+platforms/android-21/arch-x86_64/usr/lib64/rs/libcompiler_rt.a
+platforms/android-21/arch-x86_64/usr/lib64/rs/libRScpp_static.a
+platforms/android-21/arch-x86_64/usr/lib64/rs/libRSSupport.so
+platforms/android-21/arch-x86_64/usr/lib/crtbegin_dynamic.o
+platforms/android-21/arch-x86_64/usr/lib/crtbegin_so.o
+platforms/android-21/arch-x86_64/usr/lib/crtbegin_static.o
+platforms/android-21/arch-x86_64/usr/lib/crtend_android.o
+platforms/android-21/arch-x86_64/usr/lib/crtend_so.o
+platforms/android-21/arch-x86_64/usr/lib/libandroid.so
+platforms/android-21/arch-x86_64/usr/lib/libc.a
+platforms/android-21/arch-x86_64/usr/lib/libc.so
+platforms/android-21/arch-x86_64/usr/lib/libdl.so
+platforms/android-21/arch-x86_64/usr/lib/libEGL.so
+platforms/android-21/arch-x86_64/usr/lib/libGLESv1_CM.so
+platforms/android-21/arch-x86_64/usr/lib/libGLESv2.so
+platforms/android-21/arch-x86_64/usr/lib/libGLESv3.so
+platforms/android-21/arch-x86_64/usr/lib/libjnigraphics.so
+platforms/android-21/arch-x86_64/usr/lib/liblog.so
+platforms/android-21/arch-x86_64/usr/lib/libm.a
+platforms/android-21/arch-x86_64/usr/lib/libmediandk.so
+platforms/android-21/arch-x86_64/usr/lib/libm.so
+platforms/android-21/arch-x86_64/usr/lib/libOpenMAXAL.so
+platforms/android-21/arch-x86_64/usr/lib/libOpenSLES.so
+platforms/android-21/arch-x86_64/usr/lib/libstdc++.a
+platforms/android-21/arch-x86_64/usr/lib/libstdc++.so
+platforms/android-21/arch-x86_64/usr/lib/libz.a
+platforms/android-21/arch-x86_64/usr/lib/libz.so
+platforms/android-21/arch-x86_64/usr/libx32/crtbegin_dynamic.o
+platforms/android-21/arch-x86_64/usr/libx32/crtbegin_so.o
+platforms/android-21/arch-x86_64/usr/libx32/crtbegin_static.o
+platforms/android-21/arch-x86_64/usr/libx32/crtend_android.o
+platforms/android-21/arch-x86_64/usr/libx32/crtend_so.o
+platforms/android-21/arch-x86_64/usr/libx32/libandroid.so
+platforms/android-21/arch-x86_64/usr/libx32/libc.so
+platforms/android-21/arch-x86_64/usr/libx32/libdl.so
+platforms/android-21/arch-x86_64/usr/libx32/libEGL.so
+platforms/android-21/arch-x86_64/usr/libx32/libGLESv1_CM.so
+platforms/android-21/arch-x86_64/usr/libx32/libGLESv2.so
+platforms/android-21/arch-x86_64/usr/libx32/libGLESv3.so
+platforms/android-21/arch-x86_64/usr/libx32/libjnigraphics.so
+platforms/android-21/arch-x86_64/usr/libx32/liblog.so
+platforms/android-21/arch-x86_64/usr/libx32/libmediandk.so
+platforms/android-21/arch-x86_64/usr/libx32/libm.so
+platforms/android-21/arch-x86_64/usr/libx32/libOpenMAXAL.so
+platforms/android-21/arch-x86_64/usr/libx32/libOpenSLES.so
+platforms/android-21/arch-x86_64/usr/libx32/libstdc++.so
+platforms/android-21/arch-x86_64/usr/libx32/libz.so
+platforms/android-21/arch-x86/usr/include/alloca.h
+platforms/android-21/arch-x86/usr/include/android/api-level.h
+platforms/android-21/arch-x86/usr/include/android/asset_manager.h
+platforms/android-21/arch-x86/usr/include/android/asset_manager_jni.h
+platforms/android-21/arch-x86/usr/include/android/bitmap.h
+platforms/android-21/arch-x86/usr/include/android/configuration.h
+platforms/android-21/arch-x86/usr/include/android/dlext.h
+platforms/android-21/arch-x86/usr/include/android/input.h
+platforms/android-21/arch-x86/usr/include/android/keycodes.h
+platforms/android-21/arch-x86/usr/include/android/log.h
+platforms/android-21/arch-x86/usr/include/android/looper.h
+platforms/android-21/arch-x86/usr/include/android/native_activity.h
+platforms/android-21/arch-x86/usr/include/android/native_window.h
+platforms/android-21/arch-x86/usr/include/android/native_window_jni.h
+platforms/android-21/arch-x86/usr/include/android/obb.h
+platforms/android-21/arch-x86/usr/include/android/rect.h
+platforms/android-21/arch-x86/usr/include/android/sensor.h
+platforms/android-21/arch-x86/usr/include/android/storage_manager.h
+platforms/android-21/arch-x86/usr/include/android/tts.h
+platforms/android-21/arch-x86/usr/include/android/window.h
+platforms/android-21/arch-x86/usr/include/ar.h
+platforms/android-21/arch-x86/usr/include/arpa/inet.h
+platforms/android-21/arch-x86/usr/include/arpa/nameser_compat.h
+platforms/android-21/arch-x86/usr/include/arpa/nameser.h
+platforms/android-21/arch-x86/usr/include/arpa/telnet.h
+platforms/android-21/arch-x86/usr/include/asm/a.out.h
+platforms/android-21/arch-x86/usr/include/asm/auxvec.h
+platforms/android-21/arch-x86/usr/include/asm/bitsperlong.h
+platforms/android-21/arch-x86/usr/include/asm/boot.h
+platforms/android-21/arch-x86/usr/include/asm/bootparam.h
+platforms/android-21/arch-x86/usr/include/asm/byteorder.h
+platforms/android-21/arch-x86/usr/include/asm/debugreg.h
+platforms/android-21/arch-x86/usr/include/asm/e820.h
+platforms/android-21/arch-x86/usr/include/asm/errno.h
+platforms/android-21/arch-x86/usr/include/asm/fcntl.h
+platforms/android-21/arch-x86/usr/include/asm-generic/auxvec.h
+platforms/android-21/arch-x86/usr/include/asm-generic/bitsperlong.h
+platforms/android-21/arch-x86/usr/include/asm-generic/errno-base.h
+platforms/android-21/arch-x86/usr/include/asm-generic/errno.h
+platforms/android-21/arch-x86/usr/include/asm-generic/fcntl.h
+platforms/android-21/arch-x86/usr/include/asm-generic/int-l64.h
+platforms/android-21/arch-x86/usr/include/asm-generic/int-ll64.h
+platforms/android-21/arch-x86/usr/include/asm-generic/ioctl.h
+platforms/android-21/arch-x86/usr/include/asm-generic/ioctls.h
+platforms/android-21/arch-x86/usr/include/asm-generic/ipcbuf.h
+platforms/android-21/arch-x86/usr/include/asm-generic/mman-common.h
+platforms/android-21/arch-x86/usr/include/asm-generic/mman.h
+platforms/android-21/arch-x86/usr/include/asm-generic/msgbuf.h
+platforms/android-21/arch-x86/usr/include/asm-generic/param.h
+platforms/android-21/arch-x86/usr/include/asm-generic/poll.h
+platforms/android-21/arch-x86/usr/include/asm-generic/posix_types.h
+platforms/android-21/arch-x86/usr/include/asm-generic/resource.h
+platforms/android-21/arch-x86/usr/include/asm-generic/sembuf.h
+platforms/android-21/arch-x86/usr/include/asm-generic/setup.h
+platforms/android-21/arch-x86/usr/include/asm-generic/shmbuf.h
+platforms/android-21/arch-x86/usr/include/asm-generic/shmparam.h
+platforms/android-21/arch-x86/usr/include/asm-generic/siginfo.h
+platforms/android-21/arch-x86/usr/include/asm-generic/signal-defs.h
+platforms/android-21/arch-x86/usr/include/asm-generic/signal.h
+platforms/android-21/arch-x86/usr/include/asm-generic/socket.h
+platforms/android-21/arch-x86/usr/include/asm-generic/sockios.h
+platforms/android-21/arch-x86/usr/include/asm-generic/statfs.h
+platforms/android-21/arch-x86/usr/include/asm-generic/stat.h
+platforms/android-21/arch-x86/usr/include/asm-generic/swab.h
+platforms/android-21/arch-x86/usr/include/asm-generic/termbits.h
+platforms/android-21/arch-x86/usr/include/asm-generic/termios.h
+platforms/android-21/arch-x86/usr/include/asm-generic/types.h
+platforms/android-21/arch-x86/usr/include/asm-generic/ucontext.h
+platforms/android-21/arch-x86/usr/include/asm-generic/unistd.h
+platforms/android-21/arch-x86/usr/include/asm/hw_breakpoint.h
+platforms/android-21/arch-x86/usr/include/asm/hyperv.h
+platforms/android-21/arch-x86/usr/include/asm/ioctl.h
+platforms/android-21/arch-x86/usr/include/asm/ioctls.h
+platforms/android-21/arch-x86/usr/include/asm/ipcbuf.h
+platforms/android-21/arch-x86/usr/include/asm/ist.h
+platforms/android-21/arch-x86/usr/include/asm/ldt.h
+platforms/android-21/arch-x86/usr/include/asm/mce.h
+platforms/android-21/arch-x86/usr/include/asm/mman.h
+platforms/android-21/arch-x86/usr/include/asm/msgbuf.h
+platforms/android-21/arch-x86/usr/include/asm/msr.h
+platforms/android-21/arch-x86/usr/include/asm/msr-index.h
+platforms/android-21/arch-x86/usr/include/asm/mtrr.h
+platforms/android-21/arch-x86/usr/include/asm/param.h
+platforms/android-21/arch-x86/usr/include/asm/perf_regs.h
+platforms/android-21/arch-x86/usr/include/asm/poll.h
+platforms/android-21/arch-x86/usr/include/asm/posix_types_32.h
+platforms/android-21/arch-x86/usr/include/asm/posix_types_64.h
+platforms/android-21/arch-x86/usr/include/asm/posix_types.h
+platforms/android-21/arch-x86/usr/include/asm/posix_types_x32.h
+platforms/android-21/arch-x86/usr/include/asm/prctl.h
+platforms/android-21/arch-x86/usr/include/asm/processor-flags.h
+platforms/android-21/arch-x86/usr/include/asm/ptrace-abi.h
+platforms/android-21/arch-x86/usr/include/asm/ptrace.h
+platforms/android-21/arch-x86/usr/include/asm/resource.h
+platforms/android-21/arch-x86/usr/include/asm/sembuf.h
+platforms/android-21/arch-x86/usr/include/asm/setup.h
+platforms/android-21/arch-x86/usr/include/asm/shmbuf.h
+platforms/android-21/arch-x86/usr/include/asm/sigcontext32.h
+platforms/android-21/arch-x86/usr/include/asm/sigcontext.h
+platforms/android-21/arch-x86/usr/include/asm/siginfo.h
+platforms/android-21/arch-x86/usr/include/asm/signal.h
+platforms/android-21/arch-x86/usr/include/asm/socket.h
+platforms/android-21/arch-x86/usr/include/asm/sockios.h
+platforms/android-21/arch-x86/usr/include/asm/statfs.h
+platforms/android-21/arch-x86/usr/include/asm/stat.h
+platforms/android-21/arch-x86/usr/include/asm/svm.h
+platforms/android-21/arch-x86/usr/include/asm/swab.h
+platforms/android-21/arch-x86/usr/include/asm/termbits.h
+platforms/android-21/arch-x86/usr/include/asm/termios.h
+platforms/android-21/arch-x86/usr/include/asm/types.h
+platforms/android-21/arch-x86/usr/include/asm/ucontext.h
+platforms/android-21/arch-x86/usr/include/asm/unistd_32.h
+platforms/android-21/arch-x86/usr/include/asm/unistd_64.h
+platforms/android-21/arch-x86/usr/include/asm/unistd.h
+platforms/android-21/arch-x86/usr/include/asm/unistd_x32.h
+platforms/android-21/arch-x86/usr/include/asm/vm86.h
+platforms/android-21/arch-x86/usr/include/asm/vmx.h
+platforms/android-21/arch-x86/usr/include/asm/vsyscall.h
+platforms/android-21/arch-x86/usr/include/assert.h
+platforms/android-21/arch-x86/usr/include/byteswap.h
+platforms/android-21/arch-x86/usr/include/complex.h
+platforms/android-21/arch-x86/usr/include/ctype.h
+platforms/android-21/arch-x86/usr/include/dirent.h
+platforms/android-21/arch-x86/usr/include/dlfcn.h
+platforms/android-21/arch-x86/usr/include/EGL/eglext.h
+platforms/android-21/arch-x86/usr/include/EGL/egl.h
+platforms/android-21/arch-x86/usr/include/EGL/eglplatform.h
+platforms/android-21/arch-x86/usr/include/elf.h
+platforms/android-21/arch-x86/usr/include/endian.h
+platforms/android-21/arch-x86/usr/include/err.h
+platforms/android-21/arch-x86/usr/include/errno.h
+platforms/android-21/arch-x86/usr/include/fcntl.h
+platforms/android-21/arch-x86/usr/include/features.h
+platforms/android-21/arch-x86/usr/include/fenv.h
+platforms/android-21/arch-x86/usr/include/fnmatch.h
+platforms/android-21/arch-x86/usr/include/fts.h
+platforms/android-21/arch-x86/usr/include/ftw.h
+platforms/android-21/arch-x86/usr/include/getopt.h
+platforms/android-21/arch-x86/usr/include/GLES2/gl2ext.h
+platforms/android-21/arch-x86/usr/include/GLES2/gl2.h
+platforms/android-21/arch-x86/usr/include/GLES2/gl2platform.h
+platforms/android-21/arch-x86/usr/include/GLES3/gl31.h
+platforms/android-21/arch-x86/usr/include/GLES3/gl3ext.h
+platforms/android-21/arch-x86/usr/include/GLES3/gl3.h
+platforms/android-21/arch-x86/usr/include/GLES3/gl3platform.h
+platforms/android-21/arch-x86/usr/include/GLES/glext.h
+platforms/android-21/arch-x86/usr/include/GLES/gl.h
+platforms/android-21/arch-x86/usr/include/GLES/glplatform.h
+platforms/android-21/arch-x86/usr/include/grp.h
+platforms/android-21/arch-x86/usr/include/i386/elf_machdep.h
+platforms/android-21/arch-x86/usr/include/inttypes.h
+platforms/android-21/arch-x86/usr/include/jni.h
+platforms/android-21/arch-x86/usr/include/KHR/khrplatform.h
+platforms/android-21/arch-x86/usr/include/lastlog.h
+platforms/android-21/arch-x86/usr/include/libgen.h
+platforms/android-21/arch-x86/usr/include/limits.h
+platforms/android-21/arch-x86/usr/include/link.h
+platforms/android-21/arch-x86/usr/include/linux/acct.h
+platforms/android-21/arch-x86/usr/include/linux/adb.h
+platforms/android-21/arch-x86/usr/include/linux/adfs_fs.h
+platforms/android-21/arch-x86/usr/include/linux/affs_hardblocks.h
+platforms/android-21/arch-x86/usr/include/linux/agpgart.h
+platforms/android-21/arch-x86/usr/include/linux/aio_abi.h
+platforms/android-21/arch-x86/usr/include/linux/android_alarm.h
+platforms/android-21/arch-x86/usr/include/linux/a.out.h
+platforms/android-21/arch-x86/usr/include/linux/apm_bios.h
+platforms/android-21/arch-x86/usr/include/linux/arcfb.h
+platforms/android-21/arch-x86/usr/include/linux/ashmem.h
+platforms/android-21/arch-x86/usr/include/linux/atalk.h
+platforms/android-21/arch-x86/usr/include/linux/atmapi.h
+platforms/android-21/arch-x86/usr/include/linux/atmarp.h
+platforms/android-21/arch-x86/usr/include/linux/atmbr2684.h
+platforms/android-21/arch-x86/usr/include/linux/atmclip.h
+platforms/android-21/arch-x86/usr/include/linux/atmdev.h
+platforms/android-21/arch-x86/usr/include/linux/atm_eni.h
+platforms/android-21/arch-x86/usr/include/linux/atm.h
+platforms/android-21/arch-x86/usr/include/linux/atm_he.h
+platforms/android-21/arch-x86/usr/include/linux/atm_idt77105.h
+platforms/android-21/arch-x86/usr/include/linux/atmioc.h
+platforms/android-21/arch-x86/usr/include/linux/atmlec.h
+platforms/android-21/arch-x86/usr/include/linux/atmmpc.h
+platforms/android-21/arch-x86/usr/include/linux/atm_nicstar.h
+platforms/android-21/arch-x86/usr/include/linux/atmppp.h
+platforms/android-21/arch-x86/usr/include/linux/atmsap.h
+platforms/android-21/arch-x86/usr/include/linux/atmsvc.h
+platforms/android-21/arch-x86/usr/include/linux/atm_tcp.h
+platforms/android-21/arch-x86/usr/include/linux/atm_zatm.h
+platforms/android-21/arch-x86/usr/include/linux/audit.h
+platforms/android-21/arch-x86/usr/include/linux/auto_fs4.h
+platforms/android-21/arch-x86/usr/include/linux/auto_fs.h
+platforms/android-21/arch-x86/usr/include/linux/auxvec.h
+platforms/android-21/arch-x86/usr/include/linux/ax25.h
+platforms/android-21/arch-x86/usr/include/linux/b1lli.h
+platforms/android-21/arch-x86/usr/include/linux/baycom.h
+platforms/android-21/arch-x86/usr/include/linux/bcache.h
+platforms/android-21/arch-x86/usr/include/linux/bcm933xx_hcs.h
+platforms/android-21/arch-x86/usr/include/linux/bfs_fs.h
+platforms/android-21/arch-x86/usr/include/linux/binder.h
+platforms/android-21/arch-x86/usr/include/linux/binfmts.h
+platforms/android-21/arch-x86/usr/include/linux/blkpg.h
+platforms/android-21/arch-x86/usr/include/linux/blktrace_api.h
+platforms/android-21/arch-x86/usr/include/linux/bpqether.h
+platforms/android-21/arch-x86/usr/include/linux/bsg.h
+platforms/android-21/arch-x86/usr/include/linux/btrfs.h
+platforms/android-21/arch-x86/usr/include/linux/byteorder/big_endian.h
+platforms/android-21/arch-x86/usr/include/linux/byteorder/little_endian.h
+platforms/android-21/arch-x86/usr/include/linux/caif/caif_socket.h
+platforms/android-21/arch-x86/usr/include/linux/caif/if_caif.h
+platforms/android-21/arch-x86/usr/include/linux/can/bcm.h
+platforms/android-21/arch-x86/usr/include/linux/can/error.h
+platforms/android-21/arch-x86/usr/include/linux/can/gw.h
+platforms/android-21/arch-x86/usr/include/linux/can.h
+platforms/android-21/arch-x86/usr/include/linux/can/netlink.h
+platforms/android-21/arch-x86/usr/include/linux/can/raw.h
+platforms/android-21/arch-x86/usr/include/linux/capability.h
+platforms/android-21/arch-x86/usr/include/linux/capi.h
+platforms/android-21/arch-x86/usr/include/linux/cciss_defs.h
+platforms/android-21/arch-x86/usr/include/linux/cciss_ioctl.h
+platforms/android-21/arch-x86/usr/include/linux/cdrom.h
+platforms/android-21/arch-x86/usr/include/linux/cgroupstats.h
+platforms/android-21/arch-x86/usr/include/linux/chio.h
+platforms/android-21/arch-x86/usr/include/linux/cifs/cifs_mount.h
+platforms/android-21/arch-x86/usr/include/linux/cm4000_cs.h
+platforms/android-21/arch-x86/usr/include/linux/cn_proc.h
+platforms/android-21/arch-x86/usr/include/linux/coda.h
+platforms/android-21/arch-x86/usr/include/linux/coda_psdev.h
+platforms/android-21/arch-x86/usr/include/linux/coff.h
+platforms/android-21/arch-x86/usr/include/linux/compiler.h
+platforms/android-21/arch-x86/usr/include/linux/connector.h
platforms/android-21/arch-x86/usr/include/linux/const.h
platforms/android-21/arch-x86/usr/include/linux/cramfs_fs.h
platforms/android-21/arch-x86/usr/include/linux/cuda.h
diff --git a/src/test/java/com/google/devtools/build/lib/packages/ImplicitOutputsFunctionTest.java b/src/test/java/com/google/devtools/build/lib/packages/ImplicitOutputsFunctionTest.java
index 321562475f..f19a31ee1d 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/ImplicitOutputsFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/ImplicitOutputsFunctionTest.java
@@ -1,95 +1,4 @@
-// Copyright 2015 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.packages;
-
-import static com.google.common.truth.Truth.assertThat;
-import static org.junit.Assert.assertEquals;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.devtools.build.lib.packages.ImplicitOutputsFunction.AttributeValueGetter;
-import com.google.devtools.build.lib.testutil.Suite;
-import com.google.devtools.build.lib.testutil.TestSpec;
-import com.google.devtools.build.lib.util.Preconditions;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Tests for {@link ImplicitOutputsFunction}.
- */
-@TestSpec(size = Suite.SMALL_TESTS)
-@RunWith(JUnit4.class)
-public final class ImplicitOutputsFunctionTest {
- private void assertPlaceholderCollection(
- String template, String expectedTemplate, String... expectedPlaceholders) throws Exception {
- List<String> actualPlaceholders = new ArrayList<>();
- assertEquals(
- expectedTemplate,
- ImplicitOutputsFunction.createPlaceholderSubstitutionFormatString(
- template, actualPlaceholders));
- assertThat(actualPlaceholders)
- .containsExactlyElementsIn(Arrays.asList(expectedPlaceholders))
- .inOrder();
- }
-
- @Test
- public void testNoPlaceholder() throws Exception {
- assertPlaceholderCollection("foo", "foo");
- }
-
- @Test
- public void testJustPlaceholder() throws Exception {
- assertPlaceholderCollection("%{foo}", "%s", "foo");
- }
-
- @Test
- public void testPrefixedPlaceholder() throws Exception {
- assertPlaceholderCollection("foo%{bar}", "foo%s", "bar");
- }
-
- @Test
- public void testSuffixedPlaceholder() throws Exception {
- assertPlaceholderCollection("%{foo}bar", "%sbar", "foo");
- }
-
- @Test
- public void testMultiplePlaceholdersPrefixed() throws Exception {
- assertPlaceholderCollection("foo%{bar}baz%{qux}", "foo%sbaz%s", "bar", "qux");
- }
-
- @Test
- public void testMultiplePlaceholdersSuffixed() throws Exception {
- assertPlaceholderCollection("%{foo}bar%{baz}qux", "%sbar%squx", "foo", "baz");
- }
-
- @Test
- public void testTightlyPackedPlaceholders() throws Exception {
- assertPlaceholderCollection("%{foo}%{bar}%{baz}", "%s%s%s", "foo", "bar", "baz");
- }
-
- @Test
- public void testIncompletePlaceholder() throws Exception {
+{
assertPlaceholderCollection("%{foo", "%%{foo");
}
diff --git a/src/test/java/com/google/devtools/build/lib/packages/OutputFileTest.java b/src/test/java/com/google/devtools/build/lib/packages/OutputFileTest.java
index 5c34318c21..34a3a9bbb7 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/OutputFileTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/OutputFileTest.java
@@ -1 +1,220 @@
+// Copyright 2015 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.packages;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertSame;
+
+import com.google.devtools.build.lib.cmdline.PackageIdentifier;
+import com.google.devtools.build.lib.packages.util.PackageLoadingTestCase;
+import com.google.devtools.build.lib.vfs.Path;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+@RunWith(JUnit4.class)
+public class OutputFileTest extends PackageLoadingTestCase {
+ private Package pkg;
+ private Rule rule;
+
+ @Before
+ public final void createRule() throws Exception {
+ Path buildfile =
+ scratch.file(
+ "pkg/BUILD",
+ "genrule(name='foo', ",
+ " srcs=[], ",
+ " cmd='', ",
+ " outs=['x', 'subdir/y'])");
+ this.pkg =
+ packageFactory.createPackageForTesting(
+ PackageIdentifier.createInMainRepo("pkg"), buildfile, getPackageManager(), reporter);
+ assertNoEvents();
+
+ this.rule = (Rule) pkg.getTarget("foo");
+ }
+
+ private void checkTargetRetainsGeneratingRule(OutputFile output) throws Exception {
+ assertSame(rule, output.getGeneratingRule());
+ }
+
+ private void checkName(OutputFile output, String expectedName) throws Exception {
+ assertEquals(expectedName, output.getName());
+ }
+
+ private void checkLabel(OutputFile output, String expectedLabelString) throws Exception {
+ assertEquals(expectedLabelString, output.getLabel().toString());
+ }
+
+ @Test
+ public void testGetAssociatedRule() throws Exception {
+ assertSame(rule, pkg.getTarget("x").getAssociatedRule());
+ }
+
+ @Test
+ public void testOutputFileInPackageDir() throws Exception {
+ OutputFile outputFileX = (OutputFile) pkg.getTarget("x");
+ checkTargetRetainsGeneratingRule(outputFileX);
+ checkName(outputFileX, "x");
+ checkLabel(outputFileX, "//pkg:x");
+ assertEquals("generated file", outputFileX.getTargetKind());
+ }
+
+ @Test
+ public void testOutputFileInSubdirectory() throws Exception {
+ OutputFile outputFileY = (OutputFile) pkg.getTarget("subdir/y");
+ checkTargetRetainsGeneratingRule(outputFileY);
+ checkName(outputFileY, "subdir/y");
+ checkLabel(outputFileY, "//pkg:subdir/y");
+ }
+
+ @Test
+ public void testEquivalenceRelation() throws Exception {
+ OutputFile outputFileX1 = (OutputFile) pkg.getTarget("x");
+ OutputFile outputFileX2 = (OutputFile) pkg.getTarget("x");
+ OutputFile outputFileY1 = (OutputFile) pkg.getTarget("subdir/y");
+ OutputFile outputFileY2 = (OutputFile) pkg.getTarget("subdir/y");
+ assertSame(outputFileX1, outputFileX2);
+ assertSame(outputFileY1, outputFileY2);
+ assertEquals(outputFileX1, outputFileX2);
+ assertEquals(outputFileX2, outputFileX1);
+ assertEquals(outputFileY1, outputFileY2);
+ assertEquals(outputFileY2, outputFileY1);
+ assertFalse(outputFileX1.equals(outputFileY1));
+ assertFalse(outputFileY1.equals(outputFileX1));
+ assertEquals(outputFileX1.hashCode(), outputFileX2.hashCode());
+ assertEquals(outputFileY1.hashCode(), outputFileY2.hashCode());
+ }
+
+ @Test
+ public void testDuplicateOutputFilesInDifferentRules() throws Exception {
+ Path buildfile =
+ scratch.file(
+ "two_outs/BUILD",
+ "genrule(name='a',",
+ " cmd='ls >$(location out)',",
+ " outs=['out'])",
+ "",
+ "genrule(name='b',",
+ " cmd='ls >$(location out)',",
+ " outs=['out'])");
+
+ reporter.removeHandler(failFastHandler);
+ packageFactory.createPackageForTesting(
+ PackageIdentifier.createInMainRepo("two_outs"),
+ buildfile,
+ getPackageManager(),
+ reporter);
+ assertContainsEvent(
+ "generated file 'out' in rule 'b' conflicts with "
+ + "existing generated file from rule 'a'");
+ }
+
+ @Test
+ public void testOutputFileNameConflictsWithExistingRule() throws Exception {
+ Path buildfile =
+ scratch.file(
+ "out_is_rule/BUILD",
+ "genrule(name='a',",
+ " cmd='ls >$(location out)',",
+ " outs=['out'])",
+ "",
+ "genrule(name='b',",
+ " cmd='ls >$(location out)',",
+ " outs=['a'])");
+
+ reporter.removeHandler(failFastHandler);
+ packageFactory.createPackageForTesting(
+ PackageIdentifier.createInMainRepo("out_is_rule"),
+ buildfile,
+ getPackageManager(),
+ reporter);
+ assertContainsEvent("generated file 'a' in rule 'b' conflicts with existing genrule rule");
+ }
+
+ @Test
+ public void testDuplicateOutputFilesInSameRule() throws Exception {
+ Path buildfile =
+ scratch.file(
+ "two_outs/BUILD",
+ "genrule(name='a',",
+ " cmd='ls >$(location out)',",
+ " outs=['out', 'out'])");
+
+ reporter.removeHandler(failFastHandler);
+ packageFactory.createPackageForTesting(
+ PackageIdentifier.createInMainRepo("two_outs"),
+ buildfile,
+ getPackageManager(),
+ reporter);
+ assertContainsEvent(
+ "generated file 'out' in rule 'a' conflicts with "
+ + "existing generated file from rule 'a'");
+ }
+
+ @Test
+ public void testOutputFileWithIllegalName() throws Exception {
+ Path buildfile =
+ scratch.file(
+ "bad_out_name/BUILD",
+ "genrule(name='a',",
+ " cmd='ls',",
+ " outs=['!@#'])");
+
+ reporter.removeHandler(failFastHandler);
+ packageFactory.createPackageForTesting(
+ PackageIdentifier.createInMainRepo("bad_out_name"),
+ buildfile,
+ getPackageManager(),
+ reporter);
+ assertContainsEvent("illegal output file name '!@#' in rule //bad_out_name:a");
+ }
+
+ @Test
+ public void testOutputFileWithCrossPackageLabel() throws Exception {
+ Path buildfile =
+ scratch.file(
+ "cross_package_out/BUILD",
+ "genrule(name='a',",
+ " cmd='ls',",
+ " outs=['//foo:bar'])");
+
+ reporter.removeHandler(failFastHandler);
+ packageFactory.createPackageForTesting(
+ PackageIdentifier.createInMainRepo("cross_package_out"),
+ buildfile,
+ getPackageManager(),
+ reporter);
+ assertContainsEvent("label '//foo:bar' is not in the current package");
+ }
+
+ @Test
+ public void testOutputFileNamedBUILD() throws Exception {
+ Path buildfile =
+ scratch.file(
+ "output_called_build/BUILD",
+ "genrule(name='a',",
+ " cmd='ls',",
+ " outs=['BUILD'])");
+
+ reporter.removeHandler(failFastHandler);
+ packageFactory.createPackageForTesting(
+ PackageIdentifier.createInMainRepo("output_called_build"), buildfile,
+ getPackageManager(), reporter);
+ assertContainsEvent("generated file 'BUILD' in rule 'a' conflicts with existing source file");
+ }
}
diff --git a/src/test/java/com/google/devtools/build/lib/rules/platform/BUILD b/src/test/java/com/google/devtools/build/lib/rules/platform/BUILD
index 39b1617172..daf896eea9 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/platform/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/rules/platform/BUILD
@@ -13,6 +13,7 @@ java_test(
"//src/main/java/com/google/devtools/build/lib:os_util",
"//src/main/java/com/google/devtools/build/lib:syntax",
"//src/main/java/com/google/devtools/build/lib:util",
+ "//src/main/java/com/google/devtools/build/lib/analysis/platform",
"//src/main/java/com/google/devtools/build/lib/cmdline",
"//src/main/java/com/google/devtools/build/lib/rules/platform",
"//src/test/java/com/google/devtools/build/lib:analysis_testutil",
diff --git a/src/test/java/com/google/devtools/build/lib/rules/platform/ConstraintTest.java b/src/test/java/com/google/devtools/build/lib/rules/platform/ConstraintTest.java
index 5029953037..130e1dd1fa 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/platform/ConstraintTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/platform/ConstraintTest.java
@@ -16,7 +16,6 @@ package com.google.devtools.build.lib.rules.platform;
import static com.google.common.truth.Truth.assertThat;
-import com.google.common.testing.EqualsTester;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
import com.google.devtools.build.lib.cmdline.Label;
@@ -46,22 +45,22 @@ public class ConstraintTest extends BuildViewTestCase {
public void testConstraint() throws Exception {
ConfiguredTarget setting = getConfiguredTarget("//constraint:basic");
assertThat(setting).isNotNull();
- assertThat(ConstraintSettingInfo.fromTarget(setting)).isNotNull();
- assertThat(ConstraintSettingInfo.fromTarget(setting)).isNotNull();
- assertThat(ConstraintSettingInfo.fromTarget(setting).label())
+ assertThat(ConstraintSetting.constraintSetting(setting)).isNotNull();
+ assertThat(ConstraintSetting.constraintSetting(setting)).isNotNull();
+ assertThat(ConstraintSetting.constraintSetting(setting).label())
.isEqualTo(Label.parseAbsolute("//constraint:basic"));
ConfiguredTarget fooValue = getConfiguredTarget("//constraint:foo");
assertThat(fooValue).isNotNull();
- assertThat(ConstraintValueInfo.fromTarget(fooValue)).isNotNull();
- assertThat(ConstraintValueInfo.fromTarget(fooValue).constraint().label())
+ assertThat(ConstraintValue.constraintValue(fooValue)).isNotNull();
+ assertThat(ConstraintValue.constraintValue(fooValue).constraint().label())
.isEqualTo(Label.parseAbsolute("//constraint:basic"));
- assertThat(ConstraintValueInfo.fromTarget(fooValue).label())
+ assertThat(ConstraintValue.constraintValue(fooValue).label())
.isEqualTo(Label.parseAbsolute("//constraint:foo"));
ConfiguredTarget barValue = getConfiguredTarget("//constraint:bar");
assertThat(barValue).isNotNull();
- assertThat(ConstraintValueInfo.fromTarget(barValue).constraint().label())
+ assertThat(ConstraintValue.constraintValue(barValue).constraint().label())
.isEqualTo(Label.parseAbsolute("//constraint:basic"));
- assertThat(ConstraintValueInfo.fromTarget(barValue).label())
+ assertThat(ConstraintValue.constraintValue(barValue).label())
.isEqualTo(Label.parseAbsolute("//constraint:bar"));
}
@@ -96,32 +95,4 @@ public class ConstraintTest extends BuildViewTestCase {
assertThat(valueLabel).isNotNull();
assertThat(valueLabel).isEqualTo(makeLabel("//constraint:foo"));
}
-
- @Test
- public void constraintSetting_equalsTester() {
- new EqualsTester()
- .addEqualityGroup(
- ConstraintSettingInfo.create(makeLabel("//constraint:basic")),
- ConstraintSettingInfo.create(makeLabel("//constraint:basic")))
- .addEqualityGroup(ConstraintSettingInfo.create(makeLabel("//constraint:other")))
- .testEquals();
- }
-
- @Test
- public void constraintValue_equalsTester() {
- ConstraintSettingInfo setting1 = ConstraintSettingInfo.create(makeLabel("//constraint:basic"));
- ConstraintSettingInfo setting2 = ConstraintSettingInfo.create(makeLabel("//constraint:other"));
- new EqualsTester()
- .addEqualityGroup(
- // Base case.
- ConstraintValueInfo.create(setting1, makeLabel("//constraint:value")),
- ConstraintValueInfo.create(setting1, makeLabel("//constraint:value")))
- .addEqualityGroup(
- // Different label.
- ConstraintValueInfo.create(setting1, makeLabel("//constraint:otherValue")))
- .addEqualityGroup(
- // Different setting.
- ConstraintValueInfo.create(setting2, makeLabel("//constraint:ovalue")))
- .testEquals();
- }
}
diff --git a/src/test/java/com/google/devtools/build/lib/rules/platform/PlatformCommonTest.java b/src/test/java/com/google/devtools/build/lib/rules/platform/PlatformCommonTest.java
index b30432891c..f3cd8255b1 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/platform/PlatformCommonTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/platform/PlatformCommonTest.java
@@ -18,6 +18,8 @@ import static com.google.common.truth.Truth.assertThat;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
+import com.google.devtools.build.lib.analysis.platform.ConstraintSettingInfo;
+import com.google.devtools.build.lib.analysis.platform.ConstraintValueInfo;
import com.google.devtools.build.lib.skylark.util.SkylarkTestCase;
import java.util.List;
import org.junit.Test;
diff --git a/src/test/java/com/google/devtools/build/lib/rules/platform/PlatformTest.java b/src/test/java/com/google/devtools/build/lib/rules/platform/PlatformTest.java
index 5cb0991dfc..1b17491440 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/platform/PlatformTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/platform/PlatformTest.java
@@ -17,11 +17,12 @@ package com.google.devtools.build.lib.rules.platform;
import static com.google.common.truth.Truth.assertThat;
import com.google.common.collect.ImmutableMap;
-import com.google.common.testing.EqualsTester;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
+import com.google.devtools.build.lib.analysis.platform.ConstraintSettingInfo;
+import com.google.devtools.build.lib.analysis.platform.ConstraintValueInfo;
+import com.google.devtools.build.lib.analysis.platform.PlatformInfo;
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.rules.platform.PlatformInfo.DuplicateConstraintException;
import com.google.devtools.build.lib.util.CPU;
import com.google.devtools.build.lib.util.OS;
import org.junit.Before;
@@ -56,7 +57,7 @@ public class PlatformTest extends BuildViewTestCase {
ConfiguredTarget platform = getConfiguredTarget("//constraint:plat1");
assertThat(platform).isNotNull();
- PlatformInfo provider = PlatformInfo.fromTarget(platform);
+ PlatformInfo provider = Platform.platform(platform);
assertThat(provider).isNotNull();
assertThat(provider.constraints()).hasSize(1);
ConstraintSettingInfo constraintSetting =
@@ -88,7 +89,7 @@ public class PlatformTest extends BuildViewTestCase {
ConfiguredTarget platform = getConfiguredTarget("//host:host_platform");
assertThat(platform).isNotNull();
- PlatformInfo provider = PlatformInfo.fromTarget(platform);
+ PlatformInfo provider = Platform.platform(platform);
assertThat(provider).isNotNull();
// Check the CPU and OS.
@@ -134,7 +135,7 @@ public class PlatformTest extends BuildViewTestCase {
ConfiguredTarget platform = getConfiguredTarget("//constraint/remote:plat_remote");
assertThat(platform).isNotNull();
- PlatformInfo provider = PlatformInfo.fromTarget(platform);
+ PlatformInfo provider = Platform.platform(platform);
assertThat(provider).isNotNull();
assertThat(provider.remoteExecutionProperties())
.containsExactlyEntriesIn(ImmutableMap.of("foo", "val1", "bar", "val2"));
@@ -175,52 +176,4 @@ public class PlatformTest extends BuildViewTestCase {
assertThat(valueLabel).isNotNull();
assertThat(valueLabel).isEqualTo(makeLabel("//constraint:foo"));
}
-
- @Test
- public void platformInfo_overlappingConstraintsError() throws DuplicateConstraintException {
- ConstraintSettingInfo setting = ConstraintSettingInfo.create(makeLabel("//constraint:basic"));
-
- ConstraintValueInfo value1 = ConstraintValueInfo.create(setting, makeLabel("//constraint:foo"));
- ConstraintValueInfo value2 = ConstraintValueInfo.create(setting, makeLabel("//constraint:bar"));
-
- PlatformInfo.Builder builder =
- PlatformInfo.builder().addConstraint(value1).addConstraint(value2);
-
- expectedException.expect(DuplicateConstraintException.class);
- expectedException.expectMessage(
- "Duplicate constraint_values for constraint_setting //constraint:basic: "
- + "//constraint:foo, //constraint:bar");
- builder.build();
- }
-
- @Test
- public void platformInfo_equalsTester() throws DuplicateConstraintException {
- ConstraintSettingInfo setting1 = ConstraintSettingInfo.create(makeLabel("//constraint:basic"));
- ConstraintSettingInfo setting2 = ConstraintSettingInfo.create(makeLabel("//constraint:other"));
-
- ConstraintValueInfo value1 =
- ConstraintValueInfo.create(setting1, makeLabel("//constraint:value1"));
- ConstraintValueInfo value2 =
- ConstraintValueInfo.create(setting2, makeLabel("//constraint:value2"));
- ConstraintValueInfo value3 =
- ConstraintValueInfo.create(setting2, makeLabel("//constraint:value3"));
-
- new EqualsTester()
- .addEqualityGroup(
- // Base case.
- PlatformInfo.builder().addConstraint(value1).addConstraint(value2).build(),
- PlatformInfo.builder().addConstraint(value1).addConstraint(value2).build(),
- PlatformInfo.builder()
- .addConstraint(value1)
- .addConstraint(value2)
- .addRemoteExecutionProperty("key", "val") // execution properties are ignored.
- .build())
- .addEqualityGroup(
- // Extra constraint.
- PlatformInfo.builder().addConstraint(value1).addConstraint(value3).build())
- .addEqualityGroup(
- // Missing constraint.
- PlatformInfo.builder().addConstraint(value1).build())
- .testEquals();
- }
}