aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/objc/TestSupport.java
diff options
context:
space:
mode:
authorGravatar Daniel Wagner-Hall <danielwh@google.com>2015-06-17 21:48:00 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2015-06-18 10:01:48 +0000
commit005ed82b71beb478aa07dce50f1fb1ec9c4e1d3f (patch)
treed5347aa2f318cc63b5e077f7cdd2adb92d49b9eb /src/main/java/com/google/devtools/build/lib/rules/objc/TestSupport.java
parenta5057db0b24a18eaa235ff397bc4fc5f5c5fdaf4 (diff)
experimental_ios_test: Support non-xctests
-- MOS_MIGRATED_REVID=96245678
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/objc/TestSupport.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/TestSupport.java41
1 files changed, 30 insertions, 11 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/TestSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/TestSupport.java
index 89c93d7729..ebc6820a0b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/TestSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/TestSupport.java
@@ -31,6 +31,8 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.util.FileType;
+import java.util.List;
+
/**
* Support for running XcTests.
*/
@@ -57,23 +59,30 @@ class TestSupport {
}
private void registerTestScriptSubstitutionAction() {
- // testIpa is the app actually containing the XcTests
+ // testIpa is the app actually containing the tests
Artifact testIpa = testIpa();
- // xctestIpa is the app bundle being tested
- Artifact xctestIpa = xctestIpa();
ImmutableList.Builder<Substitution> substitutions = new ImmutableList.Builder<Substitution>()
.add(Substitution.of("%(test_app_ipa)s", testIpa.getRootRelativePathString()))
.add(Substitution.of("%(test_app_name)s", baseNameWithoutIpa(testIpa)))
- .add(Substitution.of("%(xctest_app_ipa)s", xctestIpa.getRootRelativePathString()))
- .add(Substitution.of("%(xctest_app_name)s", baseNameWithoutIpa(xctestIpa)))
-
.add(Substitution.of("%(iossim_path)s", iossim().getRootRelativePath().getPathString()))
.add(Substitution.of("%(plugin_jars)s", Artifact.joinRootRelativePaths(":", plugins())))
.addAll(deviceSubstitutions().getSubstitutionsForTestRunnerScript());
+ // xctestIpa is the app bundle being tested
+ Optional<Artifact> xctestIpa = xctestIpa();
+ if (xctestIpa.isPresent()) {
+ substitutions
+ .add(Substitution.of("%(xctest_app_ipa)s", xctestIpa.get().getRootRelativePathString()))
+ .add(Substitution.of("%(xctest_app_name)s", baseNameWithoutIpa(xctestIpa.get())));
+ } else {
+ substitutions
+ .add(Substitution.of("%(xctest_app_ipa)s", ""))
+ .add(Substitution.of("%(xctest_app_name)s", ""));
+ }
+
Optional<Artifact> testRunner = testRunner();
if (testRunner.isPresent()) {
substitutions.add(
@@ -95,11 +104,21 @@ class TestSupport {
return ruleContext.getImplicitOutputArtifact(ReleaseBundlingSupport.IPA);
}
- private Artifact xctestIpa() {
+ private Optional<Artifact> xctestIpa() {
FileProvider fileProvider =
ruleContext.getPrerequisite("xctest_app", Mode.TARGET, FileProvider.class);
- return Iterables.getOnlyElement(
- Artifact.filterFiles(fileProvider.getFilesToBuild(), FileType.of(".ipa")));
+ if (fileProvider == null) {
+ return Optional.absent();
+ }
+ List<Artifact> files =
+ Artifact.filterFiles(fileProvider.getFilesToBuild(), FileType.of(".ipa"));
+ if (files.size() == 0) {
+ return Optional.absent();
+ } else if (files.size() == 1) {
+ return Optional.of(Iterables.getOnlyElement(files));
+ } else {
+ throw new IllegalStateException("Expected 0 or 1 files in xctest_app, got: " + files);
+ }
}
private Artifact iossim() {
@@ -119,7 +138,7 @@ class TestSupport {
TestSupport addRunfiles(Runfiles.Builder runfilesBuilder) {
runfilesBuilder
.addArtifact(testIpa())
- .addArtifact(xctestIpa())
+ .addArtifacts(xctestIpa().asSet())
.addArtifact(generatedTestScript())
.addArtifact(iossim())
.addTransitiveArtifacts(deviceRunfiles())
@@ -147,7 +166,7 @@ class TestSupport {
* Adds files which must be built in order to run this test to builder.
*/
TestSupport addFilesToBuild(NestedSetBuilder<Artifact> builder) {
- builder.add(testIpa()).add(xctestIpa());
+ builder.add(testIpa()).addAll(xctestIpa().asSet());
return this;
}