diff options
Diffstat (limited to 'src/test/java')
4 files changed, 82 insertions, 39 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/BUILD b/src/test/java/com/google/devtools/build/lib/BUILD index 4e14f536be..05e709a7bf 100644 --- a/src/test/java/com/google/devtools/build/lib/BUILD +++ b/src/test/java/com/google/devtools/build/lib/BUILD @@ -358,6 +358,18 @@ java_library( ], ) +java_library( + name = "integration_testutil", + srcs = glob([ + "integration/util/*.java", + ]), + deps = [ + ":testutil", + "//src/main/java/com/google/devtools/build/lib:build-base", + "//src/main/java/com/google/devtools/build/lib:vfs", + ], +) + java_test( name = "analysis_actions_test", srcs = glob([ @@ -1074,6 +1086,7 @@ java_test( ":actions_testutil", ":analysis_testutil", ":foundations_testutil", + ":integration_testutil", ":testutil", "//src/main/java/com/google/devtools/build/lib:bazel-rules", "//src/main/java/com/google/devtools/build/lib:build-base", diff --git a/src/test/java/com/google/devtools/build/lib/integration/util/IntegrationMock.java b/src/test/java/com/google/devtools/build/lib/integration/util/IntegrationMock.java new file mode 100644 index 0000000000..5b497450b3 --- /dev/null +++ b/src/test/java/com/google/devtools/build/lib/integration/util/IntegrationMock.java @@ -0,0 +1,66 @@ +// Copyright 2014 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.integration.util; + +import com.google.devtools.build.lib.analysis.BlazeDirectories; +import com.google.devtools.build.lib.analysis.config.BinTools; +import com.google.devtools.build.lib.testutil.BlazeTestUtils; +import com.google.devtools.build.lib.testutil.TestConstants; +import com.google.devtools.build.lib.vfs.FileSystemUtils; +import com.google.devtools.build.lib.vfs.Path; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collection; + +/** + * Performs setup for integration tests. + */ +public class IntegrationMock { + public static IntegrationMock get() { + return new IntegrationMock(); + } + + /** + * Populates the _embedded_binaries/ directory, containing all binaries/libraries, by symlinking + * directories#getEmbeddedBinariesRoot() to the test's runfiles tree. + */ + public BinTools getIntegrationBinTools(BlazeDirectories directories) throws IOException { + Path embeddedDir = directories.getEmbeddedBinariesRoot(); + FileSystemUtils.createDirectoryAndParents(embeddedDir); + + Path runfiles = directories.getFileSystem().getPath(BlazeTestUtils.runfilesDir()); + // Copy over everything in embedded_scripts. + Collection<Path> files = new ArrayList<>(); + for (String embeddedScriptPath : TestConstants.EMBEDDED_SCRIPTS_PATHS) { + Path embeddedScripts = runfiles.getRelative(embeddedScriptPath); + if (embeddedScripts.exists()) { + files.addAll(embeddedScripts.getDirectoryEntries()); + } else { + System.err.println("test does not have " + embeddedScripts); + } + } + + for (Path fromFile : files) { + try { + embeddedDir.getChild(fromFile.getBaseName()).createSymbolicLink(fromFile); + } catch (IOException e) { + System.err.println("Could not symlink: " + e.getMessage()); + } + } + + return BinTools.forIntegrationTesting( + directories, embeddedDir.toString(), TestConstants.EMBEDDED_TOOLS); + } +} diff --git a/src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java b/src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java index 39d1a374a2..4237114600 100644 --- a/src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java +++ b/src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java @@ -36,8 +36,8 @@ import com.google.devtools.build.lib.events.PrintingEventHandler; import com.google.devtools.build.lib.events.Reporter; import com.google.devtools.build.lib.exec.ExecutionOptions; import com.google.devtools.build.lib.exec.SingleBuildFileCache; +import com.google.devtools.build.lib.integration.util.IntegrationMock; import com.google.devtools.build.lib.rules.apple.AppleConfiguration; -import com.google.devtools.build.lib.testutil.BlazeTestUtils; import com.google.devtools.build.lib.testutil.TestFileOutErr; import com.google.devtools.build.lib.testutil.TestUtils; import com.google.devtools.build.lib.util.BlazeClock; @@ -88,7 +88,8 @@ public class StandaloneSpawnStrategyTest { BlazeDirectories directories = new BlazeDirectories(outputBase, outputBase, workspaceDir, "mock-product-name"); - BlazeTestUtils.getIntegrationBinTools(directories); + // This call implicitly symlinks the integration bin tools into the exec root. + IntegrationMock.get().getIntegrationBinTools(directories); OptionsParser optionsParser = OptionsParser.newOptionsParser(ExecutionOptions.class); optionsParser.parse("--verbose_failures"); diff --git a/src/test/java/com/google/devtools/build/lib/testutil/BlazeTestUtils.java b/src/test/java/com/google/devtools/build/lib/testutil/BlazeTestUtils.java index 6c5b83fe35..d4b66a120a 100644 --- a/src/test/java/com/google/devtools/build/lib/testutil/BlazeTestUtils.java +++ b/src/test/java/com/google/devtools/build/lib/testutil/BlazeTestUtils.java @@ -18,18 +18,13 @@ import com.google.common.base.Function; import com.google.common.base.Joiner; import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; -import com.google.devtools.build.lib.analysis.BlazeDirectories; -import com.google.devtools.build.lib.analysis.config.BinTools; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.cmdline.LabelSyntaxException; import com.google.devtools.build.lib.util.Preconditions; import com.google.devtools.build.lib.vfs.FileSystemUtils; import com.google.devtools.build.lib.vfs.Path; - import java.io.File; import java.io.IOException; -import java.util.ArrayList; -import java.util.Collection; import java.util.List; /** @@ -40,38 +35,6 @@ public class BlazeTestUtils { private BlazeTestUtils() {} /** - * Populates the _embedded_binaries/ directory, containing all binaries/libraries, by symlinking - * directories#getEmbeddedBinariesRoot() to the test's runfiles tree. - */ - public static BinTools getIntegrationBinTools(BlazeDirectories directories) throws IOException { - Path embeddedDir = directories.getEmbeddedBinariesRoot(); - FileSystemUtils.createDirectoryAndParents(embeddedDir); - - Path runfiles = directories.getFileSystem().getPath(BlazeTestUtils.runfilesDir()); - // Copy over everything in embedded_scripts. - Collection<Path> files = new ArrayList<>(); - for (String embeddedScriptPath : TestConstants.EMBEDDED_SCRIPTS_PATHS) { - Path embeddedScripts = runfiles.getRelative(embeddedScriptPath); - if (embeddedScripts.exists()) { - files.addAll(embeddedScripts.getDirectoryEntries()); - } else { - System.err.println("test does not have " + embeddedScripts); - } - } - - for (Path fromFile : files) { - try { - embeddedDir.getChild(fromFile.getBaseName()).createSymbolicLink(fromFile); - } catch (IOException e) { - System.err.println("Could not symlink: " + e.getMessage()); - } - } - - return BinTools.forIntegrationTesting( - directories, embeddedDir.toString(), TestConstants.EMBEDDED_TOOLS); - } - - /** * Writes a FilesetRule to a String array. * * @param name the name of the rule. |