Compare commits
4 commits
906969525e
...
6e8d3c2cd6
Author | SHA1 | Date | |
---|---|---|---|
6e8d3c2cd6 | |||
35287d7d6d | |||
e601ffab91 | |||
77d7463b0c |
5 changed files with 83 additions and 34 deletions
Binary file not shown.
|
@ -1,8 +1,8 @@
|
||||||
bld.downloadExtensionJavadoc=false
|
bld.downloadExtensionJavadoc=false
|
||||||
bld.downloadExtensionSources=true
|
bld.downloadExtensionSources=true
|
||||||
bld.extension-pmd=com.uwyn.rife2:bld-pmd:0.9.9
|
|
||||||
bld.extension-jacoco=com.uwyn.rife2:bld-jacoco-report:0.9.5
|
|
||||||
bld.repositories=MAVEN_CENTRAL,MAVEN_LOCAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES
|
|
||||||
bld.downloadLocation=
|
bld.downloadLocation=
|
||||||
|
bld.extension-jacoco=com.uwyn.rife2:bld-jacoco-report:0.9.5
|
||||||
|
bld.extension-pmd=com.uwyn.rife2:bld-pmd:1.0.1
|
||||||
|
bld.repositories=MAVEN_CENTRAL,MAVEN_LOCAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES
|
||||||
bld.sourceDirectories=
|
bld.sourceDirectories=
|
||||||
bld.version=1.9.1
|
bld.version=1.9.1
|
||||||
|
|
|
@ -48,7 +48,7 @@ public class ExecOperationBuild extends Project {
|
||||||
scope(test)
|
scope(test)
|
||||||
.include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 10, 2)))
|
.include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 10, 2)))
|
||||||
.include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 10, 2)))
|
.include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 10, 2)))
|
||||||
.include(dependency("org.assertj", "assertj-core", version(3, 25, 3)));
|
.include(dependency("org.assertj", "assertj-core", version(3, 26, 0)));
|
||||||
|
|
||||||
javadocOperation()
|
javadocOperation()
|
||||||
.javadocOptions()
|
.javadocOptions()
|
||||||
|
|
|
@ -37,7 +37,7 @@ import java.util.logging.Logger;
|
||||||
*/
|
*/
|
||||||
public class ExecOperation extends AbstractOperation<ExecOperation> {
|
public class ExecOperation extends AbstractOperation<ExecOperation> {
|
||||||
private static final Logger LOGGER = Logger.getLogger(ExecOperation.class.getName());
|
private static final Logger LOGGER = Logger.getLogger(ExecOperation.class.getName());
|
||||||
private final List<String> args_ = new ArrayList<>();
|
private final Collection<String> args_ = new ArrayList<>();
|
||||||
private boolean failOnExit_ = true;
|
private boolean failOnExit_ = true;
|
||||||
private BaseProject project_;
|
private BaseProject project_;
|
||||||
private int timeout_ = 30;
|
private int timeout_ = 30;
|
||||||
|
@ -61,6 +61,16 @@ public class ExecOperation extends AbstractOperation<ExecOperation> {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the command and arguments to be executed.
|
||||||
|
*
|
||||||
|
* @return the command and arguments
|
||||||
|
*/
|
||||||
|
public Collection<String> command() {
|
||||||
|
return args_;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Configures the command and arguments to be executed.
|
* Configures the command and arguments to be executed.
|
||||||
*
|
*
|
||||||
|
@ -92,7 +102,7 @@ public class ExecOperation extends AbstractOperation<ExecOperation> {
|
||||||
if (workDir.isDirectory()) {
|
if (workDir.isDirectory()) {
|
||||||
var pb = new ProcessBuilder();
|
var pb = new ProcessBuilder();
|
||||||
pb.inheritIO();
|
pb.inheritIO();
|
||||||
pb.command(args_);
|
pb.command(args_.stream().toList());
|
||||||
pb.directory(workDir);
|
pb.directory(workDir);
|
||||||
|
|
||||||
if (LOGGER.isLoggable(Level.INFO)) {
|
if (LOGGER.isLoggable(Level.INFO)) {
|
||||||
|
@ -137,6 +147,15 @@ public class ExecOperation extends AbstractOperation<ExecOperation> {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns whether the operation should fail if the command exit value/status is not 0.
|
||||||
|
*
|
||||||
|
* @return {@code true} or {@code false}
|
||||||
|
*/
|
||||||
|
public boolean isFailOnExit() {
|
||||||
|
return failOnExit_;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Configure the command timeout.
|
* Configure the command timeout.
|
||||||
*
|
*
|
||||||
|
@ -148,6 +167,15 @@ public class ExecOperation extends AbstractOperation<ExecOperation> {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the command timeout.
|
||||||
|
*
|
||||||
|
* @return the timeout
|
||||||
|
*/
|
||||||
|
public int timeout() {
|
||||||
|
return timeout_;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Configures the working directory.
|
* Configures the working directory.
|
||||||
*
|
*
|
||||||
|
@ -168,4 +196,13 @@ public class ExecOperation extends AbstractOperation<ExecOperation> {
|
||||||
public ExecOperation workDir(String dir) {
|
public ExecOperation workDir(String dir) {
|
||||||
return workDir(new File(dir));
|
return workDir(new File(dir));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the working directory.
|
||||||
|
*
|
||||||
|
* @return the directory
|
||||||
|
*/
|
||||||
|
public File workDir() {
|
||||||
|
return workDir_;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,7 @@ package rife.bld.extension;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import rife.bld.BaseProject;
|
import rife.bld.BaseProject;
|
||||||
import rife.bld.Project;
|
import rife.bld.Project;
|
||||||
|
import rife.bld.WebProject;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -31,16 +32,10 @@ class ExecOperationTest {
|
||||||
private static final String FOO = "foo";
|
private static final String FOO = "foo";
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testCat() throws Exception {
|
void testCommand() {
|
||||||
var tmpFile = new File("hello.tmp");
|
var op = new ExecOperation().fromProject(new WebProject())
|
||||||
tmpFile.deleteOnExit();
|
.command(FOO, "bar");
|
||||||
new ExecOperation()
|
assertThat(op.command()).isEqualTo(List.of(FOO, "bar"));
|
||||||
.fromProject(new Project())
|
|
||||||
.timeout(10)
|
|
||||||
.command("touch", tmpFile.getName())
|
|
||||||
.execute();
|
|
||||||
|
|
||||||
assertThat(tmpFile).exists();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -63,32 +58,49 @@ class ExecOperationTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testFailOnExit() {
|
void testFailOnExit() {
|
||||||
assertThatCode(() ->
|
var op = new ExecOperation()
|
||||||
new ExecOperation()
|
.fromProject(new BaseProject())
|
||||||
.fromProject(new BaseProject())
|
.command(List.of("cat", FOO))
|
||||||
.command(List.of("cat", FOO))
|
.failOnExit(false);
|
||||||
.failOnExit(false)
|
assertThat(op.isFailOnExit()).isFalse();
|
||||||
.execute()).doesNotThrowAnyException();
|
assertThatCode(op::execute).doesNotThrowAnyException();
|
||||||
|
|
||||||
|
op.failOnExit(true);
|
||||||
|
assertThat(op.isFailOnExit()).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testTimeout() {
|
void testTimeout() {
|
||||||
assertThatCode(() ->
|
var op = new ExecOperation()
|
||||||
new ExecOperation()
|
.fromProject(new BaseProject())
|
||||||
.fromProject(new BaseProject())
|
.timeout(5)
|
||||||
.timeout(5)
|
.command(List.of("sleep", "10"));
|
||||||
.command(List.of("sleep", "10"))
|
assertThat(op.timeout()).isEqualTo(5);
|
||||||
.execute()).message().contains("timed out");
|
assertThatCode(op::execute).message().contains("timed out");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testTouch() throws Exception {
|
||||||
|
var tmpFile = new File("hello.tmp");
|
||||||
|
tmpFile.deleteOnExit();
|
||||||
|
new ExecOperation()
|
||||||
|
.fromProject(new Project())
|
||||||
|
.timeout(10)
|
||||||
|
.command("touch", tmpFile.getName())
|
||||||
|
.execute();
|
||||||
|
|
||||||
|
assertThat(tmpFile).exists();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testWorkDir() {
|
void testWorkDir() {
|
||||||
assertThatCode(() ->
|
var workDir = new File(System.getProperty("java.io.tmpdir"));
|
||||||
new ExecOperation()
|
var op = new ExecOperation()
|
||||||
.fromProject(new BaseProject())
|
.fromProject(new BaseProject())
|
||||||
.command("echo", FOO)
|
.command("echo", FOO)
|
||||||
.workDir(new File(System.getProperty("java.io.tmpdir")))
|
.workDir(workDir);
|
||||||
.execute()).doesNotThrowAnyException();
|
assertThat(op.workDir()).isEqualTo(workDir);
|
||||||
|
assertThatCode(op::execute).doesNotThrowAnyException();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue