From 2480fb1afdb084dff8475285827c22051f1d949e Mon Sep 17 00:00:00 2001 From: Ken Conley Date: Thu, 11 Nov 2010 02:03:55 +0000 Subject: [PATCH] moving test_roscreate back to ros stack --- test/test_roscreate/CMakeLists.txt | 5 ++ test/test_roscreate/Makefile | 1 + test/test_roscreate/manifest.xml | 20 +++++ .../stack1/depends_roslib/manifest.xml | 13 ++++ .../test/fake-pkg/stack1/stack.xml | 6 ++ .../stack2/depends_stack1/CMakeLists.txt | 30 +++++++ .../fake-pkg/stack2/depends_stack1/Makefile | 1 + .../stack2/depends_stack1/mainpage.dox | 30 +++++++ .../stack2/depends_stack1/manifest.xml | 10 +++ .../test/fake-pkg/stack2/stack.xml | 6 ++ .../test/test_roscreate_stack.py | 78 +++++++++++++++++++ 11 files changed, 200 insertions(+) create mode 100644 test/test_roscreate/CMakeLists.txt create mode 100644 test/test_roscreate/Makefile create mode 100644 test/test_roscreate/manifest.xml create mode 100644 test/test_roscreate/test/fake-pkg/stack1/depends_roslib/manifest.xml create mode 100644 test/test_roscreate/test/fake-pkg/stack1/stack.xml create mode 100644 test/test_roscreate/test/fake-pkg/stack2/depends_stack1/CMakeLists.txt create mode 100644 test/test_roscreate/test/fake-pkg/stack2/depends_stack1/Makefile create mode 100644 test/test_roscreate/test/fake-pkg/stack2/depends_stack1/mainpage.dox create mode 100644 test/test_roscreate/test/fake-pkg/stack2/depends_stack1/manifest.xml create mode 100644 test/test_roscreate/test/fake-pkg/stack2/stack.xml create mode 100644 test/test_roscreate/test/test_roscreate_stack.py diff --git a/test/test_roscreate/CMakeLists.txt b/test/test_roscreate/CMakeLists.txt new file mode 100644 index 00000000..0258cdd6 --- /dev/null +++ b/test/test_roscreate/CMakeLists.txt @@ -0,0 +1,5 @@ +cmake_minimum_required(VERSION 2.4.6) +include($ENV{ROS_ROOT}/core/rosbuild/rosbuild.cmake) + +rosbuild_init() +rosbuild_add_pyunit(test/test_roscreate_stack.py) diff --git a/test/test_roscreate/Makefile b/test/test_roscreate/Makefile new file mode 100644 index 00000000..b75b928f --- /dev/null +++ b/test/test_roscreate/Makefile @@ -0,0 +1 @@ +include $(shell rospack find mk)/cmake.mk \ No newline at end of file diff --git a/test/test_roscreate/manifest.xml b/test/test_roscreate/manifest.xml new file mode 100644 index 00000000..f7ba74a7 --- /dev/null +++ b/test/test_roscreate/manifest.xml @@ -0,0 +1,20 @@ + + + + test_roscreate: unit tests for roscreate + + + Kenneth Conley + BSD + + http://ros.org/wiki/test_roscreate + + + + + + + + + + diff --git a/test/test_roscreate/test/fake-pkg/stack1/depends_roslib/manifest.xml b/test/test_roscreate/test/fake-pkg/stack1/depends_roslib/manifest.xml new file mode 100644 index 00000000..c8e7872c --- /dev/null +++ b/test/test_roscreate/test/fake-pkg/stack1/depends_roslib/manifest.xml @@ -0,0 +1,13 @@ + + + + depends_roslib + + + Kenneth Conley + BSD + + + + + diff --git a/test/test_roscreate/test/fake-pkg/stack1/stack.xml b/test/test_roscreate/test/fake-pkg/stack1/stack.xml new file mode 100644 index 00000000..963018f1 --- /dev/null +++ b/test/test_roscreate/test/fake-pkg/stack1/stack.xml @@ -0,0 +1,6 @@ + + stack1 + Maintained by Kenneth Conley + BSD + + diff --git a/test/test_roscreate/test/fake-pkg/stack2/depends_stack1/CMakeLists.txt b/test/test_roscreate/test/fake-pkg/stack2/depends_stack1/CMakeLists.txt new file mode 100644 index 00000000..f8f1c9cc --- /dev/null +++ b/test/test_roscreate/test/fake-pkg/stack2/depends_stack1/CMakeLists.txt @@ -0,0 +1,30 @@ +cmake_minimum_required(VERSION 2.4.6) +include($ENV{ROS_ROOT}/core/rosbuild/rosbuild.cmake) + +# Set the build type. Options are: +# Coverage : w/ debug symbols, w/o optimization, w/ code-coverage +# Debug : w/ debug symbols, w/o optimization +# Release : w/o debug symbols, w/ optimization +# RelWithDebInfo : w/ debug symbols, w/ optimization +# MinSizeRel : w/o debug symbols, w/ optimization, stripped binaries +#set(ROS_BUILD_TYPE RelWithDebInfo) + +rosbuild_init() + +#set the default path for built executables to the "bin" directory +set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) +#set the default path for built libraries to the "lib" directory +set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib) + +#uncomment if you have defined messages +#rosbuild_genmsg() +#uncomment if you have defined services +#rosbuild_gensrv() + +#common commands for building c++ executables and libraries +#rosbuild_add_library(${PROJECT_NAME} src/example.cpp) +#target_link_libraries(${PROJECT_NAME} another_library) +#rosbuild_add_boost_directories() +#rosbuild_link_boost(${PROJECT_NAME} thread) +#rosbuild_add_executable(example examples/example.cpp) +#target_link_libraries(example ${PROJECT_NAME}) diff --git a/test/test_roscreate/test/fake-pkg/stack2/depends_stack1/Makefile b/test/test_roscreate/test/fake-pkg/stack2/depends_stack1/Makefile new file mode 100644 index 00000000..b75b928f --- /dev/null +++ b/test/test_roscreate/test/fake-pkg/stack2/depends_stack1/Makefile @@ -0,0 +1 @@ +include $(shell rospack find mk)/cmake.mk \ No newline at end of file diff --git a/test/test_roscreate/test/fake-pkg/stack2/depends_stack1/mainpage.dox b/test/test_roscreate/test/fake-pkg/stack2/depends_stack1/mainpage.dox new file mode 100644 index 00000000..7583adda --- /dev/null +++ b/test/test_roscreate/test/fake-pkg/stack2/depends_stack1/mainpage.dox @@ -0,0 +1,30 @@ +/** +\mainpage +\htmlinclude manifest.html + +\b depends_stack1 is ... + + + + +\section codeapi Code API + + + + +*/ \ No newline at end of file diff --git a/test/test_roscreate/test/fake-pkg/stack2/depends_stack1/manifest.xml b/test/test_roscreate/test/fake-pkg/stack2/depends_stack1/manifest.xml new file mode 100644 index 00000000..40fb0a06 --- /dev/null +++ b/test/test_roscreate/test/fake-pkg/stack2/depends_stack1/manifest.xml @@ -0,0 +1,10 @@ + + + depends_stack1 + + Kenneth Conley + BSD + + + + diff --git a/test/test_roscreate/test/fake-pkg/stack2/stack.xml b/test/test_roscreate/test/fake-pkg/stack2/stack.xml new file mode 100644 index 00000000..90afdcd5 --- /dev/null +++ b/test/test_roscreate/test/fake-pkg/stack2/stack.xml @@ -0,0 +1,6 @@ + + stack2 + Maintained by Kenneth Conley + BSD + + diff --git a/test/test_roscreate/test/test_roscreate_stack.py b/test/test_roscreate/test/test_roscreate_stack.py new file mode 100644 index 00000000..a924b0c2 --- /dev/null +++ b/test/test_roscreate/test/test_roscreate_stack.py @@ -0,0 +1,78 @@ +# Software License Agreement (BSD License) +# +# Copyright (c) 2009, Willow Garage, Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# * Neither the name of Willow Garage, Inc. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +import roslib; roslib.load_manifest('test_roscreate') + +import os +import sys +import unittest + +class RoscreateStackTest(unittest.TestCase): + + def test_compute_stack_depends_and_licenses(self): + # this will catch only the most basic of bugs. the issue here is + # that the test can't assume the existence of other stacks, so we + # need to create an artificial tree + + import roslib.packages + import roslib.stacks + from roscreate.roscreatestack import compute_stack_depends_and_licenses + + d = roslib.packages.get_pkg_dir('test_roscreate') + d = os.path.join(d, 'test', 'fake-pkg') + # manipulate our environment as roscreate-stack is dependent on this + os.environ['ROS_PACKAGE_PATH'] = d + stack1 = os.path.join(d, 'stack1') + stack2 = os.path.join(d, 'stack2') + + # test on stack1 + depends, licenses = compute_stack_depends_and_licenses(stack1) + self.assertEquals(['ros'], depends.keys()) + self.assertEquals(['roslib'], depends['ros']) + self.assertEquals(set(['BSD']), licenses) + + d2, licenses = compute_stack_depends_and_licenses(stack2) + self.assertEquals(set(['ros', 'stack1']), set(d2.keys())) + self.assertEquals(['depends_roslib'], d2['stack1']) + self.assertEquals(set(['BSD']), licenses) + + + # test on ros_root + depends, licenses = compute_stack_depends_and_licenses(os.environ['ROS_ROOT']) + self.assertEquals({'ros': []}, depends) + self.assert_('BSD' in licenses) + + + +if __name__ == '__main__': + import rostest + rostest.unitrun('test_roscreate', 'test_roscreate_stack', RoscreateStackTest, coverage_packages=['roscreate.roscreatestack']) +