Changed ros:📦:command() to use librospack, instead of shelling
out to rospack via popen(). Added a couple of tests for ros::package to test_roslib. Updated other tests in test_roslib to account for the new dependency from roslib to rospack. This change *should* fix the interrupted system cal bug, #1915.
This commit is contained in:
parent
1e2286204c
commit
e96f899a5c
|
@ -13,6 +13,7 @@
|
|||
<rosdoc config="${prefix}/rosdoc.yaml" />
|
||||
</export>
|
||||
<depend package="genmsg_cpp"/>
|
||||
<depend package="rospack"/>
|
||||
|
||||
<!-- for roslib.params -->
|
||||
<rosdep name="python"/>
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
*/
|
||||
|
||||
#include "ros/package.h"
|
||||
#include "rospack/rospack.h"
|
||||
|
||||
#include <cstdio>
|
||||
#include <iostream>
|
||||
|
@ -41,6 +42,7 @@ namespace package
|
|||
|
||||
std::string command(const std::string& _cmd)
|
||||
{
|
||||
/*
|
||||
if (!getenv("ROS_ROOT"))
|
||||
{
|
||||
std::cerr << "ROS_ROOT is not set! Cannot execute " << _cmd << std::endl;
|
||||
|
@ -61,8 +63,24 @@ std::string command(const std::string& _cmd)
|
|||
|
||||
pclose(pipe);
|
||||
}
|
||||
|
||||
return output;
|
||||
*/
|
||||
|
||||
rospack::ROSPack rp;
|
||||
int ret;
|
||||
try
|
||||
{
|
||||
ret = rp.run(_cmd);
|
||||
if(ret == 0)
|
||||
return rp.getOutput();
|
||||
else
|
||||
std::cerr << "ROSPack::run returned non-zero." << std::endl;
|
||||
}
|
||||
catch(std::runtime_error &e)
|
||||
{
|
||||
std::cerr << "[rospack] " << e.what() << std::endl;
|
||||
}
|
||||
return std::string("");
|
||||
}
|
||||
|
||||
void command(const std::string& cmd, V_string& output)
|
||||
|
|
|
@ -22,3 +22,5 @@ rosbuild_add_pyunit(test/test_roslib_scriptutil.py)
|
|||
rosbuild_add_pyunit(test/test_roslib_substitution_args.py)
|
||||
rosbuild_add_pyunit(test/test_roslib_xmlrpc.py)
|
||||
|
||||
|
||||
rosbuild_add_gtest(test/utest test/utest.cpp)
|
||||
|
|
|
@ -45,10 +45,10 @@ class RoslibRospackTest(unittest.TestCase):
|
|||
rospack_depends_on, rospack_depends_on_1
|
||||
|
||||
val = rospackexec(['list'])
|
||||
self.assertEquals(['genmsg_cpp'], rospack_depends('roslib'))
|
||||
self.assertEquals(['genmsg_cpp'], rospack_depends_1('roslib'))
|
||||
self.assertEquals(set(['genmsg_cpp', 'rospack']), set(rospack_depends('roslib')))
|
||||
self.assertEquals(set(['genmsg_cpp', 'rospack']), set(rospack_depends_1('roslib')))
|
||||
self.assertEquals(set(['roslib', 'roslang']), set(rospack_depends_1('rospy')))
|
||||
self.assertEquals(set(['roslib', 'roslang', 'genmsg_cpp']), set(rospack_depends('rospy')))
|
||||
self.assertEquals(set(['rospack', 'roslib', 'roslang', 'genmsg_cpp']), set(rospack_depends('rospy')))
|
||||
|
||||
val = rospack_depends_on('roslang')
|
||||
self.assert_('rospy' in val, val)
|
||||
|
|
|
@ -45,10 +45,10 @@ class RoslibScriptutilTest(unittest.TestCase):
|
|||
rospack_depends_on, rospack_depends_on_1
|
||||
|
||||
val = rospackexec(['list'])
|
||||
self.assertEquals(['genmsg_cpp'], rospack_depends('roslib'))
|
||||
self.assertEquals(['genmsg_cpp'], rospack_depends_1('roslib'))
|
||||
self.assertEquals(set(['genmsg_cpp', 'rospack']), set(rospack_depends('roslib')))
|
||||
self.assertEquals(set(['genmsg_cpp', 'rospack']), set(rospack_depends_1('roslib')))
|
||||
self.assertEquals(set(['roslib', 'roslang']), set(rospack_depends_1('rospy')))
|
||||
self.assertEquals(set(['roslib', 'roslang', 'genmsg_cpp']), set(rospack_depends('rospy')))
|
||||
self.assertEquals(set(['rospack', 'roslib', 'roslang', 'genmsg_cpp']), set(rospack_depends('rospy')))
|
||||
|
||||
val = rospack_depends_on('roslang')
|
||||
self.assert_('rospy' in val, val)
|
||||
|
|
Loading…
Reference in New Issue