Skip to content

Commit

Permalink
Use a separate test context for each testcase
Browse files Browse the repository at this point in the history
  • Loading branch information
lukfor committed Aug 25, 2023
1 parent e267865 commit 5ebc357
Show file tree
Hide file tree
Showing 13 changed files with 242 additions and 121 deletions.
111 changes: 21 additions & 90 deletions src/main/java/com/askimed/nf/test/lang/TestContext.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@

import com.askimed.nf.test.core.ITest;
import com.askimed.nf.test.lang.extensions.Snapshot;
import com.askimed.nf.test.lang.function.Function;
import com.askimed.nf.test.lang.process.Process;
import com.askimed.nf.test.lang.workflow.Workflow;

import groovy.lang.Closure;
Expand All @@ -16,28 +14,27 @@ public class TestContext {

private ParamsMap params = new ParamsMap();

private Workflow workflow = new Workflow();

private Process process = new Process();

private Function function = new Function();

private Closure paramsClosure;

private Closure processClosure;

public String baseDir = "nf-test";

public String outputDir = "nf-test";

public ITest test;

private String name;

private WorkflowMeta workflow = new WorkflowMeta();

public TestContext(ITest test) {
this.test = test;
}

public void setName(String name) {
process.setName(name);
public void init(String baseDir, String outputDir) {
params.setBaseDir(baseDir);
params.setOutputDir(outputDir);
this.baseDir = baseDir;
this.outputDir = outputDir;
}

public ParamsMap getParams() {
Expand All @@ -48,30 +45,6 @@ public void setParams(ParamsMap params) {
this.params = params;
}

public Workflow getWorkflow() {
return workflow;
}

public void setWorkflow(Workflow workflow) {
this.workflow = workflow;
}

public Process getProcess() {
return process;
}

public void setProcess(Process process) {
this.process = process;
}

public Function getFunction() {
return function;
}

public void setFunction(Function function) {
this.function = function;
}

public void params(Closure closure) {
this.paramsClosure = closure;
}
Expand All @@ -88,70 +61,28 @@ public void evaluateParamsClosure() {

}

public void process(Closure<Object> closure) {
processClosure = closure;
}

public void evaluateProcessClosure() {
if (processClosure == null) {
return;
}
processClosure.setDelegate(this);
processClosure.setResolveStrategy(Closure.DELEGATE_FIRST);
Object mapping = processClosure.call();
if (mapping != null) {
process.setMapping(mapping.toString());
}

}

public void workflow(Closure<Object> closure) {
processClosure = closure;
public WorkflowMeta getWorkflow() {
return workflow;
}

public void evaluateWorkflowClosure() {
if (processClosure == null) {
return;
}
processClosure.setDelegate(this);
processClosure.setResolveStrategy(Closure.DELEGATE_FIRST);
Object mapping = processClosure.call();
if (mapping != null) {
workflow.setMapping(mapping.toString());
}

public void setWorkflow(Workflow workflow) {
this.workflow = workflow;
}

public void function(Closure<Object> closure) {
processClosure = closure;
public Snapshot snapshot(Object... object) {
return new Snapshot(object, test);
}

public void evaluateFunctionClosure() {
if (processClosure == null) {
return;
}
processClosure.setDelegate(this);
processClosure.setResolveStrategy(Closure.DELEGATE_FIRST);
Object mapping = processClosure.call();
if (mapping != null) {
process.setMapping(mapping.toString());
}

public void loadParams(String filename) throws CompilationFailedException, ClassNotFoundException, IOException {
params.load(filename);
}

public Snapshot snapshot(Object ... object ) {
return new Snapshot(object, test);
public void setName(String name) {
this.name = name;
}

public void init(String baseDir, String outputDir) {
params.setBaseDir(baseDir);
params.setOutputDir(outputDir);
this.baseDir = baseDir;
this.outputDir = outputDir;
public String getName() {
return name;
}

public void loadParams(String filename) throws CompilationFailedException, ClassNotFoundException, IOException {
params.load(filename);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package com.askimed.nf.test.lang.function;

import com.askimed.nf.test.core.ITest;
import com.askimed.nf.test.lang.TestContext;

import groovy.lang.Closure;

public class FunctionContext extends TestContext {

private Function function = new Function();

private Closure functionClosure;

public FunctionContext(ITest test) {
super(test);
}

public Function getFunction() {
return function;
}

public void setFunction(Function function) {
this.function = function;
}


public void function(Closure<Object> closure) {
functionClosure = closure;
}

public void evaluateFunctionClosure() {
if (functionClosure == null) {
return;
}
functionClosure.setDelegate(this);
functionClosure.setResolveStrategy(Closure.DELEGATE_FIRST);
Object mapping = functionClosure.call();
if (mapping != null) {
function.setMapping(mapping.toString());
}

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,7 @@

import com.askimed.nf.test.core.AbstractTest;
import com.askimed.nf.test.lang.TestCode;
import com.askimed.nf.test.lang.TestContext;
import com.askimed.nf.test.nextflow.NextflowCommand;
import com.askimed.nf.test.util.AnsiText;
import com.askimed.nf.test.util.FileUtil;

import groovy.lang.Closure;
Expand All @@ -34,14 +32,14 @@ public class FunctionTest extends AbstractTest {

private TestCode then;

private TestContext context;
private FunctionContext context;

private FunctionTestSuite parent;

public FunctionTest(FunctionTestSuite parent) {
super(parent);
this.parent = parent;
context = new TestContext(this);
context = new FunctionContext(this);
context.setName(parent.getFunction());
}

Expand Down Expand Up @@ -151,10 +149,6 @@ public void execute() throws Throwable {
context.getWorkflow().exitStatus = exitCode;
context.getWorkflow().success = (exitCode == 0);
context.getWorkflow().failed = (exitCode != 0);
if (isDebug()) {
System.out.println(AnsiText.padding("Output Channels:", 4));
context.getProcess().getOut().view();
}

then.execute(context);

Expand Down Expand Up @@ -188,7 +182,7 @@ protected void writeWorkflowMock(File file) throws IOException, CompilationFaile
binding.put("script", script);

// Get body of when closure
binding.put("mapping", context.getProcess().getMapping());
binding.put("mapping", context.getFunction().getMapping());

URL templateUrl = this.getClass().getResource("WorkflowMock.nf");
SimpleTemplateEngine engine = new SimpleTemplateEngine();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.askimed.nf.test.lang.pipeline;

import com.askimed.nf.test.core.ITest;
import com.askimed.nf.test.lang.TestContext;

public class PipelineContext extends TestContext {

public PipelineContext(ITest test) {
super(test);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

import com.askimed.nf.test.core.AbstractTest;
import com.askimed.nf.test.lang.TestCode;
import com.askimed.nf.test.lang.TestContext;
import com.askimed.nf.test.nextflow.NextflowCommand;

import groovy.lang.Closure;
Expand All @@ -24,12 +23,12 @@ public class PipelineTest extends AbstractTest {

private PipelineTestSuite parent;

private TestContext context;
private PipelineContext context;

public PipelineTest(PipelineTestSuite parent) {
super(parent);
this.parent = parent;
context = new TestContext(this);
context = new PipelineContext(this);
context.setName(parent.getName());
}

Expand Down Expand Up @@ -78,7 +77,6 @@ public void execute() throws Throwable {
}

context.evaluateParamsClosure();
context.evaluateProcessClosure();

if (isDebug()) {
System.out.println();
Expand Down
47 changes: 47 additions & 0 deletions src/main/java/com/askimed/nf/test/lang/process/ProcessContext.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package com.askimed.nf.test.lang.process;

import com.askimed.nf.test.core.ITest;
import com.askimed.nf.test.lang.TestContext;

import groovy.lang.Closure;

public class ProcessContext extends TestContext {

private Process process = new Process();

private Closure processClosure;

public ProcessContext(ITest test) {
super(test);
}

public void setName(String name) {
process.setName(name);
}

public Process getProcess() {
return process;
}

public void setProcess(Process process) {
this.process = process;
}

public void process(Closure<Object> closure) {
processClosure = closure;
}

public void evaluateProcessClosure() {
if (processClosure == null) {
return;
}
processClosure.setDelegate(this);
processClosure.setResolveStrategy(Closure.DELEGATE_FIRST);
Object mapping = processClosure.call();
if (mapping != null) {
process.setMapping(mapping.toString());
}

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@

import com.askimed.nf.test.core.AbstractTest;
import com.askimed.nf.test.lang.TestCode;
import com.askimed.nf.test.lang.TestContext;
import com.askimed.nf.test.nextflow.NextflowCommand;
import com.askimed.nf.test.util.AnsiText;
import com.askimed.nf.test.util.FileUtil;
Expand All @@ -36,13 +35,13 @@ public class ProcessTest extends AbstractTest {

private ProcessTestSuite parent;

private TestContext context;
private ProcessContext context;

public ProcessTest(ProcessTestSuite parent) {
super(parent);
this.parent = parent;
this.autoSort = parent.isAutoSort();
context = new TestContext(this);
context = new ProcessContext(this);
context.setName(parent.getProcess());
}

Expand Down
Loading

0 comments on commit 5ebc357

Please sign in to comment.