Skip to content

Commit

Permalink
Trim whitespace from uri element text
Browse files Browse the repository at this point in the history
This copies the whitespace test from gazebosim#359
but takes a narrower approach by only trimming
whitespace from `<uri>` element text.

Closes gazebosim#322.

Signed-off-by: Steve Peters <scpeters@openrobotics.org>
  • Loading branch information
scpeters committed Sep 4, 2020
1 parent 805a185 commit 286b459
Show file tree
Hide file tree
Showing 5 changed files with 108 additions and 1 deletion.
1 change: 1 addition & 0 deletions src/Material.cc
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,7 @@ Errors Material::Load(sdf::ElementPtr _sdf)
std::pair<std::string, bool> uriPair = elem->Get<std::string>("uri", "");
if (uriPair.first == "__default__")
uriPair.first = "";
uriPair.first = sdf::trim(uriPair.first);

if (!uriPair.second || uriPair.first.empty())
{
Expand Down
3 changes: 2 additions & 1 deletion src/parser.cc
Original file line number Diff line number Diff line change
Expand Up @@ -915,7 +915,8 @@ bool readXml(tinyxml2::XMLElement *_xml, ElementPtr _sdf, Errors &_errors)

if (elemXml->FirstChildElement("uri"))
{
std::string uri = elemXml->FirstChildElement("uri")->GetText();
std::string uri =
sdf::trim(elemXml->FirstChildElement("uri")->GetText());
modelPath = sdf::findFile(uri, true, true);

// Test the model path
Expand Down
1 change: 1 addition & 0 deletions test/integration/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ set(tests
urdf_gazebo_extensions.cc
urdf_joint_parameters.cc
visual_dom.cc
whitespace.cc
world_dom.cc
)

Expand Down
64 changes: 64 additions & 0 deletions test/integration/whitespace.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
/*
* Copyright 2019 Open Source Robotics Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/

#include <iostream>
#include <string>
#include <gtest/gtest.h>

#include "sdf/Actor.hh"
#include "sdf/Collision.hh"
#include "sdf/Filesystem.hh"
#include "sdf/Geometry.hh"
#include "sdf/Light.hh"
#include "sdf/Link.hh"
#include "sdf/Mesh.hh"
#include "sdf/Model.hh"
#include "sdf/parser.hh"
#include "sdf/Root.hh"
#include "sdf/SDFImpl.hh"
#include "sdf/Visual.hh"
#include "sdf/World.hh"
#include "test_config.h"

const auto g_testPath = sdf::filesystem::append(PROJECT_SOURCE_PATH, "test");
const auto g_modelsPath =
sdf::filesystem::append(g_testPath, "integration", "model");

/////////////////////////////////////////////////
std::string findFileCb(const std::string &_input)
{
return sdf::filesystem::append(g_testPath, "integration", "model", _input);
}

//////////////////////////////////////////////////
TEST(WhitespaceTest, Whitespace)
{
sdf::setFindCallback(findFileCb);

const auto worldFile =
sdf::filesystem::append(g_testPath, "sdf", "whitespace.sdf");

sdf::Root root;
sdf::Errors errors = root.Load(worldFile);
for (auto e : errors)
std::cout << e.Message() << std::endl;
EXPECT_TRUE(errors.empty());

ASSERT_NE(nullptr, root.Element());
EXPECT_EQ(worldFile, root.Element()->FilePath());
EXPECT_EQ("1.6", root.Element()->OriginalVersion());
}
40 changes: 40 additions & 0 deletions test/sdf/whitespace.sdf
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
<?xml version="1.0" ?>
<sdf version="1.6">
<world name="default">

<include>
<uri>test_model</uri>
</include>

<include>
<uri>
test_model
</uri>
<name>override_model_name</name>
</include>

<include>
<uri>test_light</uri>
</include>

<include>
<uri>
test_light
</uri>
<name>override_light_name</name>
<pose>4 5 6 0 0 0</pose>
</include>

<include>
<uri>test_actor</uri>
</include>

<include>
<uri>
test_actor
</uri>
<name>override_actor_name</name>
</include>

</world>
</sdf>

0 comments on commit 286b459

Please sign in to comment.