move resource_retriever to its own repository
This commit is contained in:
parent
137268dc21
commit
210654ace6
|
@ -1,38 +0,0 @@
|
|||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
Changelog for package resource_retriever
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
1.11.6 (2014-11-30)
|
||||
-------------------
|
||||
|
||||
1.11.5 (2014-07-24)
|
||||
-------------------
|
||||
|
||||
1.11.4 (2014-07-07)
|
||||
-------------------
|
||||
|
||||
1.11.3 (2014-06-24)
|
||||
-------------------
|
||||
|
||||
1.11.2 (2014-03-22)
|
||||
-------------------
|
||||
|
||||
1.11.1 (2014-03-20)
|
||||
-------------------
|
||||
|
||||
1.11.0 (2014-02-21)
|
||||
-------------------
|
||||
|
||||
1.10.18 (2013-12-04)
|
||||
--------------------
|
||||
* add DEPENDS for kdl_parser
|
||||
* Contributors: Ioan Sucan
|
||||
|
||||
1.10.16 (2013-11-18)
|
||||
--------------------
|
||||
* check for CATKIN_ENABLE_TESTING
|
||||
|
||||
1.10.15 (2013-08-17)
|
||||
--------------------
|
||||
|
||||
* resource_retriever: install python package using setup.py
|
|
@ -1,37 +0,0 @@
|
|||
cmake_minimum_required(VERSION 2.8.3)
|
||||
project(resource_retriever)
|
||||
|
||||
find_package(catkin REQUIRED COMPONENTS rosconsole roslib)
|
||||
|
||||
catkin_python_setup()
|
||||
|
||||
catkin_package(
|
||||
LIBRARIES ${PROJECT_NAME}
|
||||
INCLUDE_DIRS include)
|
||||
|
||||
include_directories(include)
|
||||
|
||||
find_package(catkin REQUIRED COMPONENTS rosconsole roslib)
|
||||
include_directories(${catkin_INCLUDE_DIRS})
|
||||
link_directories(${catkin_LIBRARY_DIRS})
|
||||
|
||||
include(FindCURL)
|
||||
if(NOT CURL_FOUND)
|
||||
message("CURL not found! Aborting...")
|
||||
fail()
|
||||
endif(NOT CURL_FOUND)
|
||||
include_directories(${CURL_INCLUDE_DIRS})
|
||||
|
||||
|
||||
add_library(${PROJECT_NAME} src/retriever.cpp)
|
||||
target_link_libraries(${PROJECT_NAME} ${CURL_LIBRARIES} ${catkin_LIBRARIES})
|
||||
|
||||
if(CATKIN_ENABLE_TESTING)
|
||||
add_subdirectory(test EXCLUDE_FROM_ALL)
|
||||
endif()
|
||||
|
||||
install(TARGETS ${PROJECT_NAME}
|
||||
DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION})
|
||||
|
||||
install(DIRECTORY include/${PROJECT_NAME}/
|
||||
DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION})
|
|
@ -1,86 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2009, Willow Garage, Inc.
|
||||
*
|
||||
* 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 names of Stanford University or 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.
|
||||
*/
|
||||
|
||||
#ifndef RESOURCE_RETRIEVER_RETRIEVER_H
|
||||
#define RESOURCE_RETRIEVER_RETRIEVER_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <string>
|
||||
#include <boost/shared_array.hpp>
|
||||
#include <stdexcept>
|
||||
|
||||
typedef void CURL;
|
||||
|
||||
namespace resource_retriever
|
||||
{
|
||||
|
||||
class Exception : public std::runtime_error
|
||||
{
|
||||
public:
|
||||
Exception(const std::string& file, const std::string& error_msg)
|
||||
: std::runtime_error("Error retrieving file [" + file + "]: " + error_msg)
|
||||
{}
|
||||
};
|
||||
|
||||
/**
|
||||
* \brief A combination of a pointer to data in memory along with the data's size.
|
||||
*/
|
||||
struct MemoryResource
|
||||
{
|
||||
MemoryResource()
|
||||
: size(0)
|
||||
{}
|
||||
|
||||
boost::shared_array<uint8_t> data;
|
||||
uint32_t size;
|
||||
};
|
||||
|
||||
/**
|
||||
* \brief Retrieves files from from a url. Caches a CURL handle so multiple accesses to a single url
|
||||
* will keep connections open.
|
||||
*/
|
||||
class Retriever
|
||||
{
|
||||
public:
|
||||
Retriever();
|
||||
~Retriever();
|
||||
|
||||
/**
|
||||
* \brief Get a file and store it in memory
|
||||
* \param url The url to retrieve. package://package/file will be turned into the correct file:// invocation
|
||||
* \return The file, loaded into memory
|
||||
* \throws resource_retriever::Exception if anything goes wrong.
|
||||
*/
|
||||
MemoryResource get(const std::string& url);
|
||||
|
||||
private:
|
||||
CURL* curl_handle_;
|
||||
};
|
||||
|
||||
} // namespace resource_retriever
|
||||
|
||||
#endif // RESOURCE_RETRIEVER_RETRIEVER_H
|
|
@ -1,14 +0,0 @@
|
|||
/**
|
||||
\mainpage
|
||||
\htmlinclude manifest.html
|
||||
|
||||
\b resource_retriever is a package used for downloading files from a url. It also provides special handling of the package:// prefix, allowing things to be referenced
|
||||
by path relative to a package.
|
||||
|
||||
|
||||
\section codeapi Code API
|
||||
|
||||
- resource_retriever::Retriever -- Use this class to download files.
|
||||
|
||||
|
||||
*/
|
|
@ -1,33 +0,0 @@
|
|||
<package>
|
||||
<name>resource_retriever</name>
|
||||
<version>1.11.6</version>
|
||||
<description>
|
||||
This package retrieves data from url-format files such as http://,
|
||||
ftp://, package:// file://, etc., and loads the data into memory.
|
||||
The package:// url for ros packages is translated into a local
|
||||
file:// url. The resourse retriever was initially designed to load
|
||||
mesh files into memory, but it can be used for any type of
|
||||
data. The resource retriever is based on the the libcurl library.
|
||||
</description>
|
||||
|
||||
<author email="jfaust@willowgarage.com">Josh Faust</author>
|
||||
<maintainer email="isucan@gmail.com">Ioan Sucan</maintainer>
|
||||
|
||||
<license>BSD</license>
|
||||
|
||||
<url type="website">http://ros.org/wiki/resource_retriever</url>
|
||||
<url type="repository">https://github.com/ros/robot_model</url>
|
||||
<url type="bugtracker">https://github.com/ros/robot_model/issues</url>
|
||||
|
||||
<buildtool_depend version_gte="0.5.68">catkin</buildtool_depend>
|
||||
|
||||
<build_depend>curl</build_depend>
|
||||
<build_depend>rosconsole</build_depend>
|
||||
<build_depend>roslib</build_depend>
|
||||
|
||||
<run_depend>curl</run_depend>
|
||||
<run_depend>rosconsole</run_depend>
|
||||
<run_depend>roslib</run_depend>
|
||||
<run_depend>python-urlgrabber</run_depend>
|
||||
|
||||
</package>
|
|
@ -1,9 +0,0 @@
|
|||
from distutils.core import setup
|
||||
from catkin_pkg.python_setup import generate_distutils_setup
|
||||
|
||||
d = generate_distutils_setup()
|
||||
d['packages'] = ['resource_retriever']
|
||||
d['scripts'] = []
|
||||
d['package_dir'] = {'': 'src'}
|
||||
|
||||
setup(**d)
|
|
@ -1,69 +0,0 @@
|
|||
# Software License Agreement (BSD License)
|
||||
#
|
||||
# Copyright (c) 2008, 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 the Willow Garage 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('resource_retriever')
|
||||
import subprocess
|
||||
import urlgrabber, string
|
||||
|
||||
PACKAGE_PREFIX = 'package://'
|
||||
|
||||
def rospack_find(package):
|
||||
process = subprocess.Popen(['rospack', 'find', package], shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
(stdout, stderr) = process.communicate()
|
||||
if len(stderr) > 0:
|
||||
raise Exception(stderr)
|
||||
else:
|
||||
return string.strip(stdout)
|
||||
|
||||
def get_filename(url, use_protocol=True ):
|
||||
mod_url = url
|
||||
if url.find(PACKAGE_PREFIX) == 0:
|
||||
mod_url = url[len(PACKAGE_PREFIX):]
|
||||
pos = mod_url.find('/')
|
||||
if pos == -1:
|
||||
raise Exception("Could not parse package:// format into file:// format for "+url)
|
||||
|
||||
package = mod_url[0:pos]
|
||||
mod_url = mod_url[pos:]
|
||||
package_path = rospack_find(package)
|
||||
|
||||
if use_protocol:
|
||||
protocol = "file://"
|
||||
else:
|
||||
protocol = ""
|
||||
mod_url = protocol + package_path + mod_url;
|
||||
return mod_url
|
||||
|
||||
def get(url):
|
||||
return urlgrabber.urlopen(get_filename(url))
|
||||
|
|
@ -1,147 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2009, Willow Garage, Inc.
|
||||
*
|
||||
* 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 names of Stanford University or 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.
|
||||
*/
|
||||
|
||||
#include "resource_retriever/retriever.h"
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include <ros/package.h>
|
||||
#include <ros/console.h>
|
||||
|
||||
#include <curl/curl.h>
|
||||
|
||||
namespace resource_retriever
|
||||
{
|
||||
|
||||
class CURLStaticInit
|
||||
{
|
||||
public:
|
||||
CURLStaticInit()
|
||||
: initialized_(false)
|
||||
{
|
||||
CURLcode ret = curl_global_init(CURL_GLOBAL_ALL);
|
||||
if (ret != 0)
|
||||
{
|
||||
ROS_ERROR("Error initializing libcurl! retcode = %d", ret);
|
||||
}
|
||||
else
|
||||
{
|
||||
initialized_ = true;
|
||||
}
|
||||
}
|
||||
|
||||
~CURLStaticInit()
|
||||
{
|
||||
if (initialized_)
|
||||
{
|
||||
curl_global_cleanup();
|
||||
}
|
||||
}
|
||||
|
||||
bool initialized_;
|
||||
};
|
||||
static CURLStaticInit g_curl_init;
|
||||
|
||||
Retriever::Retriever()
|
||||
{
|
||||
curl_handle_ = curl_easy_init();
|
||||
}
|
||||
|
||||
Retriever::~Retriever()
|
||||
{
|
||||
if (curl_handle_)
|
||||
{
|
||||
curl_easy_cleanup(curl_handle_);
|
||||
}
|
||||
}
|
||||
|
||||
struct MemoryBuffer
|
||||
{
|
||||
std::vector<uint8_t> v;
|
||||
};
|
||||
|
||||
size_t curlWriteFunc(void* buffer, size_t size, size_t nmemb, void* userp)
|
||||
{
|
||||
MemoryBuffer* membuf = (MemoryBuffer*)userp;
|
||||
|
||||
size_t prev_size = membuf->v.size();
|
||||
membuf->v.resize(prev_size + size * nmemb);
|
||||
memcpy(&membuf->v[prev_size], buffer, size * nmemb);
|
||||
|
||||
return size * nmemb;
|
||||
}
|
||||
|
||||
MemoryResource Retriever::get(const std::string& url)
|
||||
{
|
||||
std::string mod_url = url;
|
||||
if (url.find("package://") == 0)
|
||||
{
|
||||
mod_url.erase(0, strlen("package://"));
|
||||
size_t pos = mod_url.find("/");
|
||||
if (pos == std::string::npos)
|
||||
{
|
||||
throw Exception(url, "Could not parse package:// format into file:// format");
|
||||
}
|
||||
|
||||
std::string package = mod_url.substr(0, pos);
|
||||
mod_url.erase(0, pos);
|
||||
std::string package_path = ros::package::getPath(package);
|
||||
|
||||
if (package_path.empty())
|
||||
{
|
||||
throw Exception(url, "Package [" + package + "] does not exist");
|
||||
}
|
||||
|
||||
mod_url = "file://" + package_path + mod_url;
|
||||
}
|
||||
|
||||
curl_easy_setopt(curl_handle_, CURLOPT_URL, mod_url.c_str());
|
||||
curl_easy_setopt(curl_handle_, CURLOPT_WRITEFUNCTION, curlWriteFunc);
|
||||
|
||||
char error_buffer[CURL_ERROR_SIZE];
|
||||
curl_easy_setopt(curl_handle_, CURLOPT_ERRORBUFFER , error_buffer);
|
||||
|
||||
MemoryResource res;
|
||||
MemoryBuffer buf;
|
||||
curl_easy_setopt(curl_handle_, CURLOPT_WRITEDATA, &buf);
|
||||
|
||||
CURLcode ret = curl_easy_perform(curl_handle_);
|
||||
if (ret != 0)
|
||||
{
|
||||
throw Exception(mod_url, error_buffer);
|
||||
}
|
||||
else if (!buf.v.empty())
|
||||
{
|
||||
res.size = buf.v.size();
|
||||
res.data.reset(new uint8_t[res.size]);
|
||||
memcpy(res.data.get(), &buf.v[0], res.size);
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,4 +0,0 @@
|
|||
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR})
|
||||
|
||||
catkin_add_gtest(${PROJECT_NAME}_utest test.cpp)
|
||||
target_link_libraries(${PROJECT_NAME}_utest ${PROJECT_NAME})
|
|
@ -1,140 +0,0 @@
|
|||
/*********************************************************************
|
||||
* Software License Agreement (BSD License)
|
||||
*
|
||||
* Copyright (c) 2008, 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 the Willow Garage 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.
|
||||
*********************************************************************/
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include <resource_retriever/retriever.h>
|
||||
#include <ros/package.h>
|
||||
#include <ros/console.h>
|
||||
|
||||
using namespace resource_retriever;
|
||||
|
||||
TEST(Retriever, getByPackage)
|
||||
{
|
||||
try
|
||||
{
|
||||
Retriever r;
|
||||
MemoryResource res = r.get("package://"ROS_PACKAGE_NAME"/test/test.txt");
|
||||
|
||||
ASSERT_EQ(res.size, 1);
|
||||
ASSERT_EQ(res.data[0], 'A');
|
||||
}
|
||||
catch (Exception& e)
|
||||
{
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
TEST(Retriever, largeFile)
|
||||
{
|
||||
try
|
||||
{
|
||||
std::string path = ros::package::getPath(ROS_PACKAGE_NAME) + "/test/large_file.dat";
|
||||
|
||||
FILE* f = fopen(path.c_str(), "w");
|
||||
|
||||
ASSERT_TRUE(f);
|
||||
|
||||
for (int i = 0; i < 1024*1024*50; ++i)
|
||||
{
|
||||
fprintf(f, "A");
|
||||
}
|
||||
fclose(f);
|
||||
|
||||
Retriever r;
|
||||
MemoryResource res = r.get("package://"ROS_PACKAGE_NAME"/test/large_file.dat");
|
||||
|
||||
ASSERT_EQ(res.size, 1024*1024*50);
|
||||
}
|
||||
catch (Exception& e)
|
||||
{
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
TEST(Retriever, http)
|
||||
{
|
||||
try
|
||||
{
|
||||
Retriever r;
|
||||
MemoryResource res = r.get("http://pr.willowgarage.com/downloads/svnmerge.py");
|
||||
|
||||
ASSERT_GT(res.size, 0);
|
||||
}
|
||||
catch (Exception& e)
|
||||
{
|
||||
FAIL();
|
||||
}
|
||||
}
|
||||
|
||||
TEST(Retriever, invalidFiles)
|
||||
{
|
||||
Retriever r;
|
||||
|
||||
try
|
||||
{
|
||||
r.get("file://fail");
|
||||
FAIL();
|
||||
}
|
||||
catch (Exception& e)
|
||||
{
|
||||
ROS_INFO("%s", e.what());
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
r.get("package://roscpp");
|
||||
FAIL();
|
||||
}
|
||||
catch (Exception& e)
|
||||
{
|
||||
ROS_INFO("%s", e.what());
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
r.get("package://invalid_package_blah/test.xml");
|
||||
FAIL();
|
||||
}
|
||||
catch (Exception& e)
|
||||
{
|
||||
ROS_INFO("%s", e.what());
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, char **argv){
|
||||
testing::InitGoogleTest(&argc, argv);
|
||||
return RUN_ALL_TESTS();
|
||||
}
|
||||
|
|
@ -1 +0,0 @@
|
|||
A
|
Loading…
Reference in New Issue