From 314945748df59e9cf3155e657a8934884826ff1e Mon Sep 17 00:00:00 2001 From: mcbarton <150042563+mcbarton@users.noreply.github.com> Date: Wed, 22 May 2024 19:15:01 +0100 Subject: [PATCH 1/8] Attempt to fix failing Windows XCppTests --- test/test_xcpp_kernel.py | 82 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 81 insertions(+), 1 deletion(-) diff --git a/test/test_xcpp_kernel.py b/test/test_xcpp_kernel.py index f6c470a9..f89004ff 100644 --- a/test/test_xcpp_kernel.py +++ b/test/test_xcpp_kernel.py @@ -127,11 +127,91 @@ class XCppTests(jupyter_kernel_test.KernelTests): } #include "xcpp/xdisplay.hpp" im::image marie("../notebooks/images/marie.png"); - xcpp::display(marie);""", + xcpp::display(marie); + """, 'mime': 'image/png' } ] +if platform.system() == 'Windows': + class XCppTests(jupyter_kernel_test.KernelTests): + + kernel_name = 'xcpp20' + + # language_info.name in a kernel_info_reply should match this + language_name = 'C++' + + # Code that should write the exact string `hello, world` to STDOUT + code_hello_world = """ + #include "stdafx.h" + #include + std::cout << "hello, world" << std::endl; + """ + + # Code that should cause (any) text to be written to STDERR + code_stderr = """ + #include "stdafx.h" + #include + std::cerr << "oops" << std::endl;""" + + # Pager: code that should display something (anything) in the pager + code_page_something = "?std::vector" + + # Exception throwing + # TODO: Remove 'if' when test work on MacOS/arm64. Throw Exceptions make + # kernel/test non-workable. + ###code_generate_error = 'throw std::runtime_error("Unknown exception");' if platform.system() != "Darwin" or platform.processor() != 'arm' else '' + + # Samples of code which generate a result value (ie, some text + # displayed as Out[n]) + #code_execute_result = [ + # { + # 'code': '6 * 7', + # 'result': '42' + # } + #] + + # Samples of code which should generate a rich display output, and + # the expected MIME type + code_display_data = [ + { + 'code': """ + #include "stdafx.h" + #include + #include "xcpp/xdisplay.hpp" + std::string test("foobar"); + xcpp::display(test); + """, + 'mime': 'text/plain' + }, + { + 'code': """ + #include "stdafx.h" + #include + #include + #include "nlohmann/json.hpp" + #include "xtl/xbase64.hpp" + namespace im { + struct image { + inline image(const std::string& filename) { + std::ifstream fin(filename, std::ios::binary); + m_buffer << fin.rdbuf(); + } + std::stringstream m_buffer; + }; + nlohmann::json mime_bundle_repr(const image& i) { + auto bundle = nlohmann::json::object(); + bundle["image/png"] = xtl::base64encode(i.m_buffer.str()); + return bundle; + } + } + #include "xcpp/xdisplay.hpp" + im::image marie("../notebooks/images/marie.png"); + xcpp::display(marie); + """, + 'mime': 'image/png' + } + ] class XCppTests2(jupyter_kernel_test.KernelTests): From 04a28cbfde15fd6ce6d23ef193de60f8088c0d7b Mon Sep 17 00:00:00 2001 From: mcbarton <150042563+mcbarton@users.noreply.github.com> Date: Wed, 22 May 2024 19:29:00 +0100 Subject: [PATCH 2/8] Define own error output test --- test/test_xcpp_kernel.py | 80 +++++----------------------------------- 1 file changed, 10 insertions(+), 70 deletions(-) diff --git a/test/test_xcpp_kernel.py b/test/test_xcpp_kernel.py index f89004ff..3cbc777f 100644 --- a/test/test_xcpp_kernel.py +++ b/test/test_xcpp_kernel.py @@ -141,77 +141,17 @@ class XCppTests(jupyter_kernel_test.KernelTests): # language_info.name in a kernel_info_reply should match this language_name = 'C++' - # Code that should write the exact string `hello, world` to STDOUT - code_hello_world = """ - #include "stdafx.h" + code_err=""" #include - std::cout << "hello, world" << std::endl; + std::cerr << "oops" << std::endl;" """ - - # Code that should cause (any) text to be written to STDERR - code_stderr = """ - #include "stdafx.h" - #include - std::cerr << "oops" << std::endl;""" - - # Pager: code that should display something (anything) in the pager - code_page_something = "?std::vector" - - # Exception throwing - # TODO: Remove 'if' when test work on MacOS/arm64. Throw Exceptions make - # kernel/test non-workable. - ###code_generate_error = 'throw std::runtime_error("Unknown exception");' if platform.system() != "Darwin" or platform.processor() != 'arm' else '' - - # Samples of code which generate a result value (ie, some text - # displayed as Out[n]) - #code_execute_result = [ - # { - # 'code': '6 * 7', - # 'result': '42' - # } - #] - - # Samples of code which should generate a rich display output, and - # the expected MIME type - code_display_data = [ - { - 'code': """ - #include "stdafx.h" - #include - #include "xcpp/xdisplay.hpp" - std::string test("foobar"); - xcpp::display(test); - """, - 'mime': 'text/plain' - }, - { - 'code': """ - #include "stdafx.h" - #include - #include - #include "nlohmann/json.hpp" - #include "xtl/xbase64.hpp" - namespace im { - struct image { - inline image(const std::string& filename) { - std::ifstream fin(filename, std::ios::binary); - m_buffer << fin.rdbuf(); - } - std::stringstream m_buffer; - }; - nlohmann::json mime_bundle_repr(const image& i) { - auto bundle = nlohmann::json::object(); - bundle["image/png"] = xtl::base64encode(i.m_buffer.str()); - return bundle; - } - } - #include "xcpp/xdisplay.hpp" - im::image marie("../notebooks/images/marie.png"); - xcpp::display(marie); - """, - 'mime': 'image/png' - } - ] + + def test_xcpp_err(self): + self.flush_channels() + reply, output_msgs = self.execute_helper(code=self.code_err,timeout=5) + self.assertEqual(output_msgs[0]['msg_type'], 'stream') + self.assertEqual(output_msgs[0]['content']['name'], 'stderr') + self.assertEqual(output_msgs[0]['content']['text'], 'oops\n') class XCppTests2(jupyter_kernel_test.KernelTests): @@ -225,4 +165,4 @@ class XCppTests2(jupyter_kernel_test.KernelTests): if __name__ == '__main__': - unittest.main() \ No newline at end of file + unittest.main() From ccfeab69a8054cdaf5e5d0f1f89753ed2e8cbbb5 Mon Sep 17 00:00:00 2001 From: mcbarton <150042563+mcbarton@users.noreply.github.com> Date: Wed, 22 May 2024 19:39:37 +0100 Subject: [PATCH 3/8] Check iostream installed --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 7b85661c..cb45afd5 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -87,6 +87,7 @@ jobs: call C:\Users\runneradmin\micromamba-root\condabin\micromamba.bat activate xeus-cpp mkdir -p build cd build + ls "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.29.30133\include" cmake .. -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DXEUS_BUILD_TESTS=ON -DDEPENDENCY_SEARCH_PREFIX="%CONDA_PREFIX%\Library" -DCMAKE_PREFIX_PATH="%CONDA_PREFIX%\Library" -DCMAKE_INSTALL_PREFIX="%CONDA_PREFIX%" - name: cmake configure From 162f285b5f46a756b6adf272f7deb2b767310c9d Mon Sep 17 00:00:00 2001 From: mcbarton <150042563+mcbarton@users.noreply.github.com> Date: Wed, 29 May 2024 20:42:24 +0100 Subject: [PATCH 4/8] Debug --- test/test_xcpp_kernel.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/test/test_xcpp_kernel.py b/test/test_xcpp_kernel.py index 3cbc777f..fd5917c0 100644 --- a/test/test_xcpp_kernel.py +++ b/test/test_xcpp_kernel.py @@ -148,10 +148,12 @@ class XCppTests(jupyter_kernel_test.KernelTests): def test_xcpp_err(self): self.flush_channels() - reply, output_msgs = self.execute_helper(code=self.code_err,timeout=5) - self.assertEqual(output_msgs[0]['msg_type'], 'stream') - self.assertEqual(output_msgs[0]['content']['name'], 'stderr') - self.assertEqual(output_msgs[0]['content']['text'], 'oops\n') + msg_id = self.kc.complete(self.code_complete_sample, len(self.code_complete_sample)) + reply = self.get_non_kernel_info_reply(timeout=1) + print(reply) + self.assertEqual(reply['msg_type'], 'stream') + self.assertEqual(reply['content']['name'], 'stderr') + self.assertEqual(replt['content']['text'], 'oops\n') class XCppTests2(jupyter_kernel_test.KernelTests): From 28ad549c11bc4a55d642da40035786bbd0c666b5 Mon Sep 17 00:00:00 2001 From: mcbarton <150042563+mcbarton@users.noreply.github.com> Date: Wed, 29 May 2024 20:46:45 +0100 Subject: [PATCH 5/8] Debug 2 --- test/test_xcpp_kernel.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_xcpp_kernel.py b/test/test_xcpp_kernel.py index fd5917c0..6b429765 100644 --- a/test/test_xcpp_kernel.py +++ b/test/test_xcpp_kernel.py @@ -148,7 +148,7 @@ class XCppTests(jupyter_kernel_test.KernelTests): def test_xcpp_err(self): self.flush_channels() - msg_id = self.kc.complete(self.code_complete_sample, len(self.code_complete_sample)) + msg_id = self.kc.complete(self.code_err) reply = self.get_non_kernel_info_reply(timeout=1) print(reply) self.assertEqual(reply['msg_type'], 'stream') From bf6257297d105c221c68b818465c5d332271089c Mon Sep 17 00:00:00 2001 From: mcbarton <150042563+mcbarton@users.noreply.github.com> Date: Wed, 29 May 2024 20:59:52 +0100 Subject: [PATCH 6/8] Debug --- test/test_xcpp_kernel.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/test/test_xcpp_kernel.py b/test/test_xcpp_kernel.py index 6b429765..636e88aa 100644 --- a/test/test_xcpp_kernel.py +++ b/test/test_xcpp_kernel.py @@ -148,12 +148,11 @@ class XCppTests(jupyter_kernel_test.KernelTests): def test_xcpp_err(self): self.flush_channels() - msg_id = self.kc.complete(self.code_err) - reply = self.get_non_kernel_info_reply(timeout=1) - print(reply) - self.assertEqual(reply['msg_type'], 'stream') - self.assertEqual(reply['content']['name'], 'stderr') - self.assertEqual(replt['content']['text'], 'oops\n') + reply, output_msgs = self.execute_helper(code=self.code_err) + print(output_msgs) + self.assertEqual(output_msgs[0]['msg_type'], 'stream') + self.assertEqual(output_msgs[0]['content']['name'], 'stderr') + self.assertEqual(output_msgs[0]['content']['text'], 'oops\n') class XCppTests2(jupyter_kernel_test.KernelTests): From 9a7d722908d1613216905f02bc0b9a3282bcd2ac Mon Sep 17 00:00:00 2001 From: mcbarton <150042563+mcbarton@users.noreply.github.com> Date: Wed, 29 May 2024 21:04:41 +0100 Subject: [PATCH 7/8] Debug --- test/test_xcpp_kernel.py | 1 - 1 file changed, 1 deletion(-) diff --git a/test/test_xcpp_kernel.py b/test/test_xcpp_kernel.py index 636e88aa..8353d6dd 100644 --- a/test/test_xcpp_kernel.py +++ b/test/test_xcpp_kernel.py @@ -143,7 +143,6 @@ class XCppTests(jupyter_kernel_test.KernelTests): code_err=""" #include - std::cerr << "oops" << std::endl;" """ def test_xcpp_err(self): From 5d609e8d7e41979b0835ecf3d72c820b771dad4c Mon Sep 17 00:00:00 2001 From: mcbarton <150042563+mcbarton@users.noreply.github.com> Date: Wed, 29 May 2024 21:10:02 +0100 Subject: [PATCH 8/8] Debug --- test/test_xcpp_kernel.py | 1 + 1 file changed, 1 insertion(+) diff --git a/test/test_xcpp_kernel.py b/test/test_xcpp_kernel.py index 8353d6dd..7cc8ad6e 100644 --- a/test/test_xcpp_kernel.py +++ b/test/test_xcpp_kernel.py @@ -143,6 +143,7 @@ class XCppTests(jupyter_kernel_test.KernelTests): code_err=""" #include + std::cerr << "oops" << std::endl; """ def test_xcpp_err(self):