com.google.devtools.build.lib.packages.Package - java examples

Here are the examples of the java api com.google.devtools.build.lib.packages.Package taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.

83 Examples 7

19 View Complete Implementation : WorkspaceFileFunctionTest.java
Copyright Apache License 2.0
Author : bazelbuild
private Label getLabelMapping(Package pkg, String name) throws NoSuchTargetException {
    return (Label) ((Rule) pkg.getTarget(name)).getAttributeContainer().getAttr("actual");
}

19 View Complete Implementation : PackageValue.java
Copyright Apache License 2.0
Author : bazelbuild
/**
 * A Skyframe value representing a package.
 */
@AutoCodec(explicitlyAllowClreplaced = Package.clreplaced)
@Immutable
@ThreadSafe
public clreplaced PackageValue implements NotComparableSkyValue {

    private final Package pkg;

    public PackageValue(Package pkg) {
        this.pkg = Preconditions.checkNotNull(pkg);
    }

    /**
     * Returns the package. This package may contain errors, in which case the caller should throw
     * a {@link BuildFileContainsErrorsException} if an error-free package is needed. See also
     * {@link PackageErrorFunction} for the case where encountering a package with errors should shut
     * down the build but the caller can handle packages with errors.
     */
    public Package getPackage() {
        return pkg;
    }

    @Override
    public String toString() {
        return "<PackageValue name=" + pkg.getName() + ">";
    }

    public static Key key(PackageIdentifier pkgIdentifier) {
        Preconditions.checkArgument(!pkgIdentifier.getRepository().isDefault());
        return Key.create(pkgIdentifier);
    }

    /**
     * Skyframe key for packages
     */
    @AutoCodec.VisibleForSerialization
    @AutoCodec
    public static clreplaced Key extends AbstractSkyKey<PackageIdentifier> {

        private static final Interner<Key> interner = BlazeInterners.newWeakInterner();

        private Key(PackageIdentifier arg) {
            super(arg);
        }

        @AutoCodec.VisibleForSerialization
        @AutoCodec.Instantiator
        static Key create(PackageIdentifier arg) {
            return interner.intern(new Key(arg));
        }

        @Override
        public SkyFunctionName functionName() {
            return SkyFunctions.PACKAGE;
        }
    }

    public static List<SkyKey> keys(Iterable<PackageIdentifier> pkgIdentifiers) {
        List<SkyKey> keys = new ArrayList<>();
        for (PackageIdentifier pkgIdentifier : pkgIdentifiers) {
            keys.add(key(pkgIdentifier));
        }
        return keys;
    }
}

19 View Complete Implementation : BlazeQueryEnvironment.java
Copyright Apache License 2.0
Author : bazelbuild
private Node<Target> getLoadTarget(Label label, Package pkg) {
    return getNode(new FakeLoadTarget(label, pkg));
}

19 View Complete Implementation : IncrementalLoadingTest.java
Copyright Apache License 2.0
Author : bazelbuild
@Test
public void testIrrelevantFileInSubdirDoesntReloadPackage() throws Exception {
    tester.addFile("pkg/BUILD", "sh_library(name = 'pkg', srcs = glob(['**/*.sh']))");
    tester.addFile("pkg/pkg.sh", "#!/bin/bash");
    tester.addFile("pkg/bar/bar.sh", "#!/bin/bash");
    Package pkg = tester.getTarget("//pkg:pkg").getPackage();
    // Write file in directory to force reload of top-level glob.
    tester.addFile("pkg/irrelevant_file");
    // Subglob is also reloaded.
    tester.addFile("pkg/bar/irrelevant_file");
    replacedertThat(tester.getTarget("//pkg:pkg").getPackage()).isSameInstanceAs(pkg);
}

19 View Complete Implementation : TargetPatternResolverUtil.java
Copyright Apache License 2.0
Author : bazelbuild
public static Collection<Target> resolvePackageTargets(Package pkg, FilteringPolicy policy) {
    if (policy == FilteringPolicies.NO_FILTER) {
        return pkg.getTargets().values();
    }
    CompactHashSet<Target> builder = CompactHashSet.create();
    for (Target target : pkg.getTargets().values()) {
        if (policy.shouldRetain(target, false)) {
            builder.add(target);
        }
    }
    return builder;
}

19 View Complete Implementation : NullAspectResolver.java
Copyright Apache License 2.0
Author : bazelbuild
@Override
public Set<Label> computeBuildFileDependencies(Package pkg) {
    return ImmutableSet.copyOf(pkg.getSkylarkFileDependencies());
}

19 View Complete Implementation : BazelPackageBuilderHelperForTesting.java
Copyright Apache License 2.0
Author : bazelbuild
@Override
public void onLoadingComplete(Package pkg, StarlarkSemantics starlarkSemantics, long loadTimeNanos) {
    sanityCheckBazelPackageLoader(pkg, ruleClreplacedProvider, starlarkSemantics);
}

19 View Complete Implementation : FakeLoadTarget.java
Copyright Apache License 2.0
Author : bazelbuild
/**
 * A fake Target - Use only so that "blaze query" can report Load files as Targets.
 */
