00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 PKG = 'test_roslaunch'
00037 NAME = 'test_roslaunch_dump_params'
00038 import roslib; roslib.load_manifest(PKG)
00039
00040 import os
00041 import signal
00042 import sys
00043 import time
00044 import unittest
00045 import yaml
00046
00047 import rostest
00048
00049 from subprocess import Popen, PIPE, check_call, call
00050
00051 class TestDumpParams(unittest.TestCase):
00052
00053 def setUp(self):
00054 pass
00055
00056 def test_roslaunch(self):
00057
00058 cmd = 'roslaunch'
00059
00060
00061 p = Popen([cmd, '--dump-params', 'test_roslaunch', 'noop.launch'], stdout = PIPE)
00062 o, e = p.communicate()
00063 self.assert_(p.returncode == 0, "Return code nonzero for param dump! Code: %d" % (p.returncode))
00064
00065 self.assertEquals({'/noop': 'noop'}, yaml.load(o))
00066
00067 p = Popen([cmd, '--dump-params', 'test_roslaunch', 'test-dump-rosparam.launch'], stdout = PIPE)
00068 o, e = p.communicate()
00069 self.assert_(p.returncode == 0, "Return code nonzero for param dump! Code: %d" % (p.returncode))
00070
00071 val = {
00072 '/string1': 'bar',
00073 '/dict1/head': 1,
00074 '/dict1/shoulders': 2,
00075 '/dict1/knees': 3,
00076 '/dict1/toes': 4,
00077
00078 '/rosparam/string1': 'bar',
00079 '/rosparam/dict1/head': 1,
00080 '/rosparam/dict1/shoulders': 2,
00081 '/rosparam/dict1/knees': 3,
00082 '/rosparam/dict1/toes': 4,
00083
00084 '/node_rosparam/string1': 'bar',
00085 '/node_rosparam/dict1/head': 1,
00086 '/node_rosparam/dict1/shoulders': 2,
00087 '/node_rosparam/dict1/knees': 3,
00088 '/node_rosparam/dict1/toes': 4,
00089
00090 '/inline_str': 'value1',
00091 '/inline_list': [1, 2, 3, 4],
00092 '/inline_dict/key1': 'value1',
00093 '/inline_dict/key2': 'value2',
00094
00095 '/inline_dict2/key3': 'value3',
00096 '/inline_dict2/key4': 'value4',
00097
00098 '/override/key1': 'override1',
00099 '/override/key2': 'value2',
00100 '/noparam1': 'value1',
00101 '/noparam2': 'value2',
00102 }
00103 output_val = yaml.load(o)
00104 if not val == output_val:
00105 for k, v in val.iteritems():
00106 if k not in output_val:
00107 self.fail("key [%s] not in output: %s"%(k, output_val))
00108 elif v != output_val[k]:
00109 self.fail("key [%s] value [%s] does not match output: %s"%(k, v, output_val[k]))
00110 self.assertEquals(val, output_val)
00111
00112 if __name__ == '__main__':
00113 rostest.run(PKG, NAME, TestDumpParams, sys.argv)