private static void validateTargeting(ImmutableSet<String> allImages, ApexImages targeting) { ImmutableSet<String> targetedImages = targeting.getImageList().stream().map(TargetedApexImage::getPath).collect(toImmutableSet()); ImmutableSet<String> untargetedImages = Sets.difference(allImages, targetedImages).immutableCopy(); if (!untargetedImages.isEmpty()) { throw ValidationException.builder() .withMessage("Found APEX image files that are not targeted: %s", untargetedImages) .build(); } ImmutableSet<String> missingTargetedImages = Sets.difference(targetedImages, allImages).immutableCopy(); if (!missingTargetedImages.isEmpty()) { throw ValidationException.builder() .withMessage("Targeted APEX image files are missing: %s", missingTargetedImages) .build(); } } }
List<TargetedApexImage> allTargetedImages = moduleSplit.getApexConfig().get().getImageList();
@Test public void generateTargetingForApexImages_createsAllTargeting() throws Exception { ImmutableSet<String> abis = Arrays.stream(AbiName.values()).map(AbiName::getPlatformName).collect(toImmutableSet()); Set<String> abiPairs = Sets.cartesianProduct(abis, abis).stream() .map(pair -> Joiner.on('.').join(pair)) .collect(toImmutableSet()); Collection<ZipPath> allAbiFiles = Sets.union(abis, abiPairs).stream() .map(abi -> ZipPath.create(abi + ".img")) .collect(toImmutableList()); checkState(allAbiFiles.size() > 1); // Otherwise this test is useless. ApexImages apexImages = generator.generateTargetingForApexImages(allAbiFiles); List<TargetedApexImage> images = apexImages.getImageList(); assertThat(images).hasSize(allAbiFiles.size()); }
@Test public void apexImages() { TargetedApexImage firstTargeting = TargetedApexImage.newBuilder().setPath("path1").build(); TargetedApexImage secondTargeting = TargetedApexImage.newBuilder().setPath("path2").build(); ApexImages apexImages = TargetingUtils.apexImages(firstTargeting, secondTargeting); assertThat(apexImages.getImageList()).containsExactly(firstTargeting, secondTargeting); }