From 03e45cc030b86f7652396339a49fad3f4d556b45 Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Fri, 10 Jun 2016 02:20:58 +0300 Subject: [PATCH] - do not allow set incorrect path - avoid removing read only files (cherry picked from commit b480932) --- .../execution/testDiscovery/TestDiscoveryIndex.java | 3 +++ .../intellij/execution/testDiscovery/TestInfoHolder.java | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/java/execution/impl/src/com/intellij/execution/testDiscovery/TestDiscoveryIndex.java b/java/execution/impl/src/com/intellij/execution/testDiscovery/TestDiscoveryIndex.java index a66007bb6cd0..47da00fb4377 100644 --- a/java/execution/impl/src/com/intellij/execution/testDiscovery/TestDiscoveryIndex.java +++ b/java/execution/impl/src/com/intellij/execution/testDiscovery/TestDiscoveryIndex.java @@ -102,6 +102,9 @@ public class TestDiscoveryIndex implements ProjectComponent { } public void setRemoteTestRunDataPath(String path) { + if(!TestInfoHolder.isValidPath(path)) { + path = null; + } myRemoteTestRunDataController.init(path); // todo: should we remove our local run data ? } diff --git a/java/execution/impl/src/com/intellij/execution/testDiscovery/TestInfoHolder.java b/java/execution/impl/src/com/intellij/execution/testDiscovery/TestInfoHolder.java index 0c94d271a8ef..c167797bb4cd 100644 --- a/java/execution/impl/src/com/intellij/execution/testDiscovery/TestInfoHolder.java +++ b/java/execution/impl/src/com/intellij/execution/testDiscovery/TestInfoHolder.java @@ -62,6 +62,7 @@ final class TestInfoHolder { try { int version = readVersion(versionFile); if (version != VERSION) { + assert !readOnly; TestDiscoveryIndex.LOG.info("TestDiscoveryIndex was rewritten due to version change"); deleteAllIndexDataFiles(methodQNameToTestNameFile, testNameToUsedClassesAndMethodMapFile, @@ -285,6 +286,14 @@ final class TestInfoHolder { return myDisposed; } + public static boolean isValidPath(String path) { + try { + return readVersion(getVersionFile(path)) == VERSION; + } catch (IOException ex) { + return false; + } + } + private static class TestNamesExternalizer implements DataExternalizer { public void save(@NotNull DataOutput dataOutput, TIntArrayList testNameIds) throws IOException { for (int testNameId : testNameIds.toNativeArray()) DataInputOutputUtil.writeINT(dataOutput, testNameId);