From ef371c285556e4be16bbc7223ad4966d00c3e36c Mon Sep 17 00:00:00 2001 From: JafarAbdi Date: Tue, 22 Jun 2021 00:38:47 +0300 Subject: [PATCH 1/3] Fix unit tests & setup.py file --- CMakeLists.txt | 11 ++++++++--- package.xml | 2 ++ setup.cfg | 4 ++++ setup.py | 29 +++++++++++++++++++++------- {src/srdfdom => srdfdom}/__init__.py | 0 {src/srdfdom => srdfdom}/srdf.py | 0 test/srdf_parser.test | 3 --- test/srdf_parser_cpp.test | 8 -------- test/test.py | 28 ++++++++++++--------------- 9 files changed, 48 insertions(+), 37 deletions(-) create mode 100644 setup.cfg rename {src/srdfdom => srdfdom}/__init__.py (100%) rename {src/srdfdom => srdfdom}/srdf.py (100%) delete mode 100644 test/srdf_parser.test delete mode 100644 test/srdf_parser_cpp.test 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.cfg b/setup.cfg new file mode 100644 index 0000000..adc19ea --- /dev/null +++ b/setup.cfg @@ -0,0 +1,4 @@ +[develop] +script-dir=$base/lib/srdfdom +[install] +install-scripts=$base/lib/srdfdom diff --git a/setup.py b/setup.py index 0ce2a2a..48f27ed 100644 --- a/setup.py +++ b/setup.py @@ -1,9 +1,24 @@ -#!/usr/bin/env python +from setuptools import setup, find_packages -from setuptools import setup -from catkin_pkg.python_setup import generate_distutils_setup +package_name = 'srdfdom' -# fetch values from package.xml -setup_args = generate_distutils_setup(packages=["srdfdom"], package_dir={"": "src"}) - -setup(**setup_args) +setup( + name=package_name, + version='2.0.2', + packages=find_packages(), + data_files=[ + ('share/ament_index/resource_index/packages', ['resource/' + package_name]), + ('share/' + package_name, ['package.xml']), + ], + install_requires=['setuptools'], + url='', + license='', + author='Ioan Sucan, Guillaume Walck', + author_email='isucan@willowgarage.com, gwalck@techfak.uni-bielefeld.de', + description='Parser for Semantic Robot Description Format (SRDF)', + entry_points={ + 'console_scripts': [ + 'display_srdf = srdfdom.display_srdf:main', + ], + }, +) 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..5b8ac64 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() @@ -257,7 +251,9 @@ def test_complex_srdf(self): self.assertTrue(robot.end_effectors[index].parent_link == "r_wrist_roll_link") -if __name__ == "__main__": - import rostest - - rostest.rosrun(PKG, "srdf_python_parser_test", TestSRDFParser) +if __name__ == '__main__': + 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) From 6aa05cd4501de5100fa700d000b67dcf11d03323 Mon Sep 17 00:00:00 2001 From: JafarAbdi Date: Thu, 24 Jun 2021 00:02:42 +0300 Subject: [PATCH 2/3] Run pre-commit --- setup.py | 24 ++++++++++++------------ test/test.py | 8 ++++---- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/setup.py b/setup.py index 48f27ed..02c81b0 100644 --- a/setup.py +++ b/setup.py @@ -1,24 +1,24 @@ from setuptools import setup, find_packages -package_name = 'srdfdom' +package_name = "srdfdom" setup( name=package_name, - version='2.0.2', + version="2.0.2", packages=find_packages(), data_files=[ - ('share/ament_index/resource_index/packages', ['resource/' + package_name]), - ('share/' + package_name, ['package.xml']), + ("share/ament_index/resource_index/packages", ["resource/" + package_name]), + ("share/" + package_name, ["package.xml"]), ], - install_requires=['setuptools'], - url='', - license='', - author='Ioan Sucan, Guillaume Walck', - author_email='isucan@willowgarage.com, gwalck@techfak.uni-bielefeld.de', - description='Parser for Semantic Robot Description Format (SRDF)', + install_requires=["setuptools"], + url="", + license="", + author="Ioan Sucan, Guillaume Walck", + author_email="isucan@willowgarage.com, gwalck@techfak.uni-bielefeld.de", + description="Parser for Semantic Robot Description Format (SRDF)", entry_points={ - 'console_scripts': [ - 'display_srdf = srdfdom.display_srdf:main', + "console_scripts": [ + "display_srdf = srdfdom.display_srdf:main", ], }, ) diff --git a/test/test.py b/test/test.py index 5b8ac64..3fa0dc6 100755 --- a/test/test.py +++ b/test/test.py @@ -251,9 +251,9 @@ def test_complex_srdf(self): self.assertTrue(robot.end_effectors[index].parent_link == "r_wrist_roll_link") -if __name__ == '__main__': +if __name__ == "__main__": suite = unittest.TestSuite() - suite.addTest(TestSRDFParser('test_full_srdf')) - suite.addTest(TestSRDFParser('test_simple_srdf')) - suite.addTest(TestSRDFParser('test_complex_srdf')) + suite.addTest(TestSRDFParser("test_full_srdf")) + suite.addTest(TestSRDFParser("test_simple_srdf")) + suite.addTest(TestSRDFParser("test_complex_srdf")) unittest.TextTestRunner(verbosity=2).run(suite) From 1c2bde979a44a3fbf7bc616316f83a32af29d50d Mon Sep 17 00:00:00 2001 From: JafarAbdi Date: Thu, 24 Jun 2021 01:11:50 +0300 Subject: [PATCH 3/3] Remove setup.py & setup.cfg --- setup.cfg | 4 ---- setup.py | 24 ------------------------ 2 files changed, 28 deletions(-) delete mode 100644 setup.cfg delete mode 100644 setup.py diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index adc19ea..0000000 --- a/setup.cfg +++ /dev/null @@ -1,4 +0,0 @@ -[develop] -script-dir=$base/lib/srdfdom -[install] -install-scripts=$base/lib/srdfdom diff --git a/setup.py b/setup.py deleted file mode 100644 index 02c81b0..0000000 --- a/setup.py +++ /dev/null @@ -1,24 +0,0 @@ -from setuptools import setup, find_packages - -package_name = "srdfdom" - -setup( - name=package_name, - version="2.0.2", - packages=find_packages(), - data_files=[ - ("share/ament_index/resource_index/packages", ["resource/" + package_name]), - ("share/" + package_name, ["package.xml"]), - ], - install_requires=["setuptools"], - url="", - license="", - author="Ioan Sucan, Guillaume Walck", - author_email="isucan@willowgarage.com, gwalck@techfak.uni-bielefeld.de", - description="Parser for Semantic Robot Description Format (SRDF)", - entry_points={ - "console_scripts": [ - "display_srdf = srdfdom.display_srdf:main", - ], - }, -)