From 090e5c296b06951fb92f6a8233974519878d2236 Mon Sep 17 00:00:00 2001 From: Samu Vaittinen Date: Sun, 10 Dec 2017 17:30:19 +0200 Subject: [PATCH] Added method for deleting .results.json before running --- .../java/fi/helsinki/cs/tmc/langs/r/RPlugin.java | 10 ++++++++++ .../fi/helsinki/cs/tmc/langs/r/RPluginTest.java | 16 +++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/tmc-langs-r/src/main/java/fi/helsinki/cs/tmc/langs/r/RPlugin.java b/tmc-langs-r/src/main/java/fi/helsinki/cs/tmc/langs/r/RPlugin.java index 579352cf5..620dcf040 100644 --- a/tmc-langs-r/src/main/java/fi/helsinki/cs/tmc/langs/r/RPlugin.java +++ b/tmc-langs-r/src/main/java/fi/helsinki/cs/tmc/langs/r/RPlugin.java @@ -121,6 +121,8 @@ public Optional scanExercise(Path path, String exerciseName) { @Override public RunResult runTests(Path path) { ProcessRunner runner = new ProcessRunner(getTestCommand(), path); + + deleteResultsJson(path); try { ProcessResult result = runner.call(); @@ -189,6 +191,14 @@ public String[] getAvailablePointsCommand() { return ArrayUtils.addAll(command, args); } + public void deleteResultsJson(Path path) { + try { + Files.deleteIfExists(path.resolve(".results.json")); + } catch (Exception e) { + log.error("Could not delete .results.json", e); + } + } + /** * No operation for now. To be possibly implemented later: remove .Rdata, .Rhistory etc */ diff --git a/tmc-langs-r/src/test/java/fi/helsinki/cs/tmc/langs/r/RPluginTest.java b/tmc-langs-r/src/test/java/fi/helsinki/cs/tmc/langs/r/RPluginTest.java index 8646628e8..66b78cadd 100644 --- a/tmc-langs-r/src/test/java/fi/helsinki/cs/tmc/langs/r/RPluginTest.java +++ b/tmc-langs-r/src/test/java/fi/helsinki/cs/tmc/langs/r/RPluginTest.java @@ -120,7 +120,8 @@ public void runTestsReturnsStackTraceWhenPathDoesNotExist() { RunResult res = plugin.runTests(doesNotExist); String stackTrace = new String(res.logs.get(SpecialLogs.GENERIC_ERROR_MESSAGE)); - assertEquals("java.lang.NullPointerException", stackTrace.split("\n")[0]); + assertEquals("java.lang.NullPointerException", + stackTrace.split(System.getProperty("line.separator"))[0]); assertTrue(stackTrace.split("\n").length > 1); } @@ -155,4 +156,17 @@ public void getStudentFilePolicyReturnsRStudentFilePolicy() { assertTrue(policy instanceof RStudentFilePolicy); } + + @Test + public void resultsJsonIsDeletedBeforeRunning() throws IOException { + Files.createFile(simpleAllTestsPassProject.resolve(".results.json")); + plugin.deleteResultsJson(simpleAllTestsPassProject); + assertTrue(!Files.exists(simpleAllTestsPassProject.resolve(".results.json"))); + } + + @Test + public void deleteResultsJsonWorksCorrectlyWhenNoJson() throws IOException { + plugin.deleteResultsJson(simpleAllTestsPassProject); + assertTrue(!Files.exists(simpleAllTestsPassProject.resolve(".results.json"))); + } }