fixed run tests action clion/142.4524 dbe/142.4520
authorliana.bakradze <liana.bakradze@jetbrains.com>
Wed, 2 Sep 2015 20:10:44 +0000 (23:10 +0300)
committerliana.bakradze <liana.bakradze@jetbrains.com>
Wed, 2 Sep 2015 20:12:22 +0000 (23:12 +0300)
python/edu/course-creator-python/src/com/jetbrains/edu/coursecreator/actions/PyCCRunTestsAction.java
python/educational/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCRunTestsAction.java

index ca44d0cd7b815aa857a7bd9d8f820e682c84d047..1a8f22eaea469fe9e7322c08192db7267922d113 100644 (file)
@@ -26,6 +26,7 @@ import com.intellij.openapi.project.Project;
 import com.intellij.openapi.vfs.VirtualFile;
 import com.intellij.openapi.vfs.VirtualFileManager;
 import com.intellij.util.PathUtil;
+import com.jetbrains.edu.coursecreator.CCProjectService;
 import com.jetbrains.python.run.PythonConfigurationType;
 import com.jetbrains.python.run.PythonRunConfiguration;
 import org.jetbrains.annotations.NotNull;
@@ -43,7 +44,12 @@ public class PyCCRunTestsAction extends CCRunTestsAction {
 
     final PythonRunConfiguration configuration = (PythonRunConfiguration)settings.getConfiguration();
     configuration.setScriptName(testFile.getPath());
-    VirtualFile userFile = taskDir.findChild(virtualFile.getNameWithoutExtension() + ".py");
+    configuration.setWorkingDirectory(taskDir.getPath());
+    String taskFileName = CCProjectService.getRealTaskFileName(virtualFile.getName());
+    if (taskFileName == null) {
+      return;
+    }
+    VirtualFile userFile = taskDir.findChild(taskFileName);
     if (userFile == null) {
       return;
     }
@@ -57,6 +63,4 @@ public class PyCCRunTestsAction extends CCRunTestsAction {
     Executor executor = DefaultRunExecutor.getRunExecutorInstance();
     ProgramRunnerUtil.executeConfiguration(project, settings, executor);
   }
-
-
 }
index 778b34d420530988c66ad26c74174e7c87cd15c6..4fb9be8f3c2ff05e128327df7abd30e35c381a24 100644 (file)
@@ -142,28 +142,28 @@ public abstract class CCRunTestsAction extends AnAction {
           return;
         }
         clearTestEnvironment(taskDir, project);
+        CCLanguageManager manager = CCUtils.getStudyLanguageManager(course);
+        if (manager == null) {
+          return;
+        }
         for (final Map.Entry<String, TaskFile> entry : task.getTaskFiles().entrySet()) {
           final String name = entry.getKey();
-          CCLanguageManager manager = CCUtils.getStudyLanguageManager(course);
-          if (manager == null) {
-            return;
-          }
-          createTestEnvironment(taskDir, name, entry.getValue(), project);
-          FileTemplate testsTemplate = manager.getTestsTemplate(project);
-          if (testsTemplate == null) {
-            return;
-          }
-          VirtualFile testFile = taskDir.findChild(testsTemplate.getName() + "." + testsTemplate.getExtension());
-          if (testFile == null) {
-            return;
-          }
-          executeTests(project, virtualFile, taskDir, testFile);
+          createTaskFileForTest(taskDir, name, entry.getValue(), project);
+        }
+        FileTemplate testsTemplate = manager.getTestsTemplate(project);
+        if (testsTemplate == null) {
+          return;
+        }
+        VirtualFile testFile = taskDir.findChild(testsTemplate.getName() + "." + testsTemplate.getExtension());
+        if (testFile == null) {
+          return;
         }
+        executeTests(project, virtualFile, taskDir, testFile);
       }
     });
   }
 
-  private static void createTestEnvironment(@NotNull final VirtualFile taskDir, final String fileName, @NotNull final TaskFile taskFile,
+  private static void createTaskFileForTest(@NotNull final VirtualFile taskDir, final String fileName, @NotNull final TaskFile taskFile,
                                             @NotNull final Project project) {
     try {
       String answerFileName = FileUtil.getNameWithoutExtension(fileName) + ".answer";
@@ -184,8 +184,8 @@ public abstract class CCRunTestsAction extends AnAction {
       if (oldTaskFile != null) {
         oldTaskFile.delete(project);
       }
-      answerFile.copy(project, taskDir, fileName);
-      EduUtils.flushWindows(taskFile, answerFile, false);
+      VirtualFile copy = answerFile.copy(project, taskDir, fileName);
+      EduUtils.flushWindows(taskFile, copy, false);
       createResourceFiles(answerFile, project);
     }
     catch (IOException e) {