Skip to content

Commit

Permalink
Fixing #19: custom JVM flags can be now added to run and test tasks
Browse files Browse the repository at this point in the history
  • Loading branch information
zyxist committed Mar 14, 2018
1 parent 796dc92 commit 6bbe67a
Show file tree
Hide file tree
Showing 4 changed files with 93 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@
import org.gradle.api.tasks.SourceSetContainer;

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

import static com.zyxist.chainsaw.ChainsawPlugin.PATCH_CONFIGURATION_NAME;
Expand Down Expand Up @@ -60,7 +62,10 @@ public Optional<Action<Task>> doFirst(Project project, final JavaExec run) {
cli.patchList().patch(new PatchItem(moduleConfig.getName()).with(resourceOutDir.getAbsolutePath()));
moduleConfig.getHacks().applyHacks(cli);

run.setJvmArgs(cli.generateArgs());
List<String> jvmArgs = new ArrayList<>();
jvmArgs.addAll(run.getJvmArgs());
jvmArgs.addAll(cli.generateArgs());
run.setJvmArgs(jvmArgs);
run.setClasspath(project.files());
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@
import org.gradle.api.tasks.SourceSetContainer;
import org.gradle.api.tasks.testing.Test;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Optional;

Expand Down Expand Up @@ -69,7 +71,10 @@ public Optional<Action<Task>> doFirst(Project project, final Test testTask) {
.with(test.getJava().getOutputDir().getAbsolutePath())
);

testTask.setJvmArgs(cli.generateArgs());
List<String> jvmArgs = new ArrayList<>();
jvmArgs.addAll(testTask.getJvmArgs());
jvmArgs.addAll(cli.generateArgs());
testTask.setJvmArgs(jvmArgs);
testTask.setClasspath(project.files());
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@ public class JigsawProjectBuilder {
private final List<String> patchConfig = new ArrayList<>();

private final List<String> compilerArgs = new ArrayList<>();
private final List<String> jvmArgs = new ArrayList<>();
private final List<String> testJvmArgs = new ArrayList<>();

private final List<String> patchDependencies = new ArrayList<>();
private final List<String> compileDependencies = new ArrayList<>();
Expand Down Expand Up @@ -113,6 +115,16 @@ public JigsawProjectBuilder withCompilerArgs(String arg) {
return this;
}

public JigsawProjectBuilder withJvmArgs(String arg) {
this.jvmArgs.add(arg);
return this;
}

public JigsawProjectBuilder withTestJvmArgs(String arg) {
this.testJvmArgs.add(arg);
return this;
}

public JigsawProjectBuilder dontUseExplicitModuleName() {
this.useExplicitModuleName = false;
return this;
Expand Down Expand Up @@ -259,6 +271,7 @@ public JigsawProjectBuilder createGradleBuild() throws IOException {
generateRepositories(build);
generateDependencies(build);
generateApplicationConfig(build);
generateTestConfig(build);
generateJavaModuleConfig(build);
generateCompilerArgs(build);
if (useJavadoc) {
Expand Down Expand Up @@ -291,6 +304,23 @@ private void generateApplicationConfig(StringBuilder build) {
if (null != mainClassName) {
build.append("mainClassName = '"+mainClassName+"'\n");
}
if (!jvmArgs.isEmpty()) {
build.append("run {\n");
for (String arg: jvmArgs) {
build.append(" jvmArgs << '" + arg + "';\n");
}
build.append("}\n");
}
}

private void generateTestConfig(StringBuilder build) {
if (!testJvmArgs.isEmpty()) {
build.append("test {\n");
for (String arg: testJvmArgs) {
build.append(" jvmArgs '" + arg + "'\n");
}
build.append("}\n");
}
}

private void generateJavaModuleConfig(StringBuilder build) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
*/
package com.zyxist.chainsaw.integration

import com.zyxist.chainsaw.builder.Dependencies
import com.zyxist.chainsaw.builder.JigsawProjectBuilder
import org.gradle.testkit.runner.GradleRunner
import org.junit.Rule
Expand Down Expand Up @@ -95,4 +96,54 @@ class CustomFlagsSpec extends Specification {
result.output.contains("-proc:none")
new File(tmpDir.root, "build/libs/modular.jar").exists()
}

@IgnoreIf({NOT_JAVA_9})
def "it is possible to apply custom JVM arguments"() {
given:
project
.mainClass("com.example.AClass")
.createJavaFile(runnableJavaClass())
.withJvmArgs("-XX:NewSize=64M")
.createModuleDescriptor()
.createGradleBuild()

when:
def result = GradleRunner.create()
.withProjectDir(project.root)
.withDebug(true)
.forwardOutput()
.withArguments("run", "--debug")
.withPluginClasspath().build()

then:
result.task(":run").outcome == SUCCESS
result.output.contains("--module-path")
result.output.contains("-XX:NewSize=64M")
}

@IgnoreIf({NOT_JAVA_9})
def "it is possible to apply custom JVM arguments for tests"() {
given:
project
.testCompileDependency(Dependencies.JUNIT4_DEPENDENCY)
.mainClass("com.example.AClass")
.createJavaFile(runnableJavaClass())
.createJavaTestFile(junit4Test())
.withTestJvmArgs("-XX:NewSize=128M")
.createModuleDescriptor()
.createGradleBuild()

when:
def result = GradleRunner.create()
.withProjectDir(project.root)
.withDebug(true)
.forwardOutput()
.withArguments("check", "--debug")
.withPluginClasspath().build()

then:
result.task(":test").outcome == SUCCESS
result.output.contains("--module-path")
result.output.contains("-XX:NewSize=128M")
}
}

0 comments on commit 6bbe67a

Please sign in to comment.