public clreplaced FakeLoadTarget implements Target {

    private final Label label;

    private final Package pkg;

    public FakeLoadTarget(Label label, Package pkg) {
        this.label = Preconditions.checkNotNull(label);
        this.pkg = Preconditions.checkNotNull(pkg);
    }

    @Override
    public Label getLabel() {
        return label;
    }

    @Override
    public String getName() {
        return label.getName();
    }

    @Override
    public Package getPackage() {
        return pkg;
    }

    @Override
    public String getTargetKind() {
        return targetKind();
    }

    @Override
    public Rule getreplacedociatedRule() {
        return null;
    }

    @Override
    public License getLicense() {
        throw new UnsupportedOperationException();
    }

    @Override
    public Location getLocation() {
        return pkg.getBuildFile().getLocation();
    }

    @Override
    public Set<License.DistributionType> getDistributions() {
        return ImmutableSet.of();
    }

    @Override
    public RuleVisibility getVisibility() {
        return ConstantRuleVisibility.PUBLIC;
    }

    @Override
    public boolean isConfigurable() {
        return true;
    }

    @Override
    public String toString() {
        return label.toString();
    }

    @Override
    public int hashCode() {
        return Objects.hash(label, pkg);
    }

    @Override
    public boolean equals(Object obj) {
        if (!(obj instanceof FakeLoadTarget)) {
            return false;
        }
        FakeLoadTarget other = (FakeLoadTarget) obj;
        return label.equals(other.label) && pkg.equals(other.pkg);
    }

    /**
     * Returns the target kind for all fake sub-include targets.
     */
    public static String targetKind() {
        return "source file";
    }
}

19 View Complete Implementation : CircularDependencyTest.java
Copyright Apache License 2.0
Author : bazelbuild
/**
 * Test not to detect implicit input/output file overlap in rules,
 * when coming from a different package.
 */
@Test
public void testInputOutputConflictDifferentPackage() throws Exception {
    Package pkg = createScratchPackageForImplicitCycle("googledata/xxx", "genrule(name='geo',", "    srcs = ['//googledata/geo:geo_info.txt'],", "    outs = ['geoinfo.txt'],", "    cmd = '$(SRCS) > $@')");
    replacedertThat(pkg.containsErrors()).isFalse();
}

19 View Complete Implementation : CircularDependencyTest.java
Copyright Apache License 2.0
Author : bazelbuild
/**
 * Test to detect implicit input/output file overlap in rules.
 */
@Test
public void testOneRuleImplicitCycleJava() throws Exception {
    Package pkg = createScratchPackageForImplicitCycle("cycle", "java_library(name='jcyc',", "      srcs = ['libjcyc.jar', 'foo.java'])");
    replacedertThrows(NoSuchTargetException.clreplaced, () -> pkg.getTarget("jcyc"));
    replacedertThat(pkg.containsErrors()).isTrue();
    replacedertContainsEvent("rule 'jcyc' has file 'libjcyc.jar' as both an" + " input and an output");
}

18 View Complete Implementation : Lib.java
Copyright Apache License 2.0
Author : bazelbuild
public static void printPackageContents(PackageLoader loader, String packageName) throws NoSuchPackageException, InterruptedException {
    logger.info("Start of 'load'");
    Package pkg = loader.loadPackage(PackageIdentifier.createInMainRepo(packageName));
    for (Target target : pkg.getTargets().values()) {
        if (target instanceof Rule) {
            System.out.println(((Rule) target).getLabel());
        }
    }
    logger.info("End of 'load'");
}

18 View Complete Implementation : ConservativeAspectResolver.java
Copyright Apache License 2.0
Author : bazelbuild
@Override
public Set<Label> computeBuildFileDependencies(Package pkg) {
    // We do a conservative estimate precisely so that we don't depend on any other BUILD files.
    return ImmutableSet.copyOf(pkg.getSkylarkFileDependencies());
}

18 View Complete Implementation : RegisteredToolchainsFunction.java
Copyright Apache License 2.0
Author : bazelbuild
/**
 * Loads the external package and then returns the registered toolchains.
 *
 * @param env the environment to use for lookups
 */
@Nullable
@VisibleForTesting
public static List<String> getRegisteredToolchains(Environment env) throws InterruptedException {
    PackageValue externalPackageValue = (PackageValue) env.getValue(PackageValue.key(LabelConstants.EXTERNAL_PACKAGE_IDENTIFIER));
    if (externalPackageValue == null) {
        return null;
    }
    Package externalPackage = externalPackageValue.getPackage();
    return externalPackage.getRegisteredToolchains();
}

18 View Complete Implementation : PackageCacheTest.java
Copyright Apache License 2.0
Author : bazelbuild
/**
 * A missing package is one for which no BUILD file can be found. The PackageCache caches failures
 * of this kind until the next sync.
 */
@Test
public void testRepeatedAttemptsToParseMissingPackage() throws Exception {
    checkGetPackageFails("missing", "no such package 'missing': " + "BUILD file not found");
    // Still missing:
    checkGetPackageFails("missing", "no such package 'missing': " + "BUILD file not found");
    // Update the BUILD file on disk so "missing" is no longer missing:
    scratch.file("missing/BUILD", "# an ok build file");
    // Still missing:
    checkGetPackageFails("missing", "no such package 'missing': " + "BUILD file not found");
    invalidatePackages();
    // Found:
    Package missing = getPackage("missing");
    replacedertThat(missing.getName()).isEqualTo("missing");
}

