Skip to content

Commit 856ad86

Browse files
committed
Update tags, add tests for xinspect, add label
1 parent f71d287 commit 856ad86

File tree

4 files changed

+81
-25
lines changed

4 files changed

+81
-25
lines changed

CMakeLists.txt

Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,28 @@ set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake;${CMAKE_MODULE_PATH}")
2323

2424
set(XEUS_CPP_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include)
2525

26+
# xeus-cpp tag files
27+
set(XEUS_CPP_DATA_DIR "share/xeus-cpp" CACHE STRING "xeus-cpp data directory")
28+
set(XCPP_TAGFILES_DIR ${CMAKE_CURRENT_SOURCE_DIR}/share/xeus-cpp/tagfiles)
29+
30+
set(XEUS_CPP_CONF_DIR "etc/xeus-cpp" CACHE STRING "xeus-cpp configuration directory")
31+
set(XCPP_TAGCONFS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/etc/xeus-cpp/tags.d)
32+
33+
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/include/xeus-cpp/xeus_cpp_config.hpp.in"
34+
"${CMAKE_CURRENT_SOURCE_DIR}/include/xeus-cpp/xeus_cpp_config.hpp")
35+
2636
# Versionning
2737
# ===========
2838

2939
file(STRINGS "${XEUS_CPP_INCLUDE_DIR}/xeus-cpp/xeus_cpp_config.hpp" version_defines
30-
REGEX "#define XEUS_CPP_VERSION_(MAJOR|MINOR|PATCH)")
40+
REGEX "#define XEUS_CPP_VERSION_(MAJOR|MINOR|PATCH|LABEL)")
3141
foreach (ver ${version_defines})
32-
if (ver MATCHES "#define XEUS_CPP_VERSION_(MAJOR|MINOR|PATCH) +([^ ]+)$")
42+
if (ver MATCHES "#define XEUS_CPP_VERSION_(MAJOR|MINOR|PATCH|LABEL) +([^ ]+)$")
3343
set(XEUS_CPP_VERSION_${CMAKE_MATCH_1} "${CMAKE_MATCH_2}" CACHE INTERNAL "")
3444
endif ()
3545
endforeach ()
3646
set(${PROJECT_NAME}_VERSION
37-
${XEUS_CPP_VERSION_MAJOR}.${XEUS_CPP_VERSION_MINOR}.${XEUS_CPP_VERSION_PATCH})
47+
${XEUS_CPP_VERSION_MAJOR}.${XEUS_CPP_VERSION_MINOR}.${XEUS_CPP_VERSION_PATCH}${XEUS_CPP_VERSION_LABEL})
3848
message(STATUS "Building xeus-cpp v${${PROJECT_NAME}_VERSION}")
3949

4050
# Build options
@@ -383,6 +393,12 @@ include(CMakePackageConfigHelpers)
383393

