Skip to content

Commit 5590ad8

Browse files
ittaizWixBuildServer
authored andcommitted
Fast test supports Scala junit
Via running bloop and BSP Fast test supports ITs Location substitution supports runpath(s) in addition to location(s) Still includes a hack of the env variable of BUILD_TOOL which we need to see how to remove but at least a smaller hack than before Full Compile on proto file changes don't update sources after proto change already exists
1 parent 8e79044 commit 5590ad8

34 files changed

+1137
-449
lines changed

aspect/fast_build_info.bzl

+16
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ def _fast_build_info_impl(target, ctx):
4343
elif java_common.JavaToolchainInfo != platform_common.ToolchainInfo and \
4444
java_common.JavaToolchainInfo in target:
4545
toolchain = target[java_common.JavaToolchainInfo]
46+
elif hasattr(ctx.rule.attr, "java_compile_toolchain") and ctx.rule.attr.java_compile_toolchain and \
47+
java_common.JavaToolchainInfo in ctx.rule.attr.java_compile_toolchain:
48+
toolchain = ctx.rule.attr.java_compile_toolchain[java_common.JavaToolchainInfo]
4649
else:
4750
toolchain = None
4851
if toolchain:
@@ -53,11 +56,17 @@ def _fast_build_info_impl(target, ctx):
5356
bootclasspath_jars = []
5457
if hasattr(toolchain, "bootclasspath"):
5558
bootclasspath_jars = [artifact_location(f) for f in toolchain.bootclasspath.to_list()]
59+
java_runtime = struct()
60+
if hasattr(toolchain, "java_runtime"):
61+
java_runtime = struct_omit_none(
62+
java_executable_exec_path = toolchain.java_runtime.java_executable_exec_path,
63+
)
5664
info["java_toolchain_info"] = struct_omit_none(
5765
javac_jars = javac_jars,
5866
bootclasspath_jars = bootclasspath_jars,
5967
source_version = toolchain.source_version,
6068
target_version = toolchain.target_version,
69+
java_runtime = java_runtime,
6170
)
6271
if JavaInfo in target:
6372
write_output = True
@@ -92,6 +101,13 @@ def _fast_build_info_impl(target, ctx):
92101
)
93102
info["android_info"] = android_info
94103

104+
if ProtoInfo in target:
105+
write_output = True
106+
proto_info = {
107+
"sources": sources_from_target(ctx),
108+
}
109+
info["proto_info"] = struct_omit_none(**proto_info)
110+
95111
if write_output:
96112
output_file = ctx.actions.declare_file(target.label.name + ".ide-fast-build-info.txt")
97113
ctx.actions.write(output_file, struct_omit_none(**info).to_proto())

base/src/com/google/idea/blaze/base/scope/output/StatusOutput.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,4 @@ public StatusOutput(@NotNull String status) {
3636
public String getStatus() {
3737
return status;
3838
}
39-
}
39+
}

base/src/com/google/idea/blaze/base/toolwindow/ConsoleView.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,10 @@ final class ConsoleView implements Disposable {
6969
private static long consoleIdCounter;
7070

7171
private static final Class<?>[] IGNORED_CONSOLE_ACTION_TYPES = {
72-
PreviousOccurenceToolbarAction.class, // common_typos_disable
73-
NextOccurenceToolbarAction.class,
74-
ClearConsoleAction.class,
75-
PrintAction.class
72+
PreviousOccurenceToolbarAction.class, // common_typos_disable
73+
NextOccurenceToolbarAction.class,
74+
ClearConsoleAction.class,
75+
PrintAction.class
7676
};
7777

7878
private final Project project;
@@ -359,4 +359,4 @@ public JComponent getContent() {
359359
}
360360
return content;
361361
}
362-
}
362+
}

ijwb/src/META-INF/java-contents.xml

+1
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,6 @@
1919
<JavaSyncAugmenter implementation="com.google.idea.blaze.ijwb.android.BlazeAndroidLiteJavaSyncAugmenter"/>
2020
<SyncDataDeserializer implementation="com.google.idea.blaze.java.sync.model.BlazeJavaSyncData$Deserializer"/>
2121
<SyncDataDeserializer implementation="com.google.idea.blaze.java.sync.jdeps.JdepsState$Deserializer"/>
22+
<FastBuildCompilerExtensionPoint implementation="com.google.idea.blaze.java.fastbuild.FastBuildJavaCompilerExtensionPoint"/>
2223
</extensions>
2324
</idea-plugin>

java/BUILD

