Skip to content

Commit

Permalink
Added public methods to directly access configuration options
Browse files Browse the repository at this point in the history
  • Loading branch information
ethauvin committed Jun 21, 2024
1 parent 35287d7 commit 6e8d3c2
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 18 deletions.
27 changes: 27 additions & 0 deletions src/main/java/rife/bld/extension/ExecOperation.java
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,15 @@ public ExecOperation fromProject(BaseProject project) {
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.
*
Expand All @@ -158,6 +167,15 @@ public ExecOperation timeout(int timeout) {
return this;
}

/**
* Returns the command timeout.
*
* @return the timeout
*/
public int timeout() {
return timeout_;
}

/**
* Configures the working directory.
*
Expand All @@ -178,4 +196,13 @@ public ExecOperation workDir(File dir) {
public ExecOperation workDir(String dir) {
return workDir(new File(dir));
}

/**
* Returns the working directory.
*
* @return the directory
*/
public File workDir() {
return workDir_;
}
}
54 changes: 36 additions & 18 deletions src/test/java/rife/bld/extension/ExecOperationTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import org.junit.jupiter.api.Test;
import rife.bld.BaseProject;
import rife.bld.Project;
import rife.bld.WebProject;

import java.io.File;
import java.util.List;
Expand Down Expand Up @@ -57,32 +58,49 @@ void testExitValue() {

@Test
void testFailOnExit() {
assertThatCode(() ->
new ExecOperation()
.fromProject(new BaseProject())
.command(List.of("cat", FOO))
.failOnExit(false)
.execute()).doesNotThrowAnyException();
var op = new ExecOperation()
.fromProject(new BaseProject())
.command(List.of("cat", FOO))
.failOnExit(false);
assertThat(op.isFailOnExit()).isFalse();
assertThatCode(op::execute).doesNotThrowAnyException();

op.failOnExit(true);
assertThat(op.isFailOnExit()).isTrue();
}

@Test
void testTimeout() {
assertThatCode(() ->
new ExecOperation()
.fromProject(new BaseProject())
.timeout(5)
.command(List.of("sleep", "10"))
.execute()).message().contains("timed out");
var op = new ExecOperation()
.fromProject(new BaseProject())
.timeout(5)
.command(List.of("sleep", "10"));
assertThat(op.timeout()).isEqualTo(5);
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
void testWorkDir() {
assertThatCode(() ->
new ExecOperation()
.fromProject(new BaseProject())
.command("echo", FOO)
.workDir(new File(System.getProperty("java.io.tmpdir")))
.execute()).doesNotThrowAnyException();
var workDir = new File(System.getProperty("java.io.tmpdir"));
var op = new ExecOperation()
.fromProject(new BaseProject())
.command("echo", FOO)
.workDir(workDir);
assertThat(op.workDir()).isEqualTo(workDir);
assertThatCode(op::execute).doesNotThrowAnyException();
}

@Test
Expand Down

0 comments on commit 6e8d3c2

Please sign in to comment.