Prevent NPE (IDEA-CR-13585)
authorDmitry Trofimov <dmitry.trofimov@jetbrains.com>
Tue, 13 Sep 2016 20:07:00 +0000 (22:07 +0200)
committerDmitry Trofimov <dmitry.trofimov@jetbrains.com>
Tue, 13 Sep 2016 20:07:00 +0000 (22:07 +0200)
python/src/com/jetbrains/python/run/PyVirtualEnvReader.kt

index 132a993c9bfe998a543f46dde1a26713ac10d076..aa94764afb37eeb5cd875fbfb341f14ba28be59a 100644 (file)
@@ -15,6 +15,7 @@
  */
 package com.jetbrains.python.run
 
+import com.intellij.openapi.diagnostic.Logger
 import com.intellij.openapi.util.SystemInfo
 import com.intellij.openapi.util.io.FileUtil
 import com.intellij.util.EnvironmentUtil
@@ -26,7 +27,9 @@ import java.io.File
  */
 
 
-class PyVirtualEnvReader(virtualEnvSdkPath: String) : EnvironmentUtil.ShellEnvReader() {
+class PyVirtualEnvReader(val virtualEnvSdkPath: String) : EnvironmentUtil.ShellEnvReader() {
+  private val LOG = Logger.getInstance("#com.jetbrains.python.run.PyVirtualEnvReader")
+
   val activate = findActivateScript(virtualEnvSdkPath, shell)
 
   override fun readShellEnv(): MutableMap<String, String> {
@@ -34,11 +37,17 @@ class PyVirtualEnvReader(virtualEnvSdkPath: String) : EnvironmentUtil.ShellEnvRe
       return super.readShellEnv()
     }
     else {
-      return readVirtualEnvOnWindows();
+      if (activate != null) {
+        return readVirtualEnvOnWindows(activate);
+      }
+      else {
+        LOG.error("Can't find activate script for $virtualEnvSdkPath")
+        return mutableMapOf();
+      }
     }
   }
 
-  private fun readVirtualEnvOnWindows(): MutableMap<String, String> {
+  private fun readVirtualEnvOnWindows(activate: String): MutableMap<String, String> {
     val activateFile = FileUtil.createTempFile("pycharm-virualenv-activate.", ".bat", false)
     val envFile = FileUtil.createTempFile("pycharm-virualenv-envs.", ".tmp", false)
     try {