18 View Complete Implementation : PackageCacheTest.java
Copyright Apache License 2.0
Author : bazelbuild
private void replacedertPackageLoadingFails(String pkgName, String expectedError) throws Exception {
    Package pkg = getPackage(pkgName);
    replacedertThat(pkg.containsErrors()).isTrue();
    replacedertContainsEvent(expectedError);
}

18 View Complete Implementation : PackageCacheTest.java
Copyright Apache License 2.0
Author : bazelbuild
@Test
public void testASTIsNotRetained() throws Exception {
    createPkg1();
    Package pkg1 = getPackage("pkg1");
    Morereplacederts.replacedertInstanceOfNotReachable(pkg1, StarlarkFile.clreplaced);
}

17 View Complete Implementation : CollectTargetsInPackageFunction.java
Copyright Apache License 2.0
Author : bazelbuild
@Nullable
@Override
public SkyValue compute(SkyKey skyKey, Environment env) throws SkyFunctionException, InterruptedException {
    CollectTargetsInPackageValue.CollectTargetsInPackageKey argument = (CollectTargetsInPackageValue.CollectTargetsInPackageKey) skyKey.argument();
    PackageIdentifier packageId = argument.getPackageId();
    PackageValue packageValue = (PackageValue) env.getValue(PackageValue.key(packageId));
    if (env.valuesMissing()) {
        return null;
    }
    Package pkg = packageValue.getPackage();
    if (pkg.containsErrors()) {
        env.getListener().handle(Event.error("package contains errors: " + packageId.getPackageFragment().getPathString()));
    }
    env.getValues(Iterables.transform(TargetPatternResolverUtil.resolvePackageTargets(pkg, argument.getFilteringPolicy()), TO_TRANSITIVE_TRAVERSAL_KEY));
    if (env.valuesMissing()) {
        return null;
    }
    return CollectTargetsInPackageValue.INSTANCE;
}

17 View Complete Implementation : PackageErrorFunction.java
Copyright Apache License 2.0
Author : bazelbuild
@Nullable
@Override
public SkyValue compute(SkyKey skyKey, Environment env) throws PackageErrorFunctionException, InterruptedException {
    PackageIdentifier packageIdentifier = (PackageIdentifier) skyKey.argument();
    try {
        SkyKey packageKey = PackageValue.key(packageIdentifier);
        // Callers must have tried to load the package already and gotten the package successfully.
        Package pkg = ((PackageValue) env.getValueOrThrow(packageKey, NoSuchPackageException.clreplaced)).getPackage();
        Preconditions.checkState(pkg.containsErrors(), skyKey);
        throw new PackageErrorFunctionException(new BuildFileContainsErrorsException(packageIdentifier), Transience.PERSISTENT);
    } catch (NoSuchPackageException e) {
        throw new IllegalStateException("Function should not have been called on package with exception", e);
    }
}

17 View Complete Implementation : PackageErrorMessageFunction.java
Copyright Apache License 2.0
Author : bazelbuild
@Nullable
@Override
public SkyValue compute(SkyKey skyKey, Environment env) throws InterruptedException {
    PackageIdentifier pkgId = (PackageIdentifier) skyKey.argument();
    PackageValue pkgValue;
    try {
        pkgValue = (PackageValue) env.getValueOrThrow(PackageValue.key(pkgId), NoSuchPackageException.clreplaced);
    } catch (NoSuchPackageException e) {
        return PackageErrorMessageValue.ofNoSuchPackageException(e.getMessage());
    }
    if (pkgValue == null) {
        return null;
    }
    Package pkg = pkgValue.getPackage();
    return pkg.containsErrors() ? PackageErrorMessageValue.ofPackageWithErrors() : PackageErrorMessageValue.ofPackageWithNoErrors();
}

17 View Complete Implementation : RegisteredExecutionPlatformsFunction.java
Copyright Apache License 2.0
Author : bazelbuild
/**
 * Loads the external package and then returns the registered execution platform labels.
 *
 * @param env the environment to use for lookups
 */
@Nullable
@VisibleForTesting
public static List<String> getWorkspaceExecutionPlatforms(Environment env) throws InterruptedException {
    PackageValue externalPackageValue = (PackageValue) env.getValue(PackageValue.key(LabelConstants.EXTERNAL_PACKAGE_IDENTIFIER));
    if (externalPackageValue == null) {
        return null;
    }
    Package externalPackage = externalPackageValue.getPackage();
    return externalPackage.getRegisteredExecutionPlatforms();
}

17 View Complete Implementation : RepositoryMappingFunction.java
Copyright Apache License 2.0
Author : bazelbuild
@Nullable
@Override
public SkyValue compute(SkyKey skyKey, Environment env) throws SkyFunctionException, InterruptedException {
    SkyKey externalPackageKey = PackageValue.key(LabelConstants.EXTERNAL_PACKAGE_IDENTIFIER);
    PackageValue externalPackageValue = (PackageValue) env.getValue(externalPackageKey);
    if (env.valuesMissing()) {
        return null;
    }
    Package externalPackage = externalPackageValue.getPackage();
    if (externalPackage.containsErrors()) {
        throw new RepositoryMappingFunctionException();
    }
    ImmutableMap<RepositoryName, RepositoryName> mapping = externalPackage.getRepositoryMapping((RepositoryName) skyKey.argument());
    return RepositoryMappingValue.withMapping(mapping);
}

