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)