PY-15975 Any python configuration is debuggable except one that declares itself not...
authorIlya.Kazakevich <Ilya.Kazakevich@jetbrains.com>
Fri, 4 Sep 2015 13:56:15 +0000 (16:56 +0300)
committerIlya.Kazakevich <Ilya.Kazakevich@jetbrains.com>
Fri, 4 Sep 2015 13:56:15 +0000 (16:56 +0300)
python/src/com/jetbrains/python/debugger/PyDebugRunner.java

index c39fdb22bf3b433f75fd6f34ed3c3886d00c308f..1e7ec4331c60c3535e69064e08af3fa0ba915649 100644 (file)
@@ -82,10 +82,28 @@ public class PyDebugRunner extends GenericProgramRunner {
       // If not debug at all
       return false;
     }
+    /**
+     * Any python configuration is debuggable unless it explicitly declares itself as DebugAwareConfiguration and denies it
+     * with canRunUnderDebug == false
+     */
+
+    if (profile instanceof WrappingRunConfiguration) {
+      // If configuration is wrapper -- unwrap it and check
+      return isDebuggable(((WrappingRunConfiguration<?>)profile).getPeer());
+    }
+    return isDebuggable(profile);
+  }
+
+  private static boolean isDebuggable(@NotNull final RunProfile profile) {
     if (profile instanceof DebugAwareConfiguration) {
       // if configuration knows whether debug is allowed
       return ((DebugAwareConfiguration)profile).canRunUnderDebug();
     }
+    if (profile instanceof AbstractPythonRunConfiguration) {
+      // Any python configuration is debuggable
+      return true;
+    }
+    // No even a python configuration
     return false;
   }