Files
openvino/ngraph/test/file_util.cpp
Mateusz Bencer 98e8aa8128 Protect reading external weights from up-dir (#3098)
* introduced path sanitizing

* added tests, folders structure clean-up

* fixed test

* fixed up-dir path handling

* improved sanitizing for windows

* fix Windows test

* move sanitize impl
2020-11-17 07:16:39 +03:00

120 lines
3.2 KiB
C++

//*****************************************************************************
// Copyright 2017-2020 Intel Corporation
//
// 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 <random>
#include <sstream>
#include <string>
#include <vector>
#include "gtest/gtest.h"
#include "ngraph/file_util.hpp"
using namespace std;
using namespace ngraph;
TEST(file_util, path_join)
{
{
string s1 = "";
string s2 = "";
EXPECT_STREQ("", file_util::path_join(s1, s2).c_str());
}
{
string s1 = "";
string s2 = "/test1/test2";
EXPECT_STREQ("/test1/test2", file_util::path_join(s1, s2).c_str());
}
{
string s1 = "";
string s2 = "/test1/test2/";
EXPECT_STREQ("/test1/test2/", file_util::path_join(s1, s2).c_str());
}
{
string s1 = "";
string s2 = "test1/test2";
EXPECT_STREQ("test1/test2", file_util::path_join(s1, s2).c_str());
}
{
string s1 = "/x1/x2";
string s2 = "";
EXPECT_STREQ("/x1/x2", file_util::path_join(s1, s2).c_str());
}
{
string s1 = "/x1/x2/";
string s2 = "/";
EXPECT_STREQ("/", file_util::path_join(s1, s2).c_str());
}
{
string s1 = "/x1/x2";
string s2 = "/test1/test2";
EXPECT_STREQ("/test1/test2", file_util::path_join(s1, s2).c_str());
}
{
string s1 = "/x1/x2/";
string s2 = "test1/test2";
EXPECT_STREQ("/x1/x2/test1/test2", file_util::path_join(s1, s2).c_str());
}
{
string s1 = "/x1/x2";
string s2 = "test1/test2";
EXPECT_STREQ("/x1/x2/test1/test2", file_util::path_join(s1, s2).c_str());
}
{
string s1 = "/";
string s2 = "test1/test2";
EXPECT_STREQ("/test1/test2", file_util::path_join(s1, s2).c_str());
}
}
TEST(file_util, santize_path)
{
{
string path = "../../tensor.data";
EXPECT_STREQ("tensor.data", file_util::sanitize_path(path).c_str());
}
{
string path = "/../tensor.data";
EXPECT_STREQ("tensor.data", file_util::sanitize_path(path).c_str());
}
{
string path = "..";
EXPECT_STREQ("", file_util::sanitize_path(path).c_str());
}
{
string path = "workspace/data/tensor.data";
EXPECT_STREQ("workspace/data/tensor.data", file_util::sanitize_path(path).c_str());
}
{
string path = "..\\..\\tensor.data";
EXPECT_STREQ("tensor.data", file_util::sanitize_path(path).c_str());
}
{
string path = "C:\\workspace\\tensor.data";
EXPECT_STREQ("workspace\\tensor.data", file_util::sanitize_path(path).c_str());
}
}