diff --git a/.travis.yml b/.travis.yml
index e0a4f2e1..934494e6 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -8,7 +8,7 @@ compiler:
script: "./.travis/build"
before_install:
- sudo apt-get update -qq
- - sudo apt-get install -qq libboost-system-dev libboost-thread-dev libboost-test-dev libtinyxml-dev python-yaml
+ - sudo apt-get install -qq libboost-system-dev libboost-thread-dev libboost-test-dev libtinyxml-dev python-yaml python-mock
matrix:
allow_failures:
- compiler: clang
diff --git a/urdf_parser_py/src/urdf_parser_py/urdf.py b/urdf_parser_py/src/urdf_parser_py/urdf.py
index c08857c1..ec101f50 100644
--- a/urdf_parser_py/src/urdf_parser_py/urdf.py
+++ b/urdf_parser_py/src/urdf_parser_py/urdf.py
@@ -169,6 +169,9 @@ def check_valid(self):
xmlr.Element('texture', Texture, False)
])
+class LinkMaterial(Material):
+ def check_valid(self):
+ pass
class Visual(xmlr.Object):
def __init__(self, geometry = None, material = None, origin = None):
@@ -179,7 +182,7 @@ def __init__(self, geometry = None, material = None, origin = None):
xmlr.reflect(Visual, params = [
origin_element,
xmlr.Element('geometry', 'geometric'),
- xmlr.Element('material', Material, False)
+ xmlr.Element('material', LinkMaterial, False)
])
diff --git a/urdf_parser_py/test/test_urdf.py b/urdf_parser_py/test/test_urdf.py
index 51fa64ed..f0dfcd71 100644
--- a/urdf_parser_py/test/test_urdf.py
+++ b/urdf_parser_py/test/test_urdf.py
@@ -1,11 +1,17 @@
from __future__ import print_function
import unittest
+import mock
from xml.dom import minidom
from xml_matching import xml_matches
from urdf_parser_py import urdf
+class ParseException(Exception):
+ pass
+
class TestURDFParser(unittest.TestCase):
+ @mock.patch('urdf_parser_py.xml_reflection.on_error',
+ mock.Mock(side_effect=ParseException))
def parse(self, xml):
return urdf.Robot.from_xml_string(xml)
@@ -97,6 +103,36 @@ def test_old_transmission(self):
'''
self.parse_and_compare(xml)
+ def test_link_material_missing_color_and_texture(self):
+ xml = '''
+
+
+
+
+
+
+
+
+
+'''
+ self.parse_and_compare(xml)
+
+ def test_robot_material(self):
+ xml = '''
+
+
+
+
+'''
+ self.parse_and_compare(xml)
+
+ def test_robot_material_missing_color_and_texture(self):
+ xml = '''
+
+
+'''
+ self.assertRaises(ParseException, self.parse, xml)
+
if __name__ == '__main__':
unittest.main()