blob: 6aa9d21c2653d7c4c0953559eb06e3b8177bc8bb [file] [log] [blame]
// 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.python;
import static com.google.devtools.build.lib.testutil.TestConstants.RULES_PYTHON_PACKAGE_ROOT;
import static org.junit.Assume.assumeTrue;
import com.google.devtools.build.lib.testutil.TestConstants;
/** Helpers for Python tests. */
public class PythonTestUtils {
// Static utilities class.
private PythonTestUtils() {}
/**
* Skips the test if the product isn't bazel. This is mostly to skip tests for py2 support that
* the Google implementation would otherwise fail on.
*/
public static void assumeIsBazel() {
assumeTrue(TestConstants.PRODUCT_NAME.equals("bazel")); // Google has py2 disabled.
}
/**
* Stub method that is used to annotate that the calling test case assumes the default Python
* version is PY2.
*
* <p>Marking test cases that depend on the default Python version helps to diagnose failures. It
* also helps guard against accidentally making the test spuriously pass, e.g. if the expected
* value becomes the same as the default value..
*/
public static void assumesDefaultIsPY2() {
// No-op.
}
/** Same as {@link #assumesDefaultIsPY2}, but for PY3. */
public static void assumesDefaultIsPY3() {
// No-op.
}
public static String getPyLoad(String symbolName) {
if (RULES_PYTHON_PACKAGE_ROOT.isEmpty()) {
if (symbolName.equals("py_runtime_pair")) {
return String.format(
"load('%s//tools/python:toolchain.bzl', 'py_runtime_pair')",
TestConstants.TOOLS_REPOSITORY);
} else {
return "";
}
}
String bzlFilename;
switch (symbolName) {
case "PyInfo":
bzlFilename = "py_info.bzl";
break;
case "PyRuntimeInfo":
bzlFilename = "py_runtime_info.bzl";
break;
default:
bzlFilename = symbolName + ".bzl";
}
return String.format(
"load('%s/python:%s', '%s')", RULES_PYTHON_PACKAGE_ROOT, bzlFilename, symbolName);
}
}