From d3683e61704c41f1305b94dc80aa1662fc8cdb5a Mon Sep 17 00:00:00 2001 From: Rolf Madsen Date: Wed, 5 Apr 2017 11:15:41 +0200 Subject: [PATCH 1/5] added unit test to demonstrate that CTRL+C does not work --- src/embed_tests/Python.EmbeddingTest.csproj | 1 + src/embed_tests/TestConsoleInterrupt.cs | Bin 0 -> 8038 bytes 2 files changed, 1 insertion(+) create mode 100644 src/embed_tests/TestConsoleInterrupt.cs diff --git a/src/embed_tests/Python.EmbeddingTest.csproj b/src/embed_tests/Python.EmbeddingTest.csproj index 3ec0d4b57..ff2e813c8 100644 --- a/src/embed_tests/Python.EmbeddingTest.csproj +++ b/src/embed_tests/Python.EmbeddingTest.csproj @@ -80,6 +80,7 @@ + diff --git a/src/embed_tests/TestConsoleInterrupt.cs b/src/embed_tests/TestConsoleInterrupt.cs new file mode 100644 index 0000000000000000000000000000000000000000..d391388546b304c53388996c993541c24a50b4dc GIT binary patch literal 8038 zcmd5>X>S`<6uqDGD~9l8BC2UxC_*hDLYoE)vZ!`NrKCcM?Iczm+t^M@3H|H9Iq&A? zEwk8JP?6<~=Ph?VcX==W{CzGn8OTUZB$I9Y>dI8c7#qv6%%za$(w0*>#OOqx$%=&Q zcjPs84&1tzSaB$4(wFzxJC%2()qC;*D^D>y0^L`jG{XD9?MW%Ov37>pK4zQdDBoCm zSoZ?YGbb;f6VM%Ebh=>o3#>bY?j!6bKk7eQuqT$hke1VfyvE?$c3dwUrT#)%9jyKX ze5vCK=%@u}pmPXG`tV6?wN2=Dgz+9e>NQfJ| zYdY}B0P8Yv9Ae$f{if|nm*e!>A^v9g%T@Fs5kd=dY=Y0wY0OmvH=h9qM8+vrggR_u z?+Io`ZZB=eRrCTW{OLx!cpG6KHO<^wN;Adh9Gv*O=Vm|P?{nz@OTWk$_*LM&$_5W1 zZJiY+m^r$VKDK~amI(9udT*OFo@3|%^8{_ER_Q`IzD=D*jJFAXk6{gsoJ_vM*blNA z=wMXBs7qtR*4Q(O|9=4_8W!@VJ&0#^1&wbk~l-&G%9w%48^_VyyXc>CJgDm&X; zZ0`%$ci_;n4KEONdE|qAc?+8}Hcl|UR$+Og+r-n>gw_smt~nybc@BQhz+EGiC}W)V zAtNJ=k)u&L210dYjBz5F@x~m>(GdUC?58uLUW*T72~uW zqg3m}6G&0GXzO4{ISRRlx|Ka=ob8!n>=g9+;AYv4xbtHLvMX~=ANuF=MAqGBIZn&! z$~wZ_v{;9a75ar^t5;dwbhT%U&^ROf2=B6T^<)D!os}RRo3I+z zbJ~P7G~QUV_%;QqG&6-G%uTe*dxtsS6V%aAbk`%GbzQkhA*|S{TRcMUsZ6Z>iWVX^ zrLu^Bx_%F+vkr#zrm%il64qs1#o5>@mWD8Q!1LRK$H_TleqIcx_yfoei zm|>3HKt%Qs`*UP~3C7r!=e7ORn%fcQjRLuR3?9BSYtEOcKPW3}&JZ%tACx(KCk|39 zX;~!-Il@R?8uDEE%Yx4L27Ro>^ma{;#uzw_aY1f}%k6AQU zl}9aOUshy#o3m%z;X^B=&*JoP2JJlWIBV4JV&zSJkwp?`h=Bu8J^+T6t+yIItgv0z zndc=Q-cF(1+J&dykFDBdL9@~_mbA5@)ffrvdKfP~dFlMfGtC^HUcK&CGMs_d<)b{n z^AVm0n12fUU&>?mMmrHno-(6DJDqf#wjTnWXW*F5c^h>=i|4oIm@E8q zKQzU6mE0U#kNfsyvMVjufB&9PnZQB)9TdX61CG-dKLsE~T@P{;nAHx)gHFyfFSypQ3H1Z%7M zuKWg8aSa`x>&W>$g6jg{DI zZk%~4Qq4nJ)u=TOdt{cSuJasiK|gTsmyogmSNcG60q<+(Knm-@JjkzcCv_K}r+phU zi@#5J4zBDgHsLot`+00A68hIO%tL1X9x_Di(=F#=o(^f(I^_Ict+W9X#f{W$G-got3Z<^2Ww-Rc}rj`&ZP1)IH+)^vMs!njBI8nC3fS~Fy|HH_v>Jh1NS zjGYb_(e*d*@hyxZJRU3G%rsNKc}`T>*K4rht?^$gnG})(@GgP=EWxb z*qZv?wj%aPc(1%TqdmI8O*5%g_u!V-wFhrTu1Rh88J}HO1>MctdcBp`(=dAx-qG8= zc(X-~`ZAWawXyU?aF$t46Qg4hP1G Date: Wed, 5 Apr 2017 11:18:29 +0200 Subject: [PATCH 2/5] Fixed #449, by added initSigs as an optional parameter to PythonEngine.Initialize. --- src/runtime/pythonengine.cs | 9 +++++---- src/runtime/runtime.cs | 7 +++++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/runtime/pythonengine.cs b/src/runtime/pythonengine.cs index 1fd3b239a..0b0d21ed0 100644 --- a/src/runtime/pythonengine.cs +++ b/src/runtime/pythonengine.cs @@ -140,9 +140,9 @@ public static void Initialize() Initialize(setSysArgv: true); } - public static void Initialize(bool setSysArgv = true) + public static void Initialize(bool setSysArgv = true, bool initSigs = false) { - Initialize(Enumerable.Empty(), setSysArgv: setSysArgv); + Initialize(Enumerable.Empty(), setSysArgv: setSysArgv, initSigs: initSigs); } /// @@ -153,8 +153,9 @@ public static void Initialize(bool setSysArgv = true) /// more than once, though initialization will only happen on the /// first call. It is *not* necessary to hold the Python global /// interpreter lock (GIL) to call this method. + /// initSigs can be set to 1 to do default python signal configuration. This will override the way signals are handled by the application. /// - public static void Initialize(IEnumerable args, bool setSysArgv = true) + public static void Initialize(IEnumerable args, bool setSysArgv = true, bool initSigs = false) { if (!initialized) { @@ -164,7 +165,7 @@ public static void Initialize(IEnumerable args, bool setSysArgv = true) // during an initial "import clr", and the world ends shortly thereafter. // This is probably masking some bad mojo happening somewhere in Runtime.Initialize(). delegateManager = new DelegateManager(); - Runtime.Initialize(); + Runtime.Initialize(initSigs); initialized = true; Exceptions.Clear(); diff --git a/src/runtime/runtime.cs b/src/runtime/runtime.cs index 9ee693cf3..bcff98878 100644 --- a/src/runtime/runtime.cs +++ b/src/runtime/runtime.cs @@ -163,11 +163,11 @@ public class Runtime /// /// Initialize the runtime... /// - internal static void Initialize() + internal static void Initialize(bool initSigs) { if (Py_IsInitialized() == 0) { - Py_Initialize(); + Py_InitializeEx(initSigs ? 1 : 0); } if (PyEval_ThreadsInitialized() == 0) @@ -584,6 +584,9 @@ internal static unsafe long Refcount(IntPtr op) [DllImport(PythonDll, CallingConvention = CallingConvention.Cdecl)] internal static extern void Py_Initialize(); + [DllImport(PythonDll, CallingConvention = CallingConvention.Cdecl)] + internal static extern void Py_InitializeEx(int initsigs); + [DllImport(PythonDll, CallingConvention = CallingConvention.Cdecl)] internal static extern int Py_IsInitialized(); From 76ca919853a3e90d1c14f10db1026a065f6b0f29 Mon Sep 17 00:00:00 2001 From: Rolf Madsen Date: Wed, 5 Apr 2017 14:24:06 +0200 Subject: [PATCH 3/5] 64 bit support. --- src/embed_tests/TestConsoleInterrupt.cs | Bin 8038 -> 8406 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/embed_tests/TestConsoleInterrupt.cs b/src/embed_tests/TestConsoleInterrupt.cs index d391388546b304c53388996c993541c24a50b4dc..356350a708511f14d7121a6fda8f9ea06fd1fbb4 100644 GIT binary patch delta 136 zcmaE6cg=A_3YT^!LmGnug9d{qLmop3LjVvLG3YS_Gh{MUF{A=zY=KaL!Gb}Pfp@YZ zyEJn(kS^p?p8SAIZgLZs4W}7{34;=YHCR@b5v+zYl_7_r7^oYY4i~T*{mB8`YMcLY HWrzR(t&|<9 delta 24 gcmccS_{?rY3fJTdTv3w+csM4Pa9V86 Date: Thu, 6 Apr 2017 13:48:27 +0200 Subject: [PATCH 4/5] Fixed unittest to better test for success. Fixed kill support. --- src/embed_tests/TestConsoleInterrupt.cs | Bin 8406 -> 8872 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/embed_tests/TestConsoleInterrupt.cs b/src/embed_tests/TestConsoleInterrupt.cs index 356350a708511f14d7121a6fda8f9ea06fd1fbb4..0b96e9c76bf1650a0bf8467f7dd4ca2ea2bb88eb 100644 GIT binary patch delta 835 zcmbVLyGjF55S>7DLs-#7gA!uASwRvE>j#LSXbM3vXvD@QChLPd$xB5%dFCcT6RqU3_c@O zAgfu((yI0?>$$~64HeXNv=fS9co9YMy)nR-zBq@*{9Nu|XUp*dCHz|nR!EguoJ%@Jdk HAC%_{%f6|- delta 243 zcmZ4Cdd+cz5IegILq0pk33?Kswfa3WK$v`=fYCWKe T3ZUak7@Q|R Date: Thu, 6 Apr 2017 13:57:06 +0200 Subject: [PATCH 5/5] Added appveyor testresult artifacts --- appveyor.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/appveyor.yml b/appveyor.yml index c108801e7..7d2d52dba 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -55,6 +55,9 @@ on_finish: artifacts: - path: dist\* + - path: TestResult.xml + name: TestResult + type: xml notifications: - provider: Slack