diff --git a/CMakeLists.txt b/CMakeLists.txt index 348085e..7e00b0c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -65,9 +65,12 @@ install(PROGRAMS set_target_properties(${PROJECT_NAME} PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE) +ament_python_install_package(${PROJECT_NAME}) + if(BUILD_TESTING) find_package(ament_cmake_gtest REQUIRED) - ament_add_gtest(test_parser test/srdf_parser.test) + find_package(ament_cmake_pytest REQUIRED) + ament_add_pytest_test(self_parser_test "test/test.py") add_definitions(-DTEST_RESOURCE_LOCATION="${CMAKE_SOURCE_DIR}/test/resources") execute_process(COMMAND bash -c "locale -a | grep -q ^en_US" @@ -77,8 +80,10 @@ if(BUILD_TESTING) message(STATUS "Locale nl_NL not available. Locale test will not be meaningful.") endif() - ament_add_gtest(test_cpp test/srdf_parser_cpp.test test/test_parser.cpp) - target_link_libraries(test_cpp ${PROJECT_NAME}) + foreach(LOCALE IN ITEMS C nl_NL.UTF-8) + ament_add_gtest(test_cpp_${LOCALE} test/test_parser.cpp ENV LC_ALL=${LOCALE}) + target_link_libraries(test_cpp_${LOCALE} ${PROJECT_NAME}) + endforeach() # ament_lint find_package(ament_lint_auto REQUIRED) diff --git a/package.xml b/package.xml index 2efa152..80ba6ee 100644 --- a/package.xml +++ b/package.xml @@ -15,6 +15,7 @@ https://github.com/ros-planning/srdfdom ament_cmake + ament_cmake_python libboost-dev console_bridge_vendor libconsole-bridge-dev @@ -29,6 +30,7 @@ urdfdom_py ament_cmake_gtest + ament_cmake_pytest ament_lint_auto ament_lint_cmake diff --git a/setup.py b/setup.py deleted file mode 100644 index 0ce2a2a..0000000 --- a/setup.py +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env python - -from setuptools import setup -from catkin_pkg.python_setup import generate_distutils_setup - -# fetch values from package.xml -setup_args = generate_distutils_setup(packages=["srdfdom"], package_dir={"": "src"}) - -setup(**setup_args) diff --git a/src/srdfdom/__init__.py b/srdfdom/__init__.py similarity index 100% rename from src/srdfdom/__init__.py rename to srdfdom/__init__.py diff --git a/src/srdfdom/srdf.py b/srdfdom/srdf.py similarity index 100% rename from src/srdfdom/srdf.py rename to srdfdom/srdf.py diff --git a/test/srdf_parser.test b/test/srdf_parser.test deleted file mode 100644 index e40ee04..0000000 --- a/test/srdf_parser.test +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/test/srdf_parser_cpp.test b/test/srdf_parser_cpp.test deleted file mode 100644 index d7a3ce3..0000000 --- a/test/srdf_parser_cpp.test +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/test/test.py b/test/test.py index 34c4317..3fa0dc6 100755 --- a/test/test.py +++ b/test/test.py @@ -1,18 +1,13 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 PKG = "srdfdom" import sys -import rospkg +import os import unittest from srdfdom.srdf import SRDF from xml.dom.minidom import parseString import xml.dom -try: - string_types = (str, unicode) -except NameError: - string_types = str - # xml match code from test_xacro.py # by Stuart Glaser and William Woodall @@ -91,9 +86,9 @@ def elements_match(a, b): def xml_matches(a, b): - if isinstance(a, string_types): + if isinstance(a, str): return xml_matches(parseString(a).documentElement, b) - if isinstance(b, string_types): + if isinstance(b, str): return xml_matches(a, parseString(b).documentElement) if a.nodeType == xml.dom.Node.DOCUMENT_NODE: return xml_matches(a.documentElement, b) @@ -102,7 +97,6 @@ def xml_matches(a, b): if not elements_match(a, b): print("Match failed:") a.writexml(sys.stdout) - print print("=" * 78) b.writexml(sys.stdout) return False @@ -170,7 +164,7 @@ def test_full_srdf(self): self.assertTrue(xml_matches(robot.to_xml_string(), expected)) def test_simple_srdf(self): - datadir = rospkg.RosPack().get_path("srdfdom") + "/test/resources/" + datadir = os.path.dirname(os.path.realpath(__file__)) + "/resources/" stream = open(datadir + "pr2_desc.1.srdf", "r") robot = SRDF.from_xml_string(stream.read()) stream.close() @@ -190,7 +184,7 @@ def test_simple_srdf(self): self.assertTrue(len(robot.end_effectors) == 0) def test_complex_srdf(self): - datadir = rospkg.RosPack().get_path("srdfdom") + "/test/resources/" + datadir = os.path.dirname(os.path.realpath(__file__)) + "/resources/" stream = open(datadir + "pr2_desc.3.srdf", "r") robot = SRDF.from_xml_string(stream.read()) stream.close() @@ -258,6 +252,8 @@ def test_complex_srdf(self): if __name__ == "__main__": - import rostest - - rostest.rosrun(PKG, "srdf_python_parser_test", TestSRDFParser) + suite = unittest.TestSuite() + suite.addTest(TestSRDFParser("test_full_srdf")) + suite.addTest(TestSRDFParser("test_simple_srdf")) + suite.addTest(TestSRDFParser("test_complex_srdf")) + unittest.TextTestRunner(verbosity=2).run(suite)