17 View Complete Implementation : TargetPatternsResultBuilder.java
Copyright Apache License 2.0
Author : bazelbuild
private Target getExistingTarget(Label label) {
    Package pkg = Preconditions.checkNotNull(packages.get(label.getPackageIdentifier()), label);
    try {
        return pkg.getTarget(label.getName());
    } catch (NoSuchTargetException e) {
        // This exception should not raise, because we are processing it during TargetPatternValues
        // evaluation in SkyframeTargetPatternEvaluator#parseTargetPatternKeys and values with errors
        // are not added to final result.
        throw new IllegalStateException(e);
    }
}

17 View Complete Implementation : WorkspaceNameFunction.java
Copyright Apache License 2.0
Author : bazelbuild
@Override
@Nullable
public SkyValue compute(SkyKey skyKey, Environment env) throws InterruptedException, WorkspaceNameFunctionException {
    SkyKey externalPackageKey = PackageValue.key(LabelConstants.EXTERNAL_PACKAGE_IDENTIFIER);
    PackageValue externalPackageValue = (PackageValue) env.getValue(externalPackageKey);
    if (externalPackageValue == null) {
        return null;
    }
    Package externalPackage = externalPackageValue.getPackage();
    if (externalPackage.containsErrors()) {
        throw new WorkspaceNameFunctionException();
    }
    return WorkspaceNameValue.withName(externalPackage.getWorkspaceName());
}

17 View Complete Implementation : PackageFactoryTestBase.java
Copyright Apache License 2.0
Author : bazelbuild
/**
 * *****************************************************************
 *                                                                   *
 *               Test "glob" function in build language              *
 *                                                                   *
 * ******************************************************************
 */
protected void replacedertGlobFails(String globCallExpression, String expectedError) throws Exception {
    Package pkg = buildPackageWithGlob(globCallExpression);
    events.replacedertContainsError(expectedError);
    replacedertThat(pkg.containsErrors()).isTrue();
}

17 View Complete Implementation : PackageFactoryTestBase.java
Copyright Apache License 2.0
Author : bazelbuild
protected static void replacedertEvaluates(Package pkg, List<String> expected, String... include) throws Exception {
    replacedertEvaluates(pkg, expected, ImmutableList.copyOf(include), Collections.<String>emptyList());
}

17 View Complete Implementation : PackageFactoryTestBase.java
Copyright Apache License 2.0
Author : bazelbuild
protected boolean isValidPackageName(String packageName) throws Exception {
    // Write a license decl just in case it's a third_party package:
    Path buildFile = scratch.file(getPathPrefix() + "/" + packageName + "/BUILD", "licenses(['notice'])");
    Package pkg = packages.createPackage(packageName, RootedPath.toRootedPath(root, buildFile));
    return !pkg.containsErrors();
}

17 View Complete Implementation : PackageFactoryTestBase.java
Copyright Apache License 2.0
Author : bazelbuild
protected static void replacedertEvaluates(Package pkg, List<String> expected, List<String> include, List<String> exclude) throws Exception {
    GlobCache globCache = new GlobCache(pkg.getFilename().asPath().getParentDirectory(), pkg.getPackageIdentifier(), ImmutableSet.of(), PackageFactoryApparatus.createEmptyLocator(), null, TestUtils.getPool(), -1);
    replacedertThat(globCache.globUnsorted(include, exclude, false, true)).containsExactlyElementsIn(expected);
}

17 View Complete Implementation : BuildFileModificationTest.java
Copyright Apache License 2.0
Author : bazelbuild
@Test
public void testTouchedBuildFileCausesReloadAfterSync() throws Exception {
    Path path = scratch.file("pkg/BUILD", "cc_library(name = 'foo')");
    Package oldPkg = getPackage("pkg");
    // Change ctime to 1.
    clock.advanceMillis(1);
    path.setLastModifiedTime(1001);
    // change not yet visible
    replacedertThat(getPackage("pkg")).isSameInstanceAs(oldPkg);
    invalidatePackages();
    Package newPkg = getPackage("pkg");
    replacedertThat(newPkg).isNotSameInstanceAs(oldPkg);
}

17 View Complete Implementation : PackageCacheTest.java
Copyright Apache License 2.0
Author : bazelbuild
@Test
public void testBrokenPackageOnMultiplePackagePathEntries() throws Exception {
    reporter.removeHandler(failFastHandler);
    setOptions("--package_path=.:.");
    scratch.file("x/y/BUILD");
    scratch.file("x/BUILD", "genrule(name = 'x',", "srcs = [],", "outs = ['y/z.h'],", "cmd  = '')");
    Package p = getPackage("x");
    replacedertThat(p.containsErrors()).isTrue();
}

