use of org.gradle.testkit.runner.InvalidRunnerConfigurationException in project gradle by gradle.
the class DefaultGradleRunner method run.
private BuildResult run(Action<GradleExecutionResult> resultVerification) {
if (projectDirectory == null) {
throw new InvalidRunnerConfigurationException("Please specify a project directory before executing the build");
}
if (environment != null && debug) {
throw new InvalidRunnerConfigurationException("Debug mode is not allowed when environment variables are specified. " + "Debug mode runs 'in process' but we need to fork a separate process to pass environment variables. " + "To run with debug mode, please remove environment variables.");
}
File testKitDir = createTestKitDir(testKitDirProvider);
GradleProvider effectiveDistribution = gradleProvider == null ? findGradleInstallFromGradleRunner() : gradleProvider;
List<String> effectiveArguments = new ArrayList<>();
if (OperatingSystem.current().isWindows()) {
// When using file system watching in Windows tests it becomes harder to delete the project directory,
// since file system watching on Windows adds a lock on the watched directory, which is currently the project directory.
// After deleting the contents of the watched directory, Gradle will stop watching the directory and release the file lock.
// That may require a retry to delete the watched directory.
// To avoid those problems for TestKit tests on Windows, we disable file system watching there.
effectiveArguments.add("-D" + StartParameterBuildOptions.WatchFileSystemOption.GRADLE_PROPERTY + "=false");
}
effectiveArguments.addAll(arguments);
GradleExecutionResult execResult = gradleExecutor.run(new GradleExecutionParameters(effectiveDistribution, testKitDir, projectDirectory, effectiveArguments, jvmArguments, classpath, debug, standardOutput, standardError, standardInput, environment));
resultVerification.execute(execResult);
return createBuildResult(execResult);
}
use of org.gradle.testkit.runner.InvalidRunnerConfigurationException in project gradle by gradle.
the class DefaultGradleRunner method findGradleInstallFromGradleRunner.
private static GradleProvider findGradleInstallFromGradleRunner() {
GradleInstallation gradleInstallation = CurrentGradleInstallation.get();
if (gradleInstallation == null) {
if ("embedded".equals(System.getProperty("org.gradle.integtest.executer"))) {
return GradleProvider.embedded();
}
String messagePrefix = "Could not find a Gradle installation to use based on the location of the GradleRunner class";
try {
File classpathForClass = ClasspathUtil.getClasspathForClass(GradleRunner.class);
messagePrefix += ": " + classpathForClass.getAbsolutePath();
} catch (Exception ignore) {
// ignore
}
throw new InvalidRunnerConfigurationException(messagePrefix + ". Please specify a Gradle runtime to use via GradleRunner.withGradleVersion() or similar.");
}
return GradleProvider.installation(gradleInstallation.getGradleHome());
}
use of org.gradle.testkit.runner.InvalidRunnerConfigurationException in project gradle by gradle.
the class ToolingApiGradleExecutor method run.
@Override
public GradleExecutionResult run(GradleExecutionParameters parameters) {
final StreamByteBuffer outputBuffer = new StreamByteBuffer();
final OutputStream syncOutput = new SynchronizedOutputStream(outputBuffer.getOutputStream());
final List<BuildTask> tasks = new ArrayList<BuildTask>();
maybeRegisterCleanup();
GradleConnector gradleConnector = buildConnector(parameters.getGradleUserHome(), parameters.getProjectDir(), parameters.isEmbedded(), parameters.getGradleProvider());
ProjectConnection connection = null;
GradleVersion targetGradleVersion = null;
try {
connection = gradleConnector.connect();
targetGradleVersion = determineTargetGradleVersion(connection);
if (targetGradleVersion.compareTo(TestKitFeature.RUN_BUILDS.getSince()) < 0) {
throw new UnsupportedFeatureException(String.format("The version of Gradle you are using (%s) is not supported by TestKit. TestKit supports all Gradle versions 2.6 and later.", targetGradleVersion.getVersion()));
}
DefaultBuildLauncher launcher = (DefaultBuildLauncher) connection.newBuild();
launcher.setStandardOutput(new NoCloseOutputStream(teeOutput(syncOutput, parameters.getStandardOutput())));
launcher.setStandardError(new NoCloseOutputStream(teeOutput(syncOutput, parameters.getStandardError())));
if (parameters.getStandardInput() != null) {
launcher.setStandardInput(parameters.getStandardInput());
}
launcher.addProgressListener(new TaskExecutionProgressListener(tasks), OperationType.TASK);
launcher.withArguments(parameters.getBuildArgs().toArray(new String[0]));
launcher.setJvmArguments(parameters.getJvmArgs().toArray(new String[0]));
launcher.setEnvironmentVariables(parameters.getEnvironment());
if (!parameters.getInjectedClassPath().isEmpty()) {
if (targetGradleVersion.compareTo(TestKitFeature.PLUGIN_CLASSPATH_INJECTION.getSince()) < 0) {
throw new UnsupportedFeatureException("support plugin classpath injection", targetGradleVersion, TestKitFeature.PLUGIN_CLASSPATH_INJECTION.getSince());
}
launcher.withInjectedClassPath(parameters.getInjectedClassPath());
}
launcher.run();
} catch (UnsupportedVersionException e) {
throw new InvalidRunnerConfigurationException("The build could not be executed due to a feature not being supported by the target Gradle version", e);
} catch (BuildException t) {
return new GradleExecutionResult(new BuildOperationParameters(targetGradleVersion, parameters.isEmbedded()), outputBuffer.readAsString(), tasks, t);
} catch (GradleConnectionException t) {
StringBuilder message = new StringBuilder("An error occurred executing build with ");
if (parameters.getBuildArgs().isEmpty()) {
message.append("no args");
} else {
message.append("args '");
message.append(CollectionUtils.join(" ", parameters.getBuildArgs()));
message.append("'");
}
message.append(" in directory '").append(parameters.getProjectDir().getAbsolutePath()).append("'");
String capturedOutput = outputBuffer.readAsString();
if (!capturedOutput.isEmpty()) {
message.append(". Output before error:").append(SystemProperties.getInstance().getLineSeparator()).append(capturedOutput);
}
throw new IllegalStateException(message.toString(), t);
} finally {
if (connection != null) {
connection.close();
}
}
return new GradleExecutionResult(new BuildOperationParameters(targetGradleVersion, parameters.isEmbedded()), outputBuffer.readAsString(), tasks);
}
Aggregations