Skip to content

Commit 138a0fd

Browse files
committed
Use walkFileTree for cleaning
1 parent 8f12aa3 commit 138a0fd

File tree

1 file changed

+26
-5
lines changed

1 file changed

+26
-5
lines changed

tmc-langs-python3/src/main/java/fi/helsinki/cs/tmc/langs/python3/Python3Plugin.java

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,12 @@
2727

2828
import java.io.File;
2929
import java.io.IOException;
30+
import java.nio.file.FileVisitResult;
3031
import java.nio.file.Files;
3132
import java.nio.file.Path;
3233
import java.nio.file.Paths;
34+
import java.nio.file.SimpleFileVisitor;
35+
import java.nio.file.attribute.BasicFileAttributes;
3336
import java.util.List;
3437
import java.util.Locale;
3538
import java.util.Map;
@@ -42,8 +45,8 @@ public final class Python3Plugin extends AbstractLanguagePlugin {
4245
private static final Path INIT_PY_PATH = Paths.get("__init__.py");
4346
private static final Path TMC_TEST_LIBRARY_PATH = Paths.get("tmc");
4447
private static final Path MAIN_PY_PATH = Paths.get("__main__.py");
45-
private static final String CANNOT_CLEAN_FILES_MESSAGE = "Failed to clean files.";
4648

49+
private static final String CANNOT_CLEAN_FILES_MESSAGE = "Failed to clean files.";
4750
private static final String CANNOT_RUN_TESTS_MESSAGE = "Failed to run tests.";
4851
private static final String CANNOT_PARSE_TEST_RESULTS_MESSAGE = "Failed to read test results.";
4952
private static final String CANNOT_SCAN_EXERCISE_MESSAGE = "Failed to scan exercise.";
@@ -156,11 +159,29 @@ private String[] getTestCommand() {
156159

157160
@Override
158161
public void clean(Path path) {
159-
String[] command = {"/bin/bash", "-c", "find . -type d -name __pycache__ -exec rm -r {} \\+ -o -type f -name .available_points.json -delete -o -type f -name .tmc_test_results.json -delete" };
160-
ProcessRunner runner = new ProcessRunner(command, path);
161162
try {
162-
runner.call();
163-
} catch (Exception e) {
163+
Files.walkFileTree(path, new SimpleFileVisitor<Path>() {
164+
@Override
165+
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
166+
throws IOException {
167+
if (file.endsWith(".available_points.json")
168+
|| file.endsWith(".tmc_test_results.json")
169+
|| file.toString().contains("__pycache__")) {
170+
Files.delete(file);
171+
}
172+
return FileVisitResult.CONTINUE;
173+
}
174+
175+
@Override
176+
public FileVisitResult postVisitDirectory(Path dir, IOException exc)
177+
throws IOException {
178+
if (dir.endsWith("__pycache__")) {
179+
Files.delete(dir);
180+
}
181+
return FileVisitResult.CONTINUE;
182+
}
183+
});
184+
} catch (IOException e) {
164185
log.error(CANNOT_CLEAN_FILES_MESSAGE, e);
165186
}
166187
}

0 commit comments

Comments
 (0)