16 View Complete Implementation : RecursivePackageProviderBackedTargetPatternResolver.java
Copyright Apache License 2.0
Author : bazelbuild
@Override
public Collection<Target> getTargetsInPackage(String originalPattern, PackageIdentifier packageIdentifier, boolean rulesOnly) throws TargetParsingException, InterruptedException {
    FilteringPolicy actualPolicy = rulesOnly ? FilteringPolicies.and(FilteringPolicies.RULES_ONLY, policy) : policy;
    try {
        Package pkg = getPackage(packageIdentifier);
        return TargetPatternResolverUtil.resolvePackageTargets(pkg, actualPolicy);
    } catch (NoSuchThingException e) {
        String message = TargetPatternResolverUtil.getParsingErrorMessage(e.getMessage(), originalPattern);
        throw new TargetParsingException(message, e);
    }
}

16 View Complete Implementation : SkyframeBuildView.java
Copyright Apache License 2.0
Author : bazelbuild
/**
 * Returns a map of collected package names to root paths.
 */
private static ImmutableMap<PackageIdentifier, Root> collectPackageRoots(Collection<Package> packages) {
    // Make a map of the package names to their root paths.
    ImmutableMap.Builder<PackageIdentifier, Root> packageRoots = ImmutableMap.builder();
    for (Package pkg : packages) {
        packageRoots.put(pkg.getPackageIdentifier(), pkg.getSourceRoot());
    }
    return packageRoots.build();
}

16 View Complete Implementation : PackageFactoryTestBase.java
Copyright Apache License 2.0
Author : bazelbuild
protected static void replacedertOutputFileForRule(Package pkg, Collection<String> outNames, Rule rule) throws Exception {
    for (String outName : outNames) {
        OutputFile out = (OutputFile) pkg.getTarget(outName);
        replacedertThat(rule.getOutputFiles()).contains(out);
        replacedertThat(out.getGeneratingRule()).isSameInstanceAs(rule);
        replacedertThat(out.getName()).isEqualTo(outName);
        replacedertThat(out.getTargetKind()).isEqualTo("generated file");
    }
    replacedertThat(rule.getOutputFiles()).hreplacedize(outNames.size());
}

16 View Complete Implementation : PackageFactoryTestBase.java
Copyright Apache License 2.0
Author : bazelbuild
protected com.google.devtools.build.lib.packages.Package expectEvalSuccess(String... content) throws InterruptedException, IOException, NoSuchPackageException {
    Path file = scratch.file("pkg/BUILD", content);
    Package pkg = packages.eval("pkg", RootedPath.toRootedPath(root, file));
    replacedertThat(pkg.containsErrors()).isFalse();
    return pkg;
}

16 View Complete Implementation : BuildFileModificationTest.java
Copyright Apache License 2.0
Author : bazelbuild
@Test
public void testLengthChangeDetected() throws Exception {
    reporter.removeHandler(failFastHandler);
    Path build = scratch.file("a/BUILD", "cc_library(name='a', srcs=['a.cc'])".getBytes(StandardCharsets.ISO_8859_1));
    Package a1 = getPackage("a");
    eventCollector.clear();
    // Note that we didn't advance the clock, so ctime/mtime is the same as before.
    // However, the file contents are one byte longer.
    FileSystemUtils.writeContent(build, "cc_library(name='ab', srcs=['a.cc'])".getBytes(StandardCharsets.ISO_8859_1));
    invalidatePackages();
    Package a2 = getPackage("a");
    replacedertThat(a2).isNotSameInstanceAs(a1);
    replacedertNoEvents();
}

16 View Complete Implementation : PackageCacheTest.java
Copyright Apache License 2.0
Author : bazelbuild
@Test
public void testGetPackage() throws Exception {
    createPkg1();
    Package pkg1 = getPackage("pkg1");
    replacedertThat(pkg1.getName()).isEqualTo("pkg1");
    replacedertThat(pkg1.getFilename().asPath().getPathString()).isEqualTo("/workspace/pkg1/BUILD");
    replacedertThat(getPackageManager().getPackage(reporter, PackageIdentifier.createInMainRepo("pkg1"))).isSameInstanceAs(pkg1);
}

16 View Complete Implementation : PackageCacheTest.java
Copyright Apache License 2.0
Author : bazelbuild
/**
 * A broken package is one that exists but contains lexer/parser/evaluator errors. The
 * PackageCache only makes one attempt to parse each package once found.
 *
 * <p>Depending on the strictness of the PackageFactory, parsing a broken package may cause a
 * Package object to be returned (possibly missing some rules) or an exception to be thrown. For
 * this test we need that strict behavior.
 *
 * <p>Note: since the PackageCache.setStrictPackageCreation method was deleted (since it wasn't
 * used by any significant clients) creating a "broken" build file got trickier--syntax errors are
 * not enough. For now, we create an unreadable BUILD file, which will cause an IOException to be
 * thrown. This test seems less valuable than it once did.
 */
@Test
public void testParseBrokenPackage() throws Exception {
    reporter.removeHandler(failFastHandler);
    Path brokenBuildFile = scratch.file("broken/BUILD");
    brokenBuildFile.setReadable(false);
    BuildFileContainsErrorsException e = replacedertThrows(BuildFileContainsErrorsException.clreplaced, () -> getPackage("broken"));
    replacedertThat(e).hasMessageThat().contains("/workspace/broken/BUILD (Permission denied)");
    eventCollector.clear();
    // Update the BUILD file on disk so "broken" is no longer broken:
    scratch.overwriteFile("broken/BUILD", "# an ok build file");
    // resets cache of failures
    invalidatePackages();
    Package broken = getPackage("broken");
    replacedertThat(broken.getName()).isEqualTo("broken");
    replacedertNoEvents();
}

