aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2015-12-03 15:17:55 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2015-12-03 18:37:59 +0000
commit5e34a3d4ea30525971e320ce283ba8cd67c74e3c (patch)
tree29c755c006c6b5f1fb82f131a72c44e406a18c5a /src/test/java/com/google/devtools/build/lib
parent84fb4612dd4203425b59809ea5e3302ff55723fa (diff)
ASwB aspect: parse java packages during execution
-- MOS_MIGRATED_REVID=109305952
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib')
-rw-r--r--src/test/java/com/google/devtools/build/lib/BUILD1
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java7
-rw-r--r--src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTest.java48
-rw-r--r--src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTestBase.java22
4 files changed, 70 insertions, 8 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/BUILD b/src/test/java/com/google/devtools/build/lib/BUILD
index 707b33d891..b02e782756 100644
--- a/src/test/java/com/google/devtools/build/lib/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/BUILD
@@ -600,6 +600,7 @@ java_test(
"//src/main/java/com/google/devtools/build/lib:bazel-rules",
"//src/main/java/com/google/devtools/build/lib:build-base",
"//src/main/java/com/google/devtools/build/lib:collect",
+ "//src/main/java/com/google/devtools/build/lib:common",
"//src/main/java/com/google/devtools/build/lib:events",
"//src/main/java/com/google/devtools/build/lib:ideinfo",
"//src/main/java/com/google/devtools/build/lib:packages",
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java b/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
index 65f4c90824..619ba2ff52 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
@@ -181,7 +181,12 @@ public final class BazelAnalysisMock extends AnalysisMock {
.add("sh_binary(name = 'shuffle_jars', srcs = ['empty.sh'])")
.add("sh_binary(name = 'strip_resources', srcs = ['empty.sh'])")
.add("sh_binary(name = 'build_incremental_dexmanifest', srcs = ['empty.sh'])")
- .add("sh_binary(name = 'incremental_install', srcs = ['empty.sh'])");
+ .add("sh_binary(name = 'incremental_install', srcs = ['empty.sh'])")
+ .add("java_binary(name = 'PackageParser',")
+ .add(" runtime_deps = [ ':PackageParser_import'],")
+ .add(" main_class = 'com.google.devtools.build.android.ideinfo.PackageParser')")
+ .add("java_import(name = 'PackageParser_import',")
+ .add(" jars = [ 'package_parser_deploy.jar' ])");
for (Attribute attr : attrs) {
if (attr.getType() == LABEL && attr.isMandatory() && !attr.getName().startsWith(":")) {
diff --git a/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTest.java b/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTest.java
index bb8de48bf3..27ec6a63dd 100644
--- a/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTest.java
+++ b/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTest.java
@@ -57,7 +57,24 @@ public class AndroidStudioInfoAspectTest extends AndroidStudioInfoAspectTestBase
"com/google/example/libsimple-src.jar"
);
}
-
+
+ public void testPackageManifestCreated() throws Exception {
+ scratch.file(
+ "com/google/example/BUILD",
+ "java_library(",
+ " name = 'simple',",
+ " srcs = ['simple/Simple.java']",
+ ")");
+ Map<String, RuleIdeInfo> ruleIdeInfos = buildRuleIdeInfo("//com/google/example:simple");
+ assertThat(ruleIdeInfos.size()).isEqualTo(1);
+ RuleIdeInfo ruleIdeInfo = getRuleInfoAndVerifyLabel(
+ "//com/google/example:simple", ruleIdeInfos);
+
+ ArtifactLocation packageManifest = ruleIdeInfo.getJavaRuleIdeInfo().getPackageManifest();
+ assertNotNull(packageManifest);
+ assertEquals(packageManifest.getRelativePath(), "com/google/example/simple.manifest");
+ }
+
public void testJavaLibraryProtoWithDependencies() throws Exception {
scratch.file(
"com/google/example/BUILD",
@@ -83,7 +100,7 @@ public class AndroidStudioInfoAspectTest extends AndroidStudioInfoAspectTestBase
assertThat(complexRuleIdeInfo.getDependenciesList())
.containsExactly("//com/google/example:simple");
}
-
+
public void testJavaLibraryWithTransitiveDependencies() throws Exception {
scratch.file(
"com/google/example/BUILD",
@@ -320,6 +337,33 @@ public class AndroidStudioInfoAspectTest extends AndroidStudioInfoAspectTestBase
.containsExactly("//com/google/example:foobar", "//com/google/example:imp")
.inOrder();
}
+
+ public void testNoPackageManifestForExports() throws Exception {
+ scratch.file(
+ "com/google/example/BUILD",
+ "java_library(",
+ " name = 'foobar',",
+ " srcs = ['FooBar.java'],",
+ ")",
+ "java_import(",
+ " name = 'imp',",
+ " jars = ['a.jar', 'b.jar'],",
+ " deps = [':foobar'],",
+ " exports = [':foobar'],",
+ ")",
+ "java_library(",
+ " name = 'lib',",
+ " srcs = ['Lib.java'],",
+ " deps = [':imp'],",
+ ")");
+
+ Map<String, RuleIdeInfo> ruleIdeInfos = buildRuleIdeInfo("//com/google/example:lib");
+ RuleIdeInfo libInfo = getRuleInfoAndVerifyLabel("//com/google/example:lib", ruleIdeInfos);
+ RuleIdeInfo impInfo = getRuleInfoAndVerifyLabel("//com/google/example:imp", ruleIdeInfos);
+
+ assertThat(!impInfo.getJavaRuleIdeInfo().hasPackageManifest()).isTrue();
+ assertThat(libInfo.getJavaRuleIdeInfo().hasPackageManifest()).isTrue();
+ }
public void testGeneratedJavaImportFilesAreAddedToOutputGroup() throws Exception {
scratch.file(
diff --git a/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTestBase.java b/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTestBase.java
index 4a26cc902e..cb3ca8ba79 100644
--- a/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTestBase.java
+++ b/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTestBase.java
@@ -21,11 +21,13 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
import com.google.common.eventbus.EventBus;
+import com.google.devtools.build.lib.actions.Action;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.BuildView.AnalysisResult;
import com.google.devtools.build.lib.analysis.ConfiguredAspect;
import com.google.devtools.build.lib.analysis.OutputGroupProvider;
import com.google.devtools.build.lib.analysis.actions.BinaryFileWriteAction;
+import com.google.devtools.build.lib.analysis.actions.SpawnAction;
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.ideinfo.androidstudio.AndroidStudioIdeInfo.ArtifactLocation;
@@ -136,14 +138,24 @@ abstract class AndroidStudioInfoAspectTestBase extends BuildViewTestCase {
Iterable<Artifact> artifacts = provider.getIdeInfoFiles();
ImmutableMap.Builder<String, RuleIdeInfo> builder = ImmutableMap.builder();
for (Artifact artifact : artifacts) {
- BinaryFileWriteAction generatingAction =
- (BinaryFileWriteAction) getGeneratingAction(artifact);
- RuleIdeInfo ruleIdeInfo = RuleIdeInfo.parseFrom(generatingAction.getSource().openStream());
- builder.put(ruleIdeInfo.getLabel(), ruleIdeInfo);
+ Action generatingAction = getGeneratingAction(artifact);
+ if (generatingAction instanceof BinaryFileWriteAction) {
+ BinaryFileWriteAction writeAction = (BinaryFileWriteAction) generatingAction;
+ RuleIdeInfo ruleIdeInfo = RuleIdeInfo.parseFrom(writeAction.getSource().openStream());
+ builder.put(ruleIdeInfo.getLabel(), ruleIdeInfo);
+ } else {
+ verifyPackageManifestSpawnAction(generatingAction);
+ }
}
return builder.build();
}
-
+
+ protected final void verifyPackageManifestSpawnAction(Action genAction) {
+ assertEquals(genAction.getMnemonic(), "JavaPackageManifest");
+ SpawnAction action = (SpawnAction) genAction;
+ assertFalse(action.isShellCommand());
+ }
+
protected List<String> getOutputGroupResult(String outputGroup) {
OutputGroupProvider outputGroupProvider =
this.configuredAspect.getProvider(OutputGroupProvider.class);