From b6a39063317c4dd5791679d4e4c42c5ff4da7b6d Mon Sep 17 00:00:00 2001 From: Vinicius Avellar Moreira Date: Fri, 2 Jun 2017 09:35:40 -0300 Subject: [PATCH 1/3] Initial work on project paths --- .../demo_project/source/packages/package.pkb | 0 .../demo_project/source/packages/package.pks | 0 assets/demo_project/source/script.sql | 0 .../demo_project/source/triggers/trigger.trg | 0 .../io/github/utplsql/cli/FileWalker.java | 48 +++++++++++++++++++ .../io/github/utplsql/cli/RunCommand.java | 25 +++++++++- .../io/github/utplsql/cli/FileWalkerTest.java | 38 +++++++++++++++ 7 files changed, 110 insertions(+), 1 deletion(-) create mode 100644 assets/demo_project/source/packages/package.pkb create mode 100644 assets/demo_project/source/packages/package.pks create mode 100644 assets/demo_project/source/script.sql create mode 100644 assets/demo_project/source/triggers/trigger.trg create mode 100644 src/main/java/io/github/utplsql/cli/FileWalker.java create mode 100644 src/test/java/io/github/utplsql/cli/FileWalkerTest.java diff --git a/assets/demo_project/source/packages/package.pkb b/assets/demo_project/source/packages/package.pkb new file mode 100644 index 0000000..e69de29 diff --git a/assets/demo_project/source/packages/package.pks b/assets/demo_project/source/packages/package.pks new file mode 100644 index 0000000..e69de29 diff --git a/assets/demo_project/source/script.sql b/assets/demo_project/source/script.sql new file mode 100644 index 0000000..e69de29 diff --git a/assets/demo_project/source/triggers/trigger.trg b/assets/demo_project/source/triggers/trigger.trg new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/io/github/utplsql/cli/FileWalker.java b/src/main/java/io/github/utplsql/cli/FileWalker.java new file mode 100644 index 0000000..2fb108c --- /dev/null +++ b/src/main/java/io/github/utplsql/cli/FileWalker.java @@ -0,0 +1,48 @@ +package io.github.utplsql.cli; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +/** + * Created by Vinicius on 18/06/2017. + */ +public class FileWalker { + + public List getFileList(File baseDir, String inspectPath) { + return getFileList(baseDir, inspectPath, true); + } + + public List getFileList(File baseDir, String inspectPath, boolean relative) { + File inspectDir = new File(baseDir, inspectPath); + + if (!inspectDir.isDirectory()) + throw new IllegalArgumentException(inspectPath + " is not a directory."); + + List fileList = new ArrayList<>(); + listDirFiles(baseDir, inspectDir, fileList, relative); + + return fileList; + } + + private void listDirFiles(File baseDir, File directory, List fileList, boolean relative) { + File[] directoryFiles = directory.listFiles(); + + if (directoryFiles == null) + return; + + for (File file : directoryFiles) { + if (file.isFile()) { + String absolutePath = file.getAbsolutePath(); + + if (relative) + absolutePath = absolutePath.substring(baseDir.getAbsolutePath().length() + 1); + + fileList.add(absolutePath); + } else { + listDirFiles(baseDir, file, fileList, relative); + } + } + } + +} diff --git a/src/main/java/io/github/utplsql/cli/RunCommand.java b/src/main/java/io/github/utplsql/cli/RunCommand.java index fe80f2f..dac2108 100644 --- a/src/main/java/io/github/utplsql/cli/RunCommand.java +++ b/src/main/java/io/github/utplsql/cli/RunCommand.java @@ -8,6 +8,7 @@ import io.github.utplsql.api.reporter.Reporter; import io.github.utplsql.api.reporter.ReporterFactory; +import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.PrintStream; @@ -49,6 +50,12 @@ public class RunCommand { description = "enables printing of test results in colors as defined by ANSICONSOLE standards") private boolean colorConsole = false; + @Parameter(names = {"-source_path"}, description = "path to project source files") + private String sourcePath; + + @Parameter(names = {"-test_path"}, description = "path to project source files") + private String testPath; + public ConnectionInfo getConnectionInfo() { return connectionInfoList.get(0); } @@ -91,6 +98,19 @@ public void run() throws Exception { final List testPaths = getTestPaths(); final List reporterList = new ArrayList<>(); + final File baseDir = new File("").getAbsoluteFile(); + List sourceFilesTmp = null; + List testFilesTmp = null; + + if (this.sourcePath != null) + sourceFilesTmp = new FileWalker().getFileList(baseDir, this.sourcePath); + + if (this.testPath != null) + testFilesTmp = new FileWalker().getFileList(baseDir, this.testPath); + + final List sourceFiles = sourceFilesTmp; + final List testFiles = testFilesTmp; + if (testPaths.isEmpty()) testPaths.add(ci.getUser()); // Do the reporters initialization, so we can use the id to run and gather results. @@ -108,11 +128,14 @@ public void run() throws Exception { ExecutorService executorService = Executors.newFixedThreadPool(1 + reporterList.size()); + // Run tests. executorService.submit(() -> { try (Connection conn = ci.getConnection()){ new TestRunner() .addPathList(testPaths) .addReporterList(reporterList) + .withSourceFiles(sourceFiles) + .withTestFiles(testFiles) .colorConsole(colorConsole) .run(conn); } catch (SQLException e) { @@ -121,7 +144,7 @@ public void run() throws Exception { } }); - + // Gather each reporter results on a separate thread. for (ReporterOptions ro : reporterOptionsList) { executorService.submit(() -> { List printStreams = new ArrayList<>(); diff --git a/src/test/java/io/github/utplsql/cli/FileWalkerTest.java b/src/test/java/io/github/utplsql/cli/FileWalkerTest.java new file mode 100644 index 0000000..aa6f2b9 --- /dev/null +++ b/src/test/java/io/github/utplsql/cli/FileWalkerTest.java @@ -0,0 +1,38 @@ +package io.github.utplsql.cli; + +import org.junit.Assert; +import org.junit.Test; + +import java.io.File; +import java.util.List; + +/** + * Created by Vinicius on 18/06/2017. + */ +public class FileWalkerTest { + + private final File BASE_DIR = new File(new File("").getAbsolutePath(), "assets/demo_project"); + + @Test + public void fileWalker_Relative() { + List fileList = new FileWalker().getFileList(BASE_DIR, "source"); + Assert.assertArrayEquals(new Object[] { + "source/packages/package.pkb".replace('/', File.separatorChar), + "source/packages/package.pks".replace('/', File.separatorChar), + "source/script.sql".replace('/', File.separatorChar), + "source/triggers/trigger.trg".replace('/', File.separatorChar), + }, fileList.toArray()); + } + + @Test + public void fileWalker_Absolute() { + List fileList = new FileWalker().getFileList(BASE_DIR, "source", false); + Assert.assertArrayEquals(new Object[] { + BASE_DIR.getAbsolutePath() + "/source/packages/package.pkb".replace('/', File.separatorChar), + BASE_DIR.getAbsolutePath() + "/source/packages/package.pks".replace('/', File.separatorChar), + BASE_DIR.getAbsolutePath() + "/source/script.sql".replace('/', File.separatorChar), + BASE_DIR.getAbsolutePath() + "/source/triggers/trigger.trg".replace('/', File.separatorChar), + }, fileList.toArray()); + } + +} From 9e080f5ba94605e18627deea8b6b81804bc9fce9 Mon Sep 17 00:00:00 2001 From: Vinicius Avellar Moreira Date: Mon, 19 Jun 2017 10:21:21 -0300 Subject: [PATCH 2/3] Sort file list before compare --- src/test/java/io/github/utplsql/cli/FileWalkerTest.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/test/java/io/github/utplsql/cli/FileWalkerTest.java b/src/test/java/io/github/utplsql/cli/FileWalkerTest.java index aa6f2b9..4752df6 100644 --- a/src/test/java/io/github/utplsql/cli/FileWalkerTest.java +++ b/src/test/java/io/github/utplsql/cli/FileWalkerTest.java @@ -4,6 +4,7 @@ import org.junit.Test; import java.io.File; +import java.util.Collections; import java.util.List; /** @@ -16,6 +17,7 @@ public class FileWalkerTest { @Test public void fileWalker_Relative() { List fileList = new FileWalker().getFileList(BASE_DIR, "source"); + Collections.sort(fileList); Assert.assertArrayEquals(new Object[] { "source/packages/package.pkb".replace('/', File.separatorChar), "source/packages/package.pks".replace('/', File.separatorChar), @@ -27,6 +29,7 @@ public void fileWalker_Relative() { @Test public void fileWalker_Absolute() { List fileList = new FileWalker().getFileList(BASE_DIR, "source", false); + Collections.sort(fileList); Assert.assertArrayEquals(new Object[] { BASE_DIR.getAbsolutePath() + "/source/packages/package.pkb".replace('/', File.separatorChar), BASE_DIR.getAbsolutePath() + "/source/packages/package.pks".replace('/', File.separatorChar), From 115d94c9b4d09d5977f36e27bbf93dbbd757451e Mon Sep 17 00:00:00 2001 From: Vinicius Avellar Moreira Date: Mon, 19 Jun 2017 13:34:19 -0300 Subject: [PATCH 3/3] Fix test_path parameter description --- src/main/java/io/github/utplsql/cli/RunCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/github/utplsql/cli/RunCommand.java b/src/main/java/io/github/utplsql/cli/RunCommand.java index dac2108..55def57 100644 --- a/src/main/java/io/github/utplsql/cli/RunCommand.java +++ b/src/main/java/io/github/utplsql/cli/RunCommand.java @@ -53,7 +53,7 @@ public class RunCommand { @Parameter(names = {"-source_path"}, description = "path to project source files") private String sourcePath; - @Parameter(names = {"-test_path"}, description = "path to project source files") + @Parameter(names = {"-test_path"}, description = "path to project test files") private String testPath; public ConnectionInfo getConnectionInfo() {