16 View Complete Implementation : BazelPackageLoaderTest.java
Copyright Apache License 2.0
Author : bazelbuild
@Test
public void buildDotBazelForSubpackageCheckDuringGlobbing() throws Exception {
    file("a/BUILD", "filegroup(name = 'fg', srcs = glob(['sub/a.txt']))");
    file("a/sub/a.txt");
    file("a/sub/BUILD.bazel");
    PackageLoader pkgLoader = newPackageLoader();
    PackageIdentifier pkgId = PackageIdentifier.createInMainRepo(PathFragment.create("a"));
    Package aPkg = pkgLoader.loadPackage(pkgId);
    replacedertThat(aPkg.containsErrors()).isFalse();
    replacedertThrows(NoSuchTargetException.clreplaced, () -> aPkg.getTarget("sub/a.txt"));
    replacedertNoEvents(aPkg.getEvents());
    replacedertNoEvents(handler.getEvents());
}

16 View Complete Implementation : WorkspaceFileFunctionTest.java
Copyright Apache License 2.0
Author : bazelbuild
private WorkspaceFileValue parseWorkspaceFileValue(String... lines) throws Exception {
    WorkspaceFileValue workspaceFileValue = parseWorkspaceFileValueImpl(lines);
    Package pkg = workspaceFileValue.getPackage();
    if (pkg.containsErrors()) {
        throw new RuntimeException(Preconditions.checkNotNull(Iterables.getFirst(pkg.getEvents(), null)).getMessage());
    }
    return workspaceFileValue;
}

16 View Complete Implementation : SkylarkRuleContext.java
Copyright Apache License 2.0
Author : bazelbuild
@Override
public String getBuildFileRelativePath() throws EvalException {
    checkMutable("build_file_path");
    Package pkg = ruleContext.getRule().getPackage();
    return pkg.getSourceRoot().relativize(pkg.getBuildFile().getPath()).getPathString();
}

16 View Complete Implementation : StarlarkTransition.java
Copyright Apache License 2.0
Author : bazelbuild
/**
 * Return a target given its label and a set of package values we know to contain the target.
 *
 * <p>This method replacedumes {@code setting} is a valid build setting target or an alias of a build
 * setting target based on checking done in {@code #verifyBuildSettingsAndGetAliases}
 *
 * @param buildSettingPackages packages that include {@code setting}'s package
 */
private static Target getBuildSettingTarget(Map<PackageValue.Key, PackageValue> buildSettingPackages, Label setting) {
    Package buildSettingPackage = buildSettingPackages.get(PackageValue.key(setting.getPackageIdentifier())).getPackage();
    Preconditions.checkNotNull(buildSettingPackage, "Reading build setting for which we don't have a package");
    Target buildSettingTarget;
    try {
        buildSettingTarget = buildSettingPackage.getTarget(setting.getName());
    } catch (NoSuchTargetException e) {
        // This should never happen, see javadoc.
        throw new IllegalStateException(e);
    }
    return buildSettingTarget;
}

15 View Complete Implementation : StarlarkTransition.java
Copyright Apache License 2.0
Author : bazelbuild
/**
 * Given a preliminary set of alleged build setting labels and relevant packages, verify that the
 * given {@link Label}s actually correspond to build setting targets.
 *
 * <p>This method is meant to be run in a loop to handle aliased build settings. It also
 * explicitly bans configured 'actual' values for aliased build settings. Since build settings are
 * used to define configuration, there should be better ways to accomplish disparate
 * configurations than configured aliases. Also from a technical standpoint, it's unclear what
 * configuration is correct to use to resolve configured attributes.
 *
 * @param buildSettingPackages packages that include {@code buildSettingsToVerify}'s packages
 * @param buildSettingsToVerify alleged build setting labels
 * @return a set of "actual" labels of any build settings that are referenced by aliases (note -
 *     if the "actual" value of aliasA is aliasB, this method returns aliasB AKA we only follow
 *     one link in the alias chain per call of this method)
 */
