From b408ee432fe80118bbed033611c2071907a5b57a Mon Sep 17 00:00:00 2001 From: Thomas Decaux Date: Tue, 22 Feb 2022 12:08:03 +0100 Subject: [PATCH] fix(cli): tests runner --- djobi-cli/build.gradle | 6 ++- .../io/datatok/djobi/cli/CLITestRunner.java | 49 +++++++++++++++++++ .../djobi/cli/DumpActionCommandTest.java | 2 + .../datatok/djobi/cli/DumpEnvCommandTest.java | 2 + .../djobi/cli/DumpPipelineCommandTest.java | 2 + .../djobi/cli/RunPipelineCommandTest.java | 2 + .../cli/utils/PipelineRequestFactoryTest.java | 3 ++ .../org.junit.jupiter.api.extension.Extension | 1 - 8 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 djobi-cli/src/test/java/io/datatok/djobi/cli/CLITestRunner.java delete mode 100644 djobi-cli/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension diff --git a/djobi-cli/build.gradle b/djobi-cli/build.gradle index 4105325..862e2f1 100644 --- a/djobi-cli/build.gradle +++ b/djobi-cli/build.gradle @@ -33,7 +33,11 @@ dependencies { * Need core tests code */ testImplementation(project(":djobi-tests")) - testImplementation(project(':djobi-core')) + + testRuntimeOnly( + project(path: ':djobi-core'), + project(path: ':djobi-core', configuration: 'spark') + ) /** * To run Djobi via Idea. diff --git a/djobi-cli/src/test/java/io/datatok/djobi/cli/CLITestRunner.java b/djobi-cli/src/test/java/io/datatok/djobi/cli/CLITestRunner.java new file mode 100644 index 0000000..ff9a1ee --- /dev/null +++ b/djobi-cli/src/test/java/io/datatok/djobi/cli/CLITestRunner.java @@ -0,0 +1,49 @@ +package io.datatok.djobi.cli; + +import com.google.inject.Injector; +import io.datatok.djobi.application.ApplicationBuilder; +import io.datatok.djobi.application.Djobi; +import io.datatok.djobi.cli.utils.CLISimpleUtils; +import io.datatok.djobi.cli.utils.CLIUtils; +import io.datatok.djobi.engine.Engine; +import io.datatok.djobi.plugins.report.Reporter; +import io.datatok.djobi.plugins.s3.S3Plugin; +import io.datatok.djobi.plugins.stages.DefaultActionsPlugin; +import io.datatok.djobi.spark.SparkPlugin; +import io.datatok.djobi.test.TestStdoutReporter; +import org.junit.jupiter.api.extension.ExtensionContext; +import org.junit.jupiter.api.extension.TestInstancePostProcessor; + +public class CLITestRunner implements TestInstancePostProcessor { + static public Injector injector; + + public CLITestRunner() { + if (injector == null) { + try { + final Djobi application = + new ApplicationBuilder() + .configure() + .addDependency(Reporter.class, TestStdoutReporter.class) + .addDependency(CLIUtils.class, CLISimpleUtils.class) + .readReleaseNote() + .addPlugin(new DefaultActionsPlugin()) + .addPlugin(new SparkPlugin()) + .addPlugin(new S3Plugin()) + .build() + ; + + injector = application.getInjector(); + + injector.getInstance(Engine.class).setClearJobAfterExecution(false); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + @Override + public void postProcessTestInstance(Object testInstance, ExtensionContext context) + throws Exception { + injector.injectMembers(testInstance); + } +} diff --git a/djobi-cli/src/test/java/io/datatok/djobi/cli/DumpActionCommandTest.java b/djobi-cli/src/test/java/io/datatok/djobi/cli/DumpActionCommandTest.java index 6152954..357ae44 100644 --- a/djobi-cli/src/test/java/io/datatok/djobi/cli/DumpActionCommandTest.java +++ b/djobi-cli/src/test/java/io/datatok/djobi/cli/DumpActionCommandTest.java @@ -5,11 +5,13 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import java.io.ByteArrayOutputStream; import java.io.PrintStream; import java.util.HashMap; +@ExtendWith(CLITestRunner.class) class DumpActionCommandTest { @Inject diff --git a/djobi-cli/src/test/java/io/datatok/djobi/cli/DumpEnvCommandTest.java b/djobi-cli/src/test/java/io/datatok/djobi/cli/DumpEnvCommandTest.java index d6b015e..07cff6b 100644 --- a/djobi-cli/src/test/java/io/datatok/djobi/cli/DumpEnvCommandTest.java +++ b/djobi-cli/src/test/java/io/datatok/djobi/cli/DumpEnvCommandTest.java @@ -5,12 +5,14 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import picocli.CommandLine; import java.io.ByteArrayOutputStream; import java.io.PrintStream; import java.util.HashMap; +@ExtendWith(CLITestRunner.class) class DumpEnvCommandTest { @Inject diff --git a/djobi-cli/src/test/java/io/datatok/djobi/cli/DumpPipelineCommandTest.java b/djobi-cli/src/test/java/io/datatok/djobi/cli/DumpPipelineCommandTest.java index b4742a4..23ba485 100644 --- a/djobi-cli/src/test/java/io/datatok/djobi/cli/DumpPipelineCommandTest.java +++ b/djobi-cli/src/test/java/io/datatok/djobi/cli/DumpPipelineCommandTest.java @@ -7,12 +7,14 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import picocli.CommandLine; import java.io.ByteArrayOutputStream; import java.io.PrintStream; import java.util.HashMap; +@ExtendWith(CLITestRunner.class) class DumpPipelineCommandTest { @Inject diff --git a/djobi-cli/src/test/java/io/datatok/djobi/cli/RunPipelineCommandTest.java b/djobi-cli/src/test/java/io/datatok/djobi/cli/RunPipelineCommandTest.java index 94e8c40..5cef999 100644 --- a/djobi-cli/src/test/java/io/datatok/djobi/cli/RunPipelineCommandTest.java +++ b/djobi-cli/src/test/java/io/datatok/djobi/cli/RunPipelineCommandTest.java @@ -8,12 +8,14 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import java.io.ByteArrayOutputStream; import java.io.PrintStream; import static com.github.stefanbirkner.systemlambda.SystemLambda.*; +@ExtendWith(CLITestRunner.class) public class RunPipelineCommandTest { @Inject diff --git a/djobi-cli/src/test/java/io/datatok/djobi/cli/utils/PipelineRequestFactoryTest.java b/djobi-cli/src/test/java/io/datatok/djobi/cli/utils/PipelineRequestFactoryTest.java index d9c83d4..4cac39c 100644 --- a/djobi-cli/src/test/java/io/datatok/djobi/cli/utils/PipelineRequestFactoryTest.java +++ b/djobi-cli/src/test/java/io/datatok/djobi/cli/utils/PipelineRequestFactoryTest.java @@ -1,14 +1,17 @@ package io.datatok.djobi.cli.utils; import com.google.inject.Inject; +import io.datatok.djobi.cli.CLITestRunner; import io.datatok.djobi.engine.PipelineExecutionRequest; import io.datatok.djobi.utils.EnvProvider; import io.datatok.djobi.utils.MyMapUtils; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import java.util.Arrays; +@ExtendWith(CLITestRunner.class) public class PipelineRequestFactoryTest { @Inject diff --git a/djobi-cli/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension b/djobi-cli/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension deleted file mode 100644 index dc6b412..0000000 --- a/djobi-cli/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension +++ /dev/null @@ -1 +0,0 @@ -io.datatok.djobi.test.MyTestRunner \ No newline at end of file