384394
set(XEUS_CPP_CMAKECONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" CACHE STRING "install path for xeus-cppConfig.cmake")
385395

396+
install(DIRECTORY ${XCPP_TAGFILES_DIR}
397+
DESTINATION ${XEUS_CPP_DATA_DIR})
398+
399+
install(DIRECTORY ${XCPP_TAGCONFS_DIR}
400+
DESTINATION ${XEUS_CPP_CONF_DIR})
401+
386402
# Install xeus-cpp and xeus-cpp-static
387403
if (XEUS_CPP_BUILD_SHARED)
388404
install(TARGETS ${XEUS_CPP_TARGETS}
@@ -430,26 +446,6 @@ configure_package_config_file(${PROJECT_NAME}Config.cmake.in
430446
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
431447
INSTALL_DESTINATION ${PROJECT_BINARY_DIR})
432448

433-
# Install xeus-cpp tag files
434-
set(XEUS_CPP_DATA_DIR "share/xeus-cpp" CACHE STRING "xeus-cpp data directory")
435-
set(XCPP_TAGFILES_DIR ${CMAKE_CURRENT_SOURCE_DIR}/share/xeus-cpp/tagfiles)
436-
install(DIRECTORY ${XCPP_TAGFILES_DIR}
437-
DESTINATION ${XEUS_CPP_DATA_DIR})
438-
439-
set(XEUS_CPP_CONF_DIR "etc/xeus-cpp" CACHE STRING "xeus-cpp configuration directory")
440-
set(XCPP_TAGCONFS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/etc/xeus-cpp/tags.d)
441-
install(DIRECTORY ${XCPP_TAGCONFS_DIR}
442-
DESTINATION ${XEUS_CPP_CONF_DIR})
443-
444-
# Add definitions for the kernel to find tagfiles.
445-
add_definitions(-DXCPP_TAGFILES_DIR="${CMAKE_INSTALL_PREFIX}/${XEUS_CPP_DATA_DIR}/tagfiles")
446-
if(CMAKE_INSTALL_PREFIX STREQUAL "/usr")
447-
# install into /etc instead of /usr/etc
448-
add_definitions(-DXCPP_TAGCONFS_DIR="/${XEUS_CPP_CONF_DIR}/tags.d")
449-
else()
450-
add_definitions(-DXCPP_TAGCONFS_DIR="${CMAKE_INSTALL_PREFIX}/${XEUS_CPP_CONF_DIR}/tags.d")
451-
endif()
452-
453449
# Configure 'xeus-cppConfig.cmake.in for an install tree
454450
set(XEUS_CPP_CONFIG_CODE "")
455451
configure_package_config_file(${PROJECT_NAME}Config.cmake.in

include/xeus-cpp/xeus_cpp_config.hpp renamed to include/xeus-cpp/xeus_cpp_config.hpp.in

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@
1313
#define XEUS_CPP_VERSION_MAJOR 0
1414
#define XEUS_CPP_VERSION_MINOR 5
1515
#define XEUS_CPP_VERSION_PATCH 0
16+
#define XEUS_CPP_VERSION_LABEL dev
17+
18+
#define XCPP_TAGFILES_DIR "@XCPP_TAGFILES_DIR@"
19+
#define XCPP_TAGCONFS_DIR "@XCPP_TAGCONFS_DIR@"
1620

1721
// Composing the version string from major, minor and patch
1822
#define XEUS_CPP_CONCATENATE(A, B) XEUS_CPP_CONCATENATE_IMPL(A, B)

src/xinterpreter.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222

2323
#include "xeus-cpp/xbuffer.hpp"
2424
#include "xeus-cpp/xeus_cpp_config.hpp"
25-
2625
#include "xeus-cpp/xinterpreter.hpp"
2726
#include "xeus-cpp/xmagics.hpp"
2827

test/test_interpreter.cpp

Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,16 @@
1414
#include "xeus-cpp/xmanager.hpp"
1515
#include "xeus-cpp/xutils.hpp"
1616
#include "xeus-cpp/xoptions.hpp"
17+
#include "xeus-cpp/xeus_cpp_config.hpp"
1718

1819
#include "../src/xparser.hpp"
1920
#include "../src/xsystem.hpp"
2021
#include "../src/xmagics/os.hpp"
22+
#include "../src/xinspect.hpp"
2123

22-
#include <iostream>
2324

25+
#include <iostream>
26+
#include <pugixml.hpp>
2427
#include <fstream>
2528
#if defined(__GNUC__) && !defined(XEUS_CPP_EMSCRIPTEN_WASM_BUILD)
2629
#include <sys/wait.h>
@@ -830,4 +833,58 @@ TEST_SUITE("complete_request")
830833
}
831834
REQUIRE(found == 2);
832835
}
836+
}
837+
838+
TEST_SUITE("xinspect"){
839+
TEST_CASE("class_member_predicate_get_filename"){
840+
xcpp::class_member_predicate cmp;
841+
cmp.class_name = "TestClass";
842+
cmp.kind = "public";
843+
cmp.child_value = "testMethod";
844+
845+
pugi::xml_document doc;
846+
pugi::xml_node node = doc.append_child("node");
847+
node.append_attribute("kind") = "class";
848+
pugi::xml_node name = node.append_child("name");
849+
name.append_child(pugi::node_pcdata).set_value("TestClass");
850+
pugi::xml_node child = node.append_child("node");
851+
child.append_attribute("kind") = "public";
852+
pugi::xml_node child_name = child.append_child("name");
853+
child_name.append_child(pugi::node_pcdata).set_value("testMethod");
854+
pugi::xml_node anchorfile = child.append_child("anchorfile");
855+
anchorfile.append_child(pugi::node_pcdata).set_value("testfile.cpp");
856+
857+
REQUIRE(cmp.get_filename(node) == "testfile.cpp");
858+
859+
cmp.child_value = "nonexistentMethod";
860+
REQUIRE(cmp.get_filename(node) == "");
861+
}
862+
863+
TEST_CASE("class_member_predicate_operator"){
864+
xcpp::class_member_predicate cmp;
865+
cmp.class_name = "TestClass";
866+
cmp.kind = "public";
867+
cmp.child_value = "testMethod";
868+
869+
pugi::xml_document doc;
870+
pugi::xml_node node = doc.append_child("node");
871+
node.append_attribute("kind") = "class";
872+
pugi::xml_node name = node.append_child("name");
873+
name.append_child(pugi::node_pcdata).set_value("TestClass");
874+
pugi::xml_node child = node.append_child("node");
875+
child.append_attribute("kind") = "public";
876+
pugi::xml_node child_name = child.append_child("name");
877+
child_name.append_child(pugi::node_pcdata).set_value("testMethod");
878+
879+
880+
REQUIRE(cmp(node) == true);
881+
node.attribute("kind").set_value("struct");
882+
REQUIRE(cmp(node) == true);
883+
cmp.class_name = "NonexistentClass";
884+
REQUIRE(cmp(node) == false);
885+
cmp.kind = "private";
886+
REQUIRE(cmp(node) == false);
887+
cmp.child_value = "nonexistentMethod";
888+
REQUIRE(cmp(node) == false);
889+
}
833890
}

0 commit comments

Comments
 (0)