public static ImmutableSet<Label> verifyBuildSettingsAndGetAliases(Map<PackageValue.Key, PackageValue> buildSettingPackages, Set<Label> buildSettingsToVerify) throws TransitionException {
    ImmutableSet.Builder<Label> actualSettingBuilder = new ImmutableSet.Builder<>();
    for (Label allegedBuildSetting : buildSettingsToVerify) {
        Package buildSettingPackage = buildSettingPackages.get(PackageValue.key(allegedBuildSetting.getPackageIdentifier())).getPackage();
        Preconditions.checkNotNull(buildSettingPackage, "Reading build setting for which we don't have a package");
        Target buildSettingTarget;
        try {
            buildSettingTarget = buildSettingPackage.getTarget(allegedBuildSetting.getName());
        } catch (NoSuchTargetException e) {
            throw new TransitionException(e);
        }
        if (buildSettingTarget.getreplacedociatedRule() == null) {
            throw new TransitionException(String.format("attempting to transition on '%s' which is not a" + " build setting", allegedBuildSetting));
        }
        if (buildSettingTarget.getreplacedociatedRule().getRuleClreplaced().equals(Alias.RULE_NAME)) {
            Object actualValue = buildSettingTarget.getreplacedociatedRule().getAttributeContainer().getAttr(Alias.ACTUAL_ATTRIBUTE_NAME);
            if (actualValue instanceof Label) {
                actualSettingBuilder.add((Label) actualValue);
                continue;
            } else if (actualValue instanceof SelectorList) {
                // configured "actual" value
                throw new TransitionException(String.format("attempting to transition on aliased build setting '%s', the actual value of" + " which uses select(). Aliased build settings with configured actual values" + " is not supported.", allegedBuildSetting));
            } else {
                throw new IllegalStateException(String.format("Alias target '%s' with 'actual' attr value not equals to " + "a label or a selectorlist", allegedBuildSetting));
            }
        }
        if (!buildSettingTarget.getreplacedociatedRule().isBuildSetting()) {
            throw new TransitionException(String.format("attempting to transition on '%s' which is not a" + " build setting", allegedBuildSetting));
        }
    }
    return actualSettingBuilder.build();
}

15 View Complete Implementation : PackageFactoryTestBase.java
Copyright Apache License 2.0
Author : bazelbuild
protected void replacedertGlobProducesError(String pattern, boolean errorExpected) throws Exception {
    events.setFailFast(false);
    Package pkg = evaluateGlob(ImmutableList.of(pattern), Collections.<String>emptyList(), false, "").first;
    replacedertThat(pkg.containsErrors()).isEqualTo(errorExpected);
    boolean foundError = false;
    for (Event event : events.collector()) {
        if (event.getMessage().contains("glob")) {
            if (!errorExpected) {
                fail("error not expected for glob pattern " + pattern + ", but got: " + event);
                return;
            }
            foundError = errorExpected;
            break;
        }
    }
    replacedertThat(foundError).isEqualTo(errorExpected);
}

15 View Complete Implementation : BuildFileModificationTest.java
Copyright Apache License 2.0
Author : bazelbuild
@Test
public void testCTimeChangeDetectedWithError() throws Exception {
    reporter.removeHandler(failFastHandler);
    Path build = scratch.file("a/BUILD", "cc_library(name='a', feet='stinky')".getBytes(StandardCharsets.ISO_8859_1));
    Package a1 = getPackage("a");
    replacedertThat(a1.containsErrors()).isTrue();
    replacedertContainsEvent("//a:a: no such attribute 'feet'");
    eventCollector.clear();
    // writeContent updates mtime and ctime. Note that we keep the content length exactly the same.
    clock.advanceMillis(1);
    FileSystemUtils.writeContent(build, "cc_library(name='a', srcs=['a.cc'])".getBytes(StandardCharsets.ISO_8859_1));
    invalidatePackages();
    Package a2 = getPackage("a");
    replacedertThat(a2).isNotSameInstanceAs(a1);
    replacedertThat(a2.containsErrors()).isFalse();
    replacedertNoEvents();
}

15 View Complete Implementation : BuildFileModificationTest.java
Copyright Apache License 2.0
Author : bazelbuild
@Test
public void testCTimeChangeDetected() throws Exception {
    Path path = scratch.file("pkg/BUILD", "cc_library(name = 'foo')\n".getBytes(StandardCharsets.ISO_8859_1));
    Package oldPkg = getPackage("pkg");
    // Note that the content has exactly the same length as before.
    clock.advanceMillis(1);
    FileSystemUtils.writeContent(path, "cc_library(name = 'bar')\n".getBytes(StandardCharsets.ISO_8859_1));
    replacedertThat(getPackage("pkg")).isSameInstanceAs(// Change only becomes visible after invalidatePackages.
    oldPkg);
    invalidatePackages();
    Package newPkg = getPackage("pkg");
    replacedertThat(newPkg).isNotSameInstanceAs(oldPkg);
    replacedertThat(newPkg.getTarget("bar")).isNotNull();
}

14 View Complete Implementation : CompileOneDependencyTransformer.java
Copyright Apache License 2.0
Author : bazelbuild
/**
 * Returns a list of rules in the given package sorted by BUILD file order. When
 * multiple rules depend on a target, we choose the first match in this list (after
 * filtering for preferred dependencies - see below).
 */
private Iterable<Rule> getOrderedRuleList(Package pkg) {
    List<Rule> orderedList = Lists.newArrayList();
    for (Rule rule : pkg.getTargets(Rule.clreplaced)) {
        orderedList.add(rule);
    }
    Collections.sort(orderedList, Comparator.comparing(arg -> arg.getLocation()));
    return orderedList;
}

