From 7304185e722d08a922e3abe493099f85ae35ac4f Mon Sep 17 00:00:00 2001 From: Fabian Meumertzheim Date: Thu, 18 Aug 2022 17:42:04 +0200 Subject: [PATCH] WIP: Add test --- .../google/devtools/build/lib/analysis/BUILD | 15 ++++ .../analysis/RunfilesLibraryUsersTest.java | 75 +++++++++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 src/test/java/com/google/devtools/build/lib/analysis/RunfilesLibraryUsersTest.java diff --git a/src/test/java/com/google/devtools/build/lib/analysis/BUILD b/src/test/java/com/google/devtools/build/lib/analysis/BUILD index 7be1be40f60236..f07f72929c277d 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/BUILD +++ b/src/test/java/com/google/devtools/build/lib/analysis/BUILD @@ -400,6 +400,21 @@ java_test( ], ) +java_test( + name = "RunfilesLibraryUsersTest", + srcs = ["RunfilesLibraryUsersTest.java"], + deps = [ + "//src/main/java/com/google/devtools/build/lib/actions", + "//src/main/java/com/google/devtools/build/lib/analysis:analysis_cluster", + "//src/main/java/com/google/devtools/build/lib/analysis:configured_target", + "//src/main/java/com/google/devtools/build/lib/cmdline", + "//src/main/java/com/google/devtools/build/lib/events", + "//src/test/java/com/google/devtools/build/lib/buildtool/util", + "//third_party:junit4", + "//third_party:truth", + ], +) + test_suite( name = "AllAnalysisTests", tests = [ diff --git a/src/test/java/com/google/devtools/build/lib/analysis/RunfilesLibraryUsersTest.java b/src/test/java/com/google/devtools/build/lib/analysis/RunfilesLibraryUsersTest.java new file mode 100644 index 00000000000000..76f5e93e58f4f8 --- /dev/null +++ b/src/test/java/com/google/devtools/build/lib/analysis/RunfilesLibraryUsersTest.java @@ -0,0 +1,75 @@ +// Copyright 2020 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; + +import static com.google.common.truth.Truth.assertThat; + +import com.google.devtools.build.lib.analysis.RunfilesProvider.RepositoryNameAndMapping; +import com.google.devtools.build.lib.buildtool.util.BuildIntegrationTestCase; +import com.google.devtools.build.lib.cmdline.RepositoryMapping; +import com.google.devtools.build.lib.cmdline.RepositoryName; +import java.util.Map; +import java.util.stream.Collectors; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +@RunWith(JUnit4.class) +public final class RunfilesLibraryUsersTest extends BuildIntegrationTestCase { + + @Before + public void setupWorkspace() throws Exception { + write("WORKSPACE", "workspace(name = 'my_workspace')"); + write("common/rules.bzl", + "def fake_runfiles_library_impl(ctx):", + " return [", + " CcInfo(),", + " JavaInfo(),", + " PyInfo(),", + " RunfilesLibraryInfo(),", + " ]", + "fake_runfiles_library = rule(implementation = fake_runfiles_library_impl)" + ); + write("common/BUILD.bazel", + "load(':rules.bzl', 'fake_runfiles_library')", + "fake_runfiles_library(name = 'runfiles_lib')" + ); + write("pkg/java/BUILD.bazel", + "java_library(", + " name = 'lib',", + " srcs = ['Lib.java'],", + " runtime_deps = ['//common:runfiles_lib'],", + ")" + ); + } + + @Test + public void testNoRunfilesLibraryUsers() throws Exception { + assertThat(getRunfilesLibraryUsers("//pkg/java:lib").keySet()).containsExactly( + RepositoryName.MAIN); + } + + private Map getRunfilesLibraryUsers(String label) + throws Exception { + ConfiguredTarget target = getConfiguredTarget(label); + RunfilesProvider runfilesProvider = target.getProvider(RunfilesProvider.class); + + assertThat(runfilesProvider).isNotNull(); + assertThat(runfilesProvider.getRunfilesLibraryUsers()).isNotNull(); + return runfilesProvider.getRunfilesLibraryUsers().toList().stream().collect( + Collectors.toMap(RepositoryNameAndMapping::getRepositoryName, + RepositoryNameAndMapping::getRepositoryMapping)); + } +}