From 2d6f3714dc90f7ada0977a087b2a36054c4528a0 Mon Sep 17 00:00:00 2001 From: "Denis Akhiyarov (@denfromufa)" Date: Sun, 22 Jan 2017 17:36:06 -0600 Subject: [PATCH 1/2] Add sys.args tests --- src/embed_tests/pyimport.cs | 6 ++++-- src/tests/PyImportTest/sysargv.py | 5 +++++ src/tests/runtests.py | 3 +++ src/tests/test_sysargv.py | 17 +++++++++++++++++ src/tests/tests.pyproj | 2 ++ 5 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 src/tests/PyImportTest/sysargv.py create mode 100644 src/tests/test_sysargv.py diff --git a/src/embed_tests/pyimport.cs b/src/embed_tests/pyimport.cs index e4ba8d546..2c97c8a7f 100644 --- a/src/embed_tests/pyimport.cs +++ b/src/embed_tests/pyimport.cs @@ -52,8 +52,10 @@ public void TearDown() [Test] public void TestDottedName() { - PyObject module = PythonEngine.ImportModule("PyImportTest.test.one"); - Assert.IsNotNull(module, ">>> import PyImportTest.test.one # FAILED"); + PyObject module1 = PythonEngine.ImportModule("PyImportTest.test.one"); + Assert.IsNotNull(module1, ">>> import PyImportTest.test.one # FAILED"); + PyObject module2 = PythonEngine.ImportModule("PyImportTest.sysargv"); + Assert.IsNotNull(module2, ">>> import PyImportTest.sysargv # FAILED"); } } } diff --git a/src/tests/PyImportTest/sysargv.py b/src/tests/PyImportTest/sysargv.py new file mode 100644 index 000000000..2e1508bff --- /dev/null +++ b/src/tests/PyImportTest/sysargv.py @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- + +import sys +# if argv is available, as expected, then no exception +num_args = len(sys.argv) diff --git a/src/tests/runtests.py b/src/tests/runtests.py index 9b77f99dd..92d9ecbd0 100644 --- a/src/tests/runtests.py +++ b/src/tests/runtests.py @@ -23,6 +23,9 @@ clr.AddReference("System.Management") test_modules = ( + # has to be first test before other module import clr + 'test_sysargv', + # test_module passes on its own, but not here if # other test modules that import System.Windows.Forms # run first. They must not do module level import/AddReference() diff --git a/src/tests/test_sysargv.py b/src/tests/test_sysargv.py new file mode 100644 index 000000000..eefb4d341 --- /dev/null +++ b/src/tests/test_sysargv.py @@ -0,0 +1,17 @@ +# -*- coding: utf-8 -*- + +import unittest +import sys + +class SysArgvTests(unittest.TestCase): + """Test sys.argv state.""" + + def test_sys_argv_state(self): + """Test sys.argv state doesn't change after clr import.""" + argv = sys.argv + import clr + self.assertTrue(argv == sys.argv) + + +def test_suite(): + return unittest.makeSuite(SysArgvTests) diff --git a/src/tests/tests.pyproj b/src/tests/tests.pyproj index cf8f74a4a..5d042249e 100644 --- a/src/tests/tests.pyproj +++ b/src/tests/tests.pyproj @@ -29,12 +29,14 @@ + + From 2eef75feeef0c084b6dba5cd955ad0ebc5a112cb Mon Sep 17 00:00:00 2001 From: Victor Uriarte Date: Wed, 8 Feb 2017 10:33:08 -0700 Subject: [PATCH 2/2] Separate into smaller tests --- src/embed_tests/pyimport.cs | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/embed_tests/pyimport.cs b/src/embed_tests/pyimport.cs index 2c97c8a7f..dc9d90fe2 100644 --- a/src/embed_tests/pyimport.cs +++ b/src/embed_tests/pyimport.cs @@ -1,9 +1,7 @@ using System; -using System.Reflection; -using System.Collections.Generic; +using System.IO; using NUnit.Framework; using Python.Runtime; -using System.IO; namespace Python.EmbeddingTest { @@ -52,10 +50,18 @@ public void TearDown() [Test] public void TestDottedName() { - PyObject module1 = PythonEngine.ImportModule("PyImportTest.test.one"); - Assert.IsNotNull(module1, ">>> import PyImportTest.test.one # FAILED"); - PyObject module2 = PythonEngine.ImportModule("PyImportTest.sysargv"); - Assert.IsNotNull(module2, ">>> import PyImportTest.sysargv # FAILED"); + PyObject module = PythonEngine.ImportModule("PyImportTest.test.one"); + Assert.IsNotNull(module, ">>> import PyImportTest.test.one # FAILED"); + } + + /// + /// Tests that sys.args is set. If it wasn't exception would be raised. + /// + [Test] + public void TestSysArgsImportException() + { + PyObject module = PythonEngine.ImportModule("PyImportTest.sysargv"); + Assert.IsNotNull(module, ">>> import PyImportTest.sysargv # FAILED"); } } }