14 View Complete Implementation : RecursivePackageProviderBackedTargetPatternResolver.java
Copyright Apache License 2.0
Author : bazelbuild
private Map<PackageIdentifier, Collection<Target>> bulkGetTargetsInPackage(String originalPattern, Iterable<PackageIdentifier> pkgIds, FilteringPolicy policy) throws InterruptedException {
    try {
        Map<PackageIdentifier, Package> pkgs = bulkGetPackages(pkgIds);
        if (pkgs.size() != Iterables.size(pkgIds)) {
            throw new IllegalStateException("Bulk package retrieval missing results: " + Sets.difference(ImmutableSet.copyOf(pkgIds), pkgs.keySet()));
        }
        ImmutableMap.Builder<PackageIdentifier, Collection<Target>> result = ImmutableMap.builder();
        for (PackageIdentifier pkgId : pkgIds) {
            Package pkg = pkgs.get(pkgId);
            result.put(pkgId, TargetPatternResolverUtil.resolvePackageTargets(pkg, policy));
        }
        return result.build();
    } catch (NoSuchThingException e) {
        String message = TargetPatternResolverUtil.getParsingErrorMessage(e.getMessage(), originalPattern);
        throw new IllegalStateException("Mismatch: Expected given pkgIds to correspond to valid Packages. " + message, e);
    }
}

14 View Complete Implementation : TransitiveTargetFunction.java
Copyright Apache License 2.0
Author : bazelbuild
@Nullable
@Override
protected AdvertisedProviderSet getAdvertisedProviderSet(Label toLabel, @Nullable ValueOrException2<NoSuchPackageException, NoSuchTargetException> toVal, Environment env) throws InterruptedException {
    SkyKey packageKey = PackageValue.key(toLabel.getPackageIdentifier());
    Target toTarget;
    try {
        PackageValue pkgValue = (PackageValue) env.getValueOrThrow(packageKey, NoSuchPackageException.clreplaced);
        if (pkgValue == null) {
            return null;
        }
        Package pkg = pkgValue.getPackage();
        if (pkg.containsErrors()) {
            // Do nothing interesting. This error was handled when we computed the corresponding
            // TransitiveTargetValue.
            return null;
        }
        toTarget = pkgValue.getPackage().getTarget(toLabel.getName());
    } catch (NoSuchThingException e) {
        // Do nothing interesting. This error was handled when we computed the corresponding
        // TransitiveTargetValue.
        return null;
    }
    if (!(toTarget instanceof Rule)) {
        // Aspect can be declared only for Rules.
        return null;
    }
    return ((Rule) toTarget).getRuleClreplacedObject().getAdvertisedProviders();
}

14 View Complete Implementation : PackageFactoryTestBase.java
Copyright Apache License 2.0
Author : bazelbuild
protected void expectEvalError(String expectedError, String... content) throws Exception {
    events.setFailFast(false);
    Path file = scratch.file("pkg/BUILD", content);
    Package pkg = packages.eval("pkg", RootedPath.toRootedPath(root, file));
    replacedertWithMessage("Expected evaluation error, but none was not reported").that(pkg.containsErrors()).isTrue();
    events.replacedertContainsError(expectedError);
}

14 View Complete Implementation : PackageCacheTest.java
Copyright Apache License 2.0
Author : bazelbuild
@Test
public void testMovedBuildFileCausesReloadAfterSync() throws Exception {
    // PackageLoader doesn't support --package_path.
    initializeSkyframeExecutor(/*doPackageLoadingChecks=*/
    false);
    Path buildFile1 = scratch.file("pkg/BUILD", "cc_library(name = 'foo')");
    Path buildFile2 = scratch.file("/otherroot/pkg/BUILD", "cc_library(name = 'bar')");
    setOptions("--package_path=/workspace:/otherroot");
    Package oldPkg = getPackage("pkg");
    // change not yet visible
    replacedertThat(getPackage("pkg")).isSameInstanceAs(oldPkg);
    replacedertThat(oldPkg.getFilename().asPath()).isEqualTo(buildFile1);
    replacedertThat(oldPkg.getSourceRoot()).isEqualTo(Root.fromPath(rootDirectory));
    buildFile1.delete();
    invalidatePackages();
    Package newPkg = getPackage("pkg");
    replacedertThat(newPkg).isNotSameInstanceAs(oldPkg);
    replacedertThat(newPkg.getFilename().asPath()).isEqualTo(buildFile2);
    replacedertThat(newPkg.getSourceRoot()).isEqualTo(Root.fromPath(scratch.dir("/otherroot")));
// TODO(bazel-team): (2009) test BUILD file moves in the other direction too.
}

14 View Complete Implementation : BazelPackageLoaderTest.java
Copyright Apache License 2.0
Author : bazelbuild
@Test
public void newLocalRepository() throws Exception {
    file("WORKSPACE", "new_local_repository(name = 'r', path = '/r', " + "build_file_content = 'sh_library(name = \"good\")')");
    fs.getPath("/r").createDirectoryAndParents();
    RepositoryName rRepoName = RepositoryName.create("@r");
    fetchExternalRepo(rRepoName);
    PackageLoader pkgLoader = newPackageLoader();
    PackageIdentifier pkgId = PackageIdentifier.create(rRepoName, PathFragment.create(""));
    Package goodPkg = pkgLoader.loadPackage(pkgId);
    replacedertThat(goodPkg.containsErrors()).isFalse();
    replacedertThat(goodPkg.getTarget("good").getreplacedociatedRule().getRuleClreplaced()).isEqualTo("sh_library");
    replacedertNoEvents(goodPkg.getEvents());
    replacedertNoEvents(handler.getEvents());
}