def test_get_stack_dir(self): import roslib.packages from roslib.stacks import get_stack_dir, InvalidROSStackException, list_stacks self.assertEquals(rospkg.get_ros_root(), get_stack_dir('ros')) try: get_stack_dir('non_existent') self.fail("should have raised") except roslib.stacks.InvalidROSStackException: pass # make sure it agrees with rosstack stacks = list_stacks() from roslib.rospack import rosstackexec for s in stacks: d1 = get_stack_dir(s) d2 = rosstackexec(['find', s]) self.assertEquals(d1, d2, "%s vs %s"%(d1, d2)) # now manipulate the environment to test precedence # - save original RPP as we popen rosstack in other tests rpp = os.environ.get(rospkg.environment.ROS_PACKAGE_PATH, None) try: d = roslib.packages.get_pkg_dir('test_roslib') d = os.path.join(d, 'test', 'stack_tests') # - s1/s2/s3 print "s1/s2/s3" paths = [os.path.join(d, p) for p in ['s1', 's2', 's3']] os.environ[rospkg.environment.ROS_PACKAGE_PATH] = os.pathsep.join(paths) # - run multiple times to test caching for i in xrange(2): stacks = roslib.stacks.list_stacks() self.assert_('foo' in stacks) self.assert_('bar' in stacks) foo_p = os.path.join(d, 's1', 'foo') bar_p = os.path.join(d, 's1', 'bar') self.assertEquals(foo_p, roslib.stacks.get_stack_dir('foo')) self.assertEquals(bar_p, roslib.stacks.get_stack_dir('bar')) # - s2/s3/s1 print "s2/s3/s1" paths = [os.path.join(d, p) for p in ['s2', 's3', 's1']] os.environ[rospkg.environment.ROS_PACKAGE_PATH] = os.pathsep.join(paths) stacks = roslib.stacks.list_stacks() self.assert_('foo' in stacks) self.assert_('bar' in stacks) foo_p = os.path.join(d, 's2', 'foo') bar_p = os.path.join(d, 's1', 'bar') self.assertEquals(foo_p, roslib.stacks.get_stack_dir('foo')) self.assertEquals(bar_p, roslib.stacks.get_stack_dir('bar')) finally: #restore rpp if rpp is not None: os.environ[rospkg.environment.ROS_PACKAGE_PATH] = rpp else: del os.environ[rospkg.environment.ROS_PACKAGE_PATH]
def test_get_stack_dir(self): import roslib.rosenv import roslib.packages from roslib.stacks import get_stack_dir, InvalidROSStackException, list_stacks self.assertEquals(roslib.rosenv.get_ros_root(), get_stack_dir('ros')) try: get_stack_dir('non_existent') self.fail("should have raised") except roslib.stacks.InvalidROSStackException: pass # make sure it agrees with rosstack stacks = list_stacks() from roslib.rospack import rosstackexec for s in stacks: self.assertEquals(get_stack_dir(s), rosstackexec(['find', s])) # now manipulate the environment to test precedence # - save original RPP as we popen rosstack in other tests rpp = os.environ.get(roslib.rosenv.ROS_PACKAGE_PATH, None) try: d = roslib.packages.get_pkg_dir('test_roslib') d = os.path.join(d, 'test', 'stack_tests') # - s1/s2/s3 print "s1/s2/s3" paths = [os.path.join(d, p) for p in ['s1', 's2', 's3']] os.environ[roslib.rosenv.ROS_PACKAGE_PATH] = os.pathsep.join(paths) # - run multiple times to test caching for i in xrange(2): stacks = roslib.stacks.list_stacks() self.assert_('foo' in stacks) self.assert_('bar' in stacks) foo_p = os.path.join(d, 's1', 'foo') bar_p = os.path.join(d, 's1', 'bar') self.assertEquals(foo_p, roslib.stacks.get_stack_dir('foo')) self.assertEquals(bar_p, roslib.stacks.get_stack_dir('bar')) # - s2/s3/s1 print "s2/s3/s1" paths = [os.path.join(d, p) for p in ['s2', 's3', 's1']] os.environ[roslib.rosenv.ROS_PACKAGE_PATH] = os.pathsep.join(paths) stacks = roslib.stacks.list_stacks() self.assert_('foo' in stacks) self.assert_('bar' in stacks) foo_p = os.path.join(d, 's2', 'foo') bar_p = os.path.join(d, 's1', 'bar') self.assertEquals(foo_p, roslib.stacks.get_stack_dir('foo')) self.assertEquals(bar_p, roslib.stacks.get_stack_dir('bar')) finally: #restore rpp if rpp is not None: os.environ[roslib.rosenv.ROS_PACKAGE_PATH] = rpp else: del os.environ[roslib.rosenv.ROS_PACKAGE_PATH]
def test_get_stack_dir(self): import roslib.packages from roslib.stacks import get_stack_dir try: get_stack_dir('non_existent') self.fail('should have raised') except roslib.stacks.InvalidROSStackException: pass # now manipulate the environment to test precedence # - save original RPP as we popen rosstack in other tests rpp = os.environ.get(rospkg.environment.ROS_PACKAGE_PATH, None) try: d = roslib.packages.get_pkg_dir('roslib') d = os.path.join(d, 'test', 'stack_tests') # - s1/s2/s3 print('s1/s2/s3') paths = [os.path.join(d, p) for p in ['s1', 's2', 's3']] os.environ[rospkg.environment.ROS_PACKAGE_PATH] = os.pathsep.join(paths) # - run multiple times to test caching for i in range(2): stacks = roslib.stacks.list_stacks() self.assert_('foo' in stacks) self.assert_('bar' in stacks) foo_p = os.path.join(d, 's1', 'foo') bar_p = os.path.join(d, 's1', 'bar') self.assertEquals(foo_p, roslib.stacks.get_stack_dir('foo')) self.assertEquals(bar_p, roslib.stacks.get_stack_dir('bar')) # - s2/s3/s1 print('s2/s3/s1') paths = [os.path.join(d, p) for p in ['s2', 's3', 's1']] os.environ[rospkg.environment.ROS_PACKAGE_PATH] = os.pathsep.join(paths) stacks = roslib.stacks.list_stacks() self.assert_('foo' in stacks) self.assert_('bar' in stacks) foo_p = os.path.join(d, 's2', 'foo') bar_p = os.path.join(d, 's1', 'bar') self.assertEquals(foo_p, roslib.stacks.get_stack_dir('foo')) self.assertEquals(bar_p, roslib.stacks.get_stack_dir('bar')) finally: # restore rpp if rpp is not None: os.environ[rospkg.environment.ROS_PACKAGE_PATH] = rpp else: del os.environ[rospkg.environment.ROS_PACKAGE_PATH]
def test_stack_rosdeps(self): import rosdeb from rosdeb.rosutil import stack_rosdeps from roslib.stacks import get_stack_dir # this test will have to be updated as we change our supported platform set platforms = ['lucid', 'jaunty', 'karmic'] # stick to stacks that should have high confidence of resolving properly stacks = [ 'ros', 'common', 'common_msgs', 'driver_common', 'geometry', 'image_common', 'image_pipeline', 'joystick_drivers', 'navigation', 'sound_drivers', 'visualization', 'visualization_common' ] base_reqd = rosdeb.rosutil.IMPLICIT_DEPS rosdeps = {} for platform in platforms: rosdeps[platform] = {} for stack_name in stacks: stack_dir = get_stack_dir(stack_name) rosdeps[platform][stack_name] = deps = stack_rosdeps( stack_name, stack_dir, platform) for reqd in base_reqd: self.assert_(reqd in deps) tests = [ ('ros', ['python-yaml']), ('ros_release', []), #('navigation', ['python-yaml', 'libnetpbm10-dev']), #('geometry', ['libglut3-dev', 'graphviz', 'python-sip4-dev', 'sip4']), ] # make sure common_msgs has no additional rosdeps for p in ['lucid', 'karmic', 'jaunty']: self.failIf(set(rosdeps[p]['common_msgs']) ^ set(base_reqd)) for stack, reqd in tests: for r in reqd: for p in ['lucid', 'karmic', 'jaunty']: self.assert_(r in rosdeps[p][stack], r)
def test_stack_rosdeps(self): import rosdeb from rosdeb.rosutil import stack_rosdeps from roslib.stacks import get_stack_dir # this test will have to be updated as we change our supported platform set platforms = ['lucid', 'jaunty', 'karmic'] # stick to stacks that should have high confidence of resolving properly stacks = ['ros', 'common', 'common_msgs', 'driver_common', 'geometry', 'image_common', 'image_pipeline', 'joystick_drivers', 'navigation', 'sound_drivers', 'visualization', 'visualization_common'] base_reqd = rosdeb.rosutil.IMPLICIT_DEPS rosdeps = {} for platform in platforms: rosdeps[platform] = {} for stack_name in stacks: stack_dir = get_stack_dir(stack_name) rosdeps[platform][stack_name] = deps = stack_rosdeps(stack_name, stack_dir, platform) for reqd in base_reqd: self.assert_(reqd in deps) tests = [ ('ros', ['python-yaml']), ('ros_release', []), #('navigation', ['python-yaml', 'libnetpbm10-dev']), #('geometry', ['libglut3-dev', 'graphviz', 'python-sip4-dev', 'sip4']), ] # make sure common_msgs has no additional rosdeps for p in ['lucid', 'karmic', 'jaunty']: self.failIf(set(rosdeps[p]['common_msgs']) ^ set(base_reqd)) for stack, reqd in tests: for r in reqd: for p in ['lucid', 'karmic', 'jaunty']: self.assert_(r in rosdeps[p][stack], r)