Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
f806a62
Initial merge with xeus-clang-repl
alexander-penev Mar 16, 2024
206b3de
Update kernel.json.in
alexander-penev Apr 13, 2024
c56bee2
Update kernel.json.in
alexander-penev Apr 13, 2024
30b1eeb
Update kernel.json.in
alexander-penev Apr 13, 2024
b52b514
Update main.cpp
alexander-penev Apr 13, 2024
a96818e
Update CMakeLists.txt
alexander-penev Apr 13, 2024
f0f188c
Update CMakeLists.txt
alexander-penev Apr 13, 2024
3f5349e
Update CMakeLists.txt
alexander-penev Apr 14, 2024
aef6ae5
Delete src/xmagics/pythonexec.cpp
alexander-penev Apr 14, 2024
ce859d9
Delete src/xmagics/pythonexec.hpp
alexander-penev Apr 14, 2024
7bcbbb8
Update xinterpreter.cpp
alexander-penev Apr 14, 2024
089d4a5
Update pytest.ini
alexander-penev Apr 14, 2024
6dc91c5
Update xinterpreter.cpp
alexander-penev Apr 14, 2024
733a979
Update xinterpreter.cpp
alexander-penev Apr 14, 2024
b0678a3
Update xinterpreter.cpp
alexander-penev Apr 14, 2024
86f53dc
Update main.yml
alexander-penev Apr 14, 2024
57c468f
Update main.yml
alexander-penev Apr 14, 2024
f2f99e8
Update xinterpreter.cpp
alexander-penev Apr 14, 2024
d9deba6
Update xinterpreter.cpp
alexander-penev Apr 14, 2024
f1e5a1e
Update xinterpreter.cpp
alexander-penev Apr 14, 2024
568cd82
Update main.yml
alexander-penev Apr 14, 2024
9dfcb52
Restore original
alexander-penev Apr 14, 2024
576347b
Restore original 1
alexander-penev Apr 14, 2024
c6b13cc
Restore original 2
alexander-penev Apr 14, 2024
7cdd306
Update xinterpreter.cpp
alexander-penev Apr 14, 2024
829a844
Update environment.yml
alexander-penev Apr 14, 2024
22af61d
Fix error messages formatting
alexander-penev Apr 15, 2024
b2ea844
Add more tests
alexander-penev Apr 15, 2024
14f6d6d
Add more tests
alexander-penev Apr 15, 2024
90a980c
Disable some tests
alexander-penev Apr 15, 2024
770871c
Debug 1
alexander-penev Apr 15, 2024
67f3b77
Debug 2
alexander-penev Apr 15, 2024
0492fe9
Debug 3
alexander-penev Apr 15, 2024
f2b1432
Debug 4
alexander-penev Apr 15, 2024
26f2929
Debug 5
alexander-penev Apr 16, 2024
7cb5381
Debug 6
alexander-penev Apr 16, 2024
f719d9c
Debug 7
alexander-penev Apr 16, 2024
721f778
Debug 8
alexander-penev Apr 16, 2024
085efd2
Debug 8
alexander-penev Apr 16, 2024
4a4444d
Cleanup
alexander-penev Apr 16, 2024
d68f4cd
Update main.yml
alexander-penev Apr 16, 2024
c8a02b8
Update test_xcpp_kernel.py
alexander-penev Apr 16, 2024
be05220
Update test_xcpp_kernel.py
alexander-penev Apr 16, 2024
388ed38
Update xinterpreter.cpp
alexander-penev Apr 16, 2024
71ec37a
Update xinterpreter.cpp
alexander-penev Apr 16, 2024
71931e6
Clean
alexander-penev Apr 16, 2024
dec3301
Update src/xinterpreter.cpp
alexander-penev Apr 16, 2024
c01b67f
Apply suggestions from code review
alexander-penev Apr 16, 2024
7a8cf17
Update xinterpreter.cpp
alexander-penev Apr 16, 2024
28367af
Fix
alexander-penev Apr 16, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ endif ()
function(configure_kernel kernel)
set(XEUS_CPP_PATH "$ENV{PATH}")
set(XEUS_CPP_LD_LIBRARY_PATH "$ENV{LD_LIBRARY_PATH}")
set(XEUS_CPP_RESOURCE_DIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/clang/${CppInterOp_CLANG_VERSION})
set(XEUS_CPP_RESOURCE_DIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/clang/${CPPINTEROP_LLVM_VERSION_MAJOR})

configure_file (
"${CMAKE_CURRENT_SOURCE_DIR}/${kernel}/kernel.json.in"
Expand Down
2 changes: 1 addition & 1 deletion environment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ name: xeus-cpp
channels:
- conda-forge
dependencies:
- xeus-cpp=0.0.1
- xeus-cpp
25 changes: 21 additions & 4 deletions src/xinterpreter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,19 @@ using namespace std::placeholders;

namespace xcpp
{
struct StreamRedirectRAII {
std::string &err;
StreamRedirectRAII(std::string &e) : err(e) {
Cpp::BeginStdStreamCapture(Cpp::kStdErr);
Cpp::BeginStdStreamCapture(Cpp::kStdOut);
}
~StreamRedirectRAII() {
std::string out = Cpp::EndStdStreamCapture();
err = Cpp::EndStdStreamCapture();
std::cout << out;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should probably print out where err is printed...

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's address that in a separate PR.

}
};

void interpreter::configure_impl()
{
xeus::register_interpreter(this);
Expand Down Expand Up @@ -153,28 +166,32 @@ __get_cxx_version ()
std::cerr.rdbuf(&null);
}

std::string err;

// Attempt normal evaluation
try
{
StreamRedirectRAII R(err);
compilation_result = Cpp::Process(code.c_str());
}
catch (std::exception& e)
{
errorlevel = 1;
ename = "Standard Exception :";
ename = "Standard Exception: ";
evalue = e.what();
}
catch (...)
{
errorlevel = 1;
ename = "Error :";
ename = "Error: ";
}

if (compilation_result)
{
errorlevel = 1;
ename = "Error :";
evalue = "Compilation error!";
ename = "Error: ";
evalue = "Compilation error! " + err;
std::cerr << err;
}

// Flush streams
Expand Down
45 changes: 44 additions & 1 deletion test/test_xcpp_kernel.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

import unittest
import jupyter_kernel_test
import platform


class XCppTests(jupyter_kernel_test.KernelTests):
Expand All @@ -24,7 +25,12 @@ class XCppTests(jupyter_kernel_test.KernelTests):
code_stderr = '#include <iostream>\nstd::cerr << "oops" << std::endl;'

# Pager: code that should display something (anything) in the pager
#code_page_something = "?std::vector"
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])
Expand All @@ -41,8 +47,45 @@ class XCppTests(jupyter_kernel_test.KernelTests):
{
'code': '#include <string>\n#include "xcpp/xdisplay.hpp"\nstd::string test("foobar");\nxcpp::display(test);',
'mime': 'text/plain'
},
{
'code': """
#include <string>
#include <fstream>
#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):

kernel_name = 'xcpp'

# 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 <stdio.h>\nprintf("hello, world");'


if __name__ == '__main__':
unittest.main()