Number of utilities for writing gradle integration tests
These are collected from a number of open PRs and are required to
improove existing and write more readable future tests.
I am extracting them to their own PR hoping to be able to merge and use
them sooner.
package org.elasticsearch.gradle.test;
+import org.gradle.testkit.runner.GradleRunner;
+
import java.io.File;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
public abstract class GradleIntegrationTestCase extends GradleUnitTestCase {
@@ -13,4 +18,47 @@ public abstract class GradleIntegrationTestCase extends GradleUnitTestCase {
return new File(root, name);
}
+ protected GradleRunner getGradleRunner(String sampleProject) {
+ return GradleRunner.create()
+ .withProjectDir(getProjectDir(sampleProject))
+ .withPluginClasspath();
+ }
+
+ protected File getBuildDir(String name) {
+ return new File(getProjectDir(name), "build");
+ }
+
+ protected void assertOutputContains(String output, String... lines) {
+ for (String line : lines) {
+ assertOutputContains(output, line);
+ }
+ List<Integer> index = Stream.of(lines).map(line -> output.indexOf(line)).collect(Collectors.toList());
+ if (index.equals(index.stream().sorted().collect(Collectors.toList())) == false) {
+ fail("Expected the following lines to appear in this order:\n" +
+ Stream.of(lines).map(line -> " - `" + line + "`").collect(Collectors.joining("\n")) +
+ "\nBut they did not. Output is:\n\n```" + output + "\n```\n"
+ );
+ }
+ }
+
+ protected void assertOutputContains(String output, String line) {
+ assertTrue(
+ "Expected the following line in output:\n\n" + line + "\n\nOutput is:\n" + output,
+ output.contains(line)
+ );
+ }
+
+ protected void assertOutputDoesNotContain(String output, String line) {
+ assertFalse(
+ "Expected the following line not to be in output:\n\n" + line + "\n\nOutput is:\n" + output,
+ output.contains(line)
+ );
+ }
+
+ protected void assertOutputDoesNotContain(String output, String... lines) {
+ for (String line : lines) {
+ assertOutputDoesNotContain(line);
+ }
+ }
+
}
