List of usage examples for com.google.common.collect ImmutableList contains
boolean contains(Object o);
From source file:com.facebook.buck.features.python.PythonTestDescription.java
@Override public PythonTest createBuildRule(BuildRuleCreationContextWithTargetGraph context, BuildTarget buildTarget, BuildRuleParams params, PythonTestDescriptionArg args) { FlavorDomain<PythonPlatform> pythonPlatforms = toolchainProvider .getByName(PythonPlatformsProvider.DEFAULT_NAME, PythonPlatformsProvider.class) .getPythonPlatforms();/* w ww . j a v a 2 s. c o m*/ ActionGraphBuilder graphBuilder = context.getActionGraphBuilder(); PythonPlatform pythonPlatform = pythonPlatforms.getValue(buildTarget) .orElse(pythonPlatforms.getValue(args.getPlatform().<Flavor>map(InternalFlavor::of) .orElse(pythonPlatforms.getFlavors().iterator().next()))); CxxPlatform cxxPlatform = getCxxPlatform(buildTarget, args).resolve(graphBuilder); SourcePathRuleFinder ruleFinder = new SourcePathRuleFinder(graphBuilder); SourcePathResolver pathResolver = DefaultSourcePathResolver.from(ruleFinder); Path baseModule = PythonUtil.getBasePath(buildTarget, args.getBaseModule()); Optional<ImmutableMap<BuildTarget, Version>> selectedVersions = context.getTargetGraph().get(buildTarget) .getSelectedVersions(); ImmutableMap<Path, SourcePath> srcs = PythonUtil.getModules(buildTarget, graphBuilder, ruleFinder, pathResolver, pythonPlatform, cxxPlatform, "srcs", baseModule, args.getSrcs(), args.getPlatformSrcs(), args.getVersionedSrcs(), selectedVersions); ImmutableMap<Path, SourcePath> resources = PythonUtil.getModules(buildTarget, graphBuilder, ruleFinder, pathResolver, pythonPlatform, cxxPlatform, "resources", baseModule, args.getResources(), args.getPlatformResources(), args.getVersionedResources(), selectedVersions); // Convert the passed in module paths into test module names. ImmutableSet.Builder<String> testModulesBuilder = ImmutableSet.builder(); for (Path name : srcs.keySet()) { testModulesBuilder.add(PythonUtil.toModuleName(buildTarget, name.toString())); } ImmutableSet<String> testModules = testModulesBuilder.build(); ProjectFilesystem projectFilesystem = context.getProjectFilesystem(); // Construct a build rule to generate the test modules list source file and // add it to the build. BuildRule testModulesBuildRule = createTestModulesSourceBuildRule(buildTarget, projectFilesystem, getTestModulesListPath(buildTarget, projectFilesystem), testModules); graphBuilder.addToIndex(testModulesBuildRule); String mainModule; if (args.getMainModule().isPresent()) { mainModule = args.getMainModule().get(); } else { mainModule = PythonUtil.toModuleName(buildTarget, getTestMainName().toString()); } // Build up the list of everything going into the python test. PythonPackageComponents testComponents = PythonPackageComponents.of( ImmutableMap.<Path, SourcePath>builder() .put(getTestModulesListName(), testModulesBuildRule.getSourcePathToOutput()) .put(getTestMainName(), requireTestMain(buildTarget, projectFilesystem, graphBuilder)) .putAll(srcs).build(), resources, ImmutableMap.of(), ImmutableMultimap.of(), args.getZipSafe()); ImmutableList<BuildRule> deps = RichStream .from(PythonUtil.getDeps(pythonPlatform, cxxPlatform, args.getDeps(), args.getPlatformDeps())) .concat(args.getNeededCoverage().stream().map(NeededCoverageSpec::getBuildTarget)) .map(graphBuilder::getRule).collect(ImmutableList.toImmutableList()); CellPathResolver cellRoots = context.getCellPathResolver(); StringWithMacrosConverter macrosConverter = StringWithMacrosConverter.builder().setBuildTarget(buildTarget) .setCellPathResolver(cellRoots).setExpanders(PythonUtil.MACRO_EXPANDERS).build(); PythonPackageComponents allComponents = PythonUtil.getAllComponents(cellRoots, buildTarget, projectFilesystem, params, graphBuilder, ruleFinder, deps, testComponents, pythonPlatform, cxxBuckConfig, cxxPlatform, args.getLinkerFlags().stream().map(x -> macrosConverter.convert(x, graphBuilder)) .collect(ImmutableList.toImmutableList()), pythonBuckConfig.getNativeLinkStrategy(), args.getPreloadDeps()); // Build the PEX using a python binary rule with the minimum dependencies. buildTarget.assertUnflavored(); PythonBinary binary = binaryDescription.createPackageRule(buildTarget.withAppendedFlavors(BINARY_FLAVOR), projectFilesystem, params, graphBuilder, ruleFinder, pythonPlatform, cxxPlatform, mainModule, args.getExtension(), allComponents, args.getBuildArgs(), args.getPackageStyle().orElse(pythonBuckConfig.getPackageStyle()), PythonUtil.getPreloadNames(graphBuilder, cxxPlatform, args.getPreloadDeps())); graphBuilder.addToIndex(binary); ImmutableList.Builder<Pair<Float, ImmutableSet<Path>>> neededCoverageBuilder = ImmutableList.builder(); for (NeededCoverageSpec coverageSpec : args.getNeededCoverage()) { BuildRule buildRule = graphBuilder.getRule(coverageSpec.getBuildTarget()); if (deps.contains(buildRule) && buildRule instanceof PythonLibrary) { PythonLibrary pythonLibrary = (PythonLibrary) buildRule; ImmutableSortedSet<Path> paths; if (coverageSpec.getPathName().isPresent()) { Path path = coverageSpec.getBuildTarget().getBasePath() .resolve(coverageSpec.getPathName().get()); if (!pythonLibrary.getPythonPackageComponents(pythonPlatform, cxxPlatform, graphBuilder) .getModules().keySet().contains(path)) { throw new HumanReadableException( "%s: path %s specified in needed_coverage not found in target %s", buildTarget, path, buildRule.getBuildTarget()); } paths = ImmutableSortedSet.of(path); } else { paths = ImmutableSortedSet.copyOf( pythonLibrary.getPythonPackageComponents(pythonPlatform, cxxPlatform, graphBuilder) .getModules().keySet()); } neededCoverageBuilder .add(new Pair<>(coverageSpec.getNeededCoverageRatioPercentage() / 100.f, paths)); } else { throw new HumanReadableException( "%s: needed_coverage requires a python library dependency. Found %s instead", buildTarget, buildRule); } } Function<BuildRuleResolver, ImmutableMap<String, Arg>> testEnv = (ruleResolverInner) -> ImmutableMap .copyOf(Maps.transformValues(args.getEnv(), x -> macrosConverter.convert(x, graphBuilder))); // Additional CXX Targets used to generate CXX coverage. ImmutableSet<UnflavoredBuildTarget> additionalCoverageTargets = RichStream .from(args.getAdditionalCoverageTargets()).map(target -> target.getUnflavoredBuildTarget()) .collect(ImmutableSet.toImmutableSet()); ImmutableSortedSet<SourcePath> additionalCoverageSourcePaths = additionalCoverageTargets.isEmpty() ? ImmutableSortedSet.of() : binary.getRuntimeDeps(ruleFinder) .filter(target -> additionalCoverageTargets.contains(target.getUnflavoredBuildTarget())) .map(target -> DefaultBuildTargetSourcePath.of(target)) .collect(ImmutableSortedSet.toImmutableSortedSet(Ordering.natural())); // Generate and return the python test rule, which depends on the python binary rule above. return PythonTest.from(buildTarget, projectFilesystem, params, graphBuilder, testEnv, binary, args.getLabels(), neededCoverageBuilder.build(), additionalCoverageSourcePaths, args.getTestRuleTimeoutMs().map(Optional::of).orElse( cxxBuckConfig.getDelegate().getView(TestBuckConfig.class).getDefaultTestRuleTimeoutMs()), args.getContacts()); }
From source file:com.facebook.buck.features.apple.project.ProjectGenerator.java
private void writeUmbrellaHeaderIfNeeded(String moduleName, ImmutableSortedSet<Path> headerPaths, Path headerSymlinkTreeRoot) throws IOException { ImmutableList<String> headerPathStrings = headerPaths.stream().map(Path::getFileName).map(Path::toString) .collect(ImmutableList.toImmutableList()); if (!headerPathStrings.contains(moduleName + ".h")) { Path umbrellaPath = headerSymlinkTreeRoot.resolve(Paths.get(moduleName, moduleName + ".h")); Preconditions.checkState(!projectFilesystem.exists(umbrellaPath)); projectFilesystem.writeContentsToPath(new UmbrellaHeader(moduleName, headerPathStrings).render(), umbrellaPath);//from w ww. j a va2 s. c o m } }
From source file:com.google.devtools.build.lib.rules.objc.ObjcRuleTestCase.java
private void checkRegistersStoryboardCompileActions(ConfiguredTarget target, DottedVersion minimumOsVersion, ImmutableList<String> targetDevices) throws Exception { Artifact storyboardZip = getBinArtifact("x/1.storyboard.zip", target); CommandAction compileAction = (CommandAction) getGeneratingAction(storyboardZip); assertThat(Artifact.toExecPaths(compileAction.getInputs())).containsExactly(MOCK_IBTOOLWRAPPER_PATH, "x/1.storyboard"); String archiveRoot = targetDevices.contains("watch") ? "." : "1.storyboardc"; assertThat(compileAction.getOutputs()).containsExactly(storyboardZip); assertThat(compileAction.getArguments()).containsExactlyElementsIn(new Builder() .addDynamicString(MOCK_IBTOOLWRAPPER_PATH).addExecPath(storyboardZip).addDynamicString(archiveRoot) // archive root .add("--minimum-deployment-target", minimumOsVersion.toString()).add("--module").add("x") .addAll(VectorArg.addBefore("--target-device").each(targetDevices)).add("x/1.storyboard").build() .arguments()).inOrder();//from w w w . j ava 2 s. c o m storyboardZip = getBinArtifact("x/ja.lproj/loc.storyboard.zip", target); compileAction = (CommandAction) getGeneratingAction(storyboardZip); assertThat(Artifact.toExecPaths(compileAction.getInputs())).containsExactly(MOCK_IBTOOLWRAPPER_PATH, "x/ja.lproj/loc.storyboard"); assertThat(compileAction.getOutputs()).containsExactly(storyboardZip); archiveRoot = targetDevices.contains("watch") ? "ja.lproj/" : "ja.lproj/loc.storyboardc"; assertThat(compileAction.getArguments()).containsExactlyElementsIn(new Builder() .addDynamicString(MOCK_IBTOOLWRAPPER_PATH).addExecPath(storyboardZip).addDynamicString(archiveRoot) // archive root .add("--minimum-deployment-target", minimumOsVersion.toString()).add("--module").add("x") .addAll(VectorArg.addBefore("--target-device").each(targetDevices)).add("x/ja.lproj/loc.storyboard") .build().arguments()).inOrder(); }