+18-18
Original file line numberDiff line numberDiff line change
@@ -114,24 +114,6 @@ intellij_plugin(
114114
intellij_unit_test_suite(
115115
name = "unit_tests",
116116
srcs = glob(["tests/unittests/**/*.java"]),
117-
# Used for the compiler tests
118-
data = [
119-
":auto_value_lib_deploy.jar",
120-
":auto_value_plugin_lib_deploy.jar",
121-
":fast_build_javac",
122-
":guava_lib_deploy.jar",
123-
":truth_lib_deploy.jar",
124-
],
125-
jvm_flags = [
126-
"-Dauto_value.jar=$(location :auto_value_lib_deploy.jar)",
127-
"-Dauto_value_plugin.jar=$(location :auto_value_plugin_lib_deploy.jar)",
128-
"-Dfast_build_javac.jar=$(location :fast_build_javac)",
129-
"-Dguava.jar=$(location :guava_lib_deploy.jar)",
130-
"-Dtruth.jar=$(location :truth_lib_deploy.jar)",
131-
"--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED",
132-
"--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED",
133-
"--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED",
134-
],
135117
test_package_root = "com.google.idea.blaze.java",
136118
deps = [
137119
":java",
@@ -180,6 +162,24 @@ java_binary(
180162
intellij_integration_test_suite(
181163
name = "integration_tests",
182164
srcs = glob(["tests/integrationtests/**/*.java"]),
165+
# Used for the compiler tests
166+
data = [
167+
":auto_value_lib_deploy.jar",
168+
":auto_value_plugin_lib_deploy.jar",
169+
":fast_build_javac",
170+
":guava_lib_deploy.jar",
171+
":truth_lib_deploy.jar",
172+
],
173+
jvm_flags = [
174+
"-Dauto_value.jar=$(location :auto_value_lib_deploy.jar)",
175+
"-Dauto_value_plugin.jar=$(location :auto_value_plugin_lib_deploy.jar)",
176+
"-Dfast_build_javac.jar=$(location :fast_build_javac)",
177+
"-Dguava.jar=$(location :guava_lib_deploy.jar)",
178+
"-Dtruth.jar=$(location :truth_lib_deploy.jar)",
179+
"--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED",
180+
"--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED",
181+
"--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED",
182+
],
183183
required_plugins = "com.google.idea.blaze.java",
184184
test_package_root = "com.google.idea.blaze.java",
185185
runtime_deps = [

java/src/META-INF/java-contents.xml

+2
Original file line numberDiff line numberDiff line change
@@ -170,5 +170,7 @@
170170
interface="com.google.idea.blaze.java.run.hotswap.HotSwapCommandBuilder"/>
171171
<extensionPoint qualifiedName="com.google.idea.blaze.blazeJavaDebuggingSetupHandler"
172172
interface="com.google.idea.blaze.java.run.BlazeJavaDebuggingSetupHandler"/>
173+
<extensionPoint qualifiedName="com.google.idea.blaze.FastBuildCompilerExtensionPoint"
174+
interface="com.google.idea.blaze.java.fastbuild.FastBuildCompilerExtensionPoint"/>
173175
</extensionPoints>
174176
</idea-plugin>

java/src/com/google/idea/blaze/java/JavaBlazeRules.java

+1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ public final class JavaBlazeRules implements Kind.Provider {
3333
public enum RuleTypes {
3434
JAVA_LIBRARY("java_library", LanguageClass.JAVA, RuleType.LIBRARY),
3535
JAVA_TEST("java_test", LanguageClass.JAVA, RuleType.TEST),
36+
SCALA_JUNIT_TEST("scala_junit_test", LanguageClass.SCALA, RuleType.TEST),
3637
JAVA_BINARY("java_binary", LanguageClass.JAVA, RuleType.BINARY),
3738
JAVA_IMPORT("java_import", LanguageClass.JAVA, RuleType.UNKNOWN),
3839
JAVA_TOOLCHAIN("java_toolchain", LanguageClass.JAVA, RuleType.UNKNOWN),

java/src/com/google/idea/blaze/java/fastbuild/FastBuildAspectStrategy.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ final String getAspectOutputGroup() {
6969
final void addAspectAndOutputGroups(
7070
BlazeCommand.Builder blazeCommandBuilder, String... additionalOutputGroups) {
7171
String outputGroups =
72-
Stream.concat(Arrays.stream(additionalOutputGroups), Stream.of(OUTPUT_GROUP))
72+
Stream.concat(Arrays.stream(additionalOutputGroups).map(s -> "+"+s), Stream.of("+" + OUTPUT_GROUP))
7373
.collect(joining(","));
7474
blazeCommandBuilder
7575
.addBlazeFlags(getAspectFlags())

java/src/com/google/idea/blaze/java/fastbuild/FastBuildBlazeData.java

+52-4
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ public abstract class FastBuildBlazeData {
5959

6060
public abstract Optional<JavaToolchainInfo> javaToolchainInfo();
6161

62+
public abstract Optional<ProtoInfo> protoInfo();
63+
6264
public static Builder builder() {
6365
return new AutoValue_FastBuildBlazeData.Builder()
6466
.setDependencies(ImmutableList.of())
@@ -82,6 +84,8 @@ public abstract static class Builder {
8284

8385
public abstract Builder setJavaToolchainInfo(JavaToolchainInfo javaToolchainInfo);
8486

87+
public abstract Builder setProtoInfo(ProtoInfo protoInfo);
88+
8589
public abstract FastBuildBlazeData build();
8690
}
8791

@@ -103,6 +107,9 @@ static FastBuildBlazeData fromProto(FastBuildInfo.FastBuildBlazeData proto) {
103107
if (proto.hasJavaToolchainInfo()) {
104108
builder.setJavaToolchainInfo(JavaToolchainInfo.fromProto(proto.getJavaToolchainInfo()));
105109
}
110+
if (proto.hasProtoInfo()) {
111+
builder.setProtoInfo(ProtoInfo.fromProto(proto.getProtoInfo()));
112+
}
106113
return builder.build();
107114
}
108115

@@ -215,7 +222,7 @@ public abstract Builder setAnnotationProcessorClasspath(
215222

216223
/** Data about a java_toolchain rule. */
217224
@AutoValue
218-
abstract static class JavaToolchainInfo {
225+
public abstract static class JavaToolchainInfo {
219226
public abstract ImmutableList<ArtifactLocation> javacJars();
220227

221228
public abstract ImmutableList<ArtifactLocation> bootClasspathJars();
@@ -224,13 +231,16 @@ abstract static class JavaToolchainInfo {
224231

225232
public abstract String targetVersion();
226233

234+
public abstract Optional<JavaRuntime> javaRuntime();
235+
227236
static JavaToolchainInfo create(
228237
ImmutableList<ArtifactLocation> javacJars,
229238
ImmutableList<ArtifactLocation> bootJars,
230239
String sourceVersion,
231-
String targetVersion) {
240+
String targetVersion,
241+
JavaRuntime javaRuntime) {
232242
return new AutoValue_FastBuildBlazeData_JavaToolchainInfo(
233-
javacJars, bootJars, sourceVersion, targetVersion);
243+
javacJars, bootJars, sourceVersion, targetVersion, Optional.ofNullable(javaRuntime));
234244
}
235245

236246
static JavaToolchainInfo fromProto(FastBuildInfo.JavaToolchainInfo javaToolchainInfo) {
@@ -242,11 +252,49 @@ static JavaToolchainInfo fromProto(FastBuildInfo.JavaToolchainInfo javaToolchain
242252
javaToolchainInfo.getBootclasspathJarsList().stream()
243253
.map(ArtifactLocation::fromProto)
244254
.collect(toImmutableList());
255+
JavaRuntime javaRuntime = null;
256+
if (javaToolchainInfo.hasJavaRuntime()) {
257+
javaRuntime = JavaRuntime.fromProto(javaToolchainInfo.getJavaRuntime());
258+
}
259+
245260
return create(
246261
javacJars,
247262
bootJars,
248263
javaToolchainInfo.getSourceVersion(),
249-
javaToolchainInfo.getTargetVersion());
264+
javaToolchainInfo.getTargetVersion(), javaRuntime);
265+
}
266+
}
267+
/** Data about a java_runtime rule. */
268+
@AutoValue
269+
public abstract static class JavaRuntime {
270+
public abstract String javaExecutableExecPath();
271+
272+
static JavaRuntime create(
273+
String javaExecutableExecPath) {
274+
return new AutoValue_FastBuildBlazeData_JavaRuntime(javaExecutableExecPath);
275+
}
276+
277+
static JavaRuntime fromProto(FastBuildInfo.JavaRuntimeInfo javaRuntime) {
278+
return create(javaRuntime.getJavaExecutableExecPath());
279+
}
280+
}
281+
282+
/**
283+
* Data about a proto_library rule.
284+
*/
285+
@AutoValue
286+
public abstract static class ProtoInfo {
287+
288+
public abstract Set<ArtifactLocation> sources();
289+
290+
static ProtoInfo create(Set<ArtifactLocation> sources) {
291+
return new AutoValue_FastBuildBlazeData_ProtoInfo(sources);
292+
}
293+
294+
static ProtoInfo fromProto(FastBuildInfo.ProtoInfo proto) {
295+
Set<ArtifactLocation> sources =
296+
proto.getSourcesList().stream().map(ArtifactLocation::fromProto).collect(toSet());
297+
return create(sources);
250298
}
251299
}
252300
}

0 commit comments

Comments
 (0)