Add test for '-m package' interpreter option in debug mode (PY-15230)
authorDmitry Trofimov <dmitry.trofimov@jetbrains.com>
Sun, 30 Oct 2016 12:05:30 +0000 (13:05 +0100)
committerDmitry Trofimov <dmitry.trofimov@jetbrains.com>
Sun, 30 Oct 2016 12:05:30 +0000 (13:05 +0100)
Currently -m is removed while package stays in the options. This breaks the process launch.

python/src/com/jetbrains/python/debugger/PyDebugRunner.java
python/testData/debug/runner.py [new file with mode: 0644]
python/testSrc/com/jetbrains/env/python/PythonDebuggerTest.java

index b6e88780f2ba18a591e810e2ea89ea4801544ebd..499db83a1e2c6efff66f1bc6a651a5c827e1e7cd 100644 (file)
@@ -33,7 +33,6 @@ import com.intellij.openapi.roots.OrderRootType;
 import com.intellij.openapi.roots.ProjectRootManager;
 import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.openapi.vfs.VirtualFile;
-import com.intellij.remote.RemoteSdkAdditionalData;
 import com.intellij.xdebugger.XDebugProcess;
 import com.intellij.xdebugger.XDebugProcessStarter;
 import com.intellij.xdebugger.XDebugSession;
@@ -340,7 +339,7 @@ public class PyDebugRunner extends GenericProgramRunner {
   public static void configureCommonDebugParameters(@NotNull Project project,
                                                     @NotNull ParamsGroup debugParams) {
     if (isModule) {
-      debugParams.addParameter("--module");
+      debugParams.addParameter(MODULE_PARAM);
     }
 
     if (ApplicationManager.getApplication().isUnitTestMode()) {
diff --git a/python/testData/debug/runner.py b/python/testData/debug/runner.py
new file mode 100644 (file)
index 0000000..cfb47d5
--- /dev/null
@@ -0,0 +1,11 @@
+import runpy
+import sys
+
+print(sys.argv)
+
+x = 1
+program = sys.argv[1]
+sys.argv = sys.argv[1:]
+
+
+runpy.run_path(program)
\ No newline at end of file
index 9646906b89d9dddee12f1e053a9dfd35ff0047a2..c27cfbeea352322b5ee9d1cf7f927ed7fd6813c4 100644 (file)
@@ -26,6 +26,7 @@ import com.jetbrains.python.debugger.PyExceptionBreakpointType;
 import com.jetbrains.python.debugger.pydev.PyDebugCallback;
 import com.jetbrains.python.debugger.settings.PyDebuggerSettings;
 import com.jetbrains.python.debugger.settings.PySteppingFilter;
+import com.jetbrains.python.sdk.PythonEnvUtil;
 import com.jetbrains.python.sdk.flavors.PythonSdkFlavor;
 import com.jetbrains.python.sdkTools.SdkCreationType;
 import org.jetbrains.annotations.NotNull;
@@ -44,33 +45,39 @@ import static org.junit.Assert.assertNull;
  */
 
 public class PythonDebuggerTest extends PyEnvTestCase {
-  @Test
-  public void testBreakpointStopAndEval() throws Exception {
-    runPythonTest(new PyDebuggerTask("/debug", "test1.py") {
-      @Override
-      public void before() throws Exception {
-        toggleBreakpoint(getFilePath(getScriptName()), 3);
-      }
+  private class BreakpointStopAndEvalTask extends PyDebuggerTask {
+    public BreakpointStopAndEvalTask() {
+      super("/debug", "test1.py");
+    }
 
-      @Override
-      public void testing() throws Exception {
-        waitForPause();
+    @Override
+    public void before() throws Exception {
+      toggleBreakpoint(getFilePath(getScriptName()), 3);
+    }
 
-        eval("i").hasValue("0");
+    @Override
+    public void testing() throws Exception {
+      waitForPause();
 
-        resume();
+      eval("i").hasValue("0");
 
-        waitForPause();
+      resume();
 
-        eval("i").hasValue("1");
+      waitForPause();
 
-        resume();
+      eval("i").hasValue("1");
 
-        waitForPause();
+      resume();
 
-        eval("i").hasValue("2");
-      }
-    });
+      waitForPause();
+
+      eval("i").hasValue("2");
+    }
+  }
+
+  @Test
+  public void testBreakpointStopAndEval() throws Exception {
+    runPythonTest(new BreakpointStopAndEvalTask());
   }
 
   @Test
@@ -1125,5 +1132,20 @@ public class PythonDebuggerTest extends PyEnvTestCase {
       }
     });
   }
+
+  @Staging
+  @Test
+  public void testModuleInterpreterOption() throws Exception {
+    runPythonTest(new BreakpointStopAndEvalTask() {
+      @Override
+      public void before() throws Exception {
+        super.before();
+
+        PythonEnvUtil.addToPythonPath(myRunConfiguration.getEnvs(), new File(getFilePath(getScriptName())).getParent());
+
+        myRunConfiguration.setInterpreterOptions("-m runner");
+      }
+    });
+  }
 }