Filesystem tests: fix fs.op.relative
Summary: The test wasn't using the testing infrastructure properly. Reviewers: ldionne, mclow.lists, EricWF Subscribers: christof, jkorous, dexonsmith, libcxx-commits Differential Revision: https://reviews.llvm.org/D56519 git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@350872 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -16,9 +16,8 @@
|
|||||||
// path proximate(const path& p, const path& base, error_code& ec);
|
// path proximate(const path& p, const path& base, error_code& ec);
|
||||||
|
|
||||||
#include "filesystem_include.hpp"
|
#include "filesystem_include.hpp"
|
||||||
|
#include <string>
|
||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
#include <vector>
|
|
||||||
#include <iostream>
|
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
|
||||||
#include "test_macros.h"
|
#include "test_macros.h"
|
||||||
@@ -30,49 +29,90 @@
|
|||||||
|
|
||||||
TEST_SUITE(filesystem_proximate_path_test_suite)
|
TEST_SUITE(filesystem_proximate_path_test_suite)
|
||||||
|
|
||||||
TEST_CASE(test_signature) {
|
TEST_CASE(test_signature_0) {
|
||||||
|
fs::path p("");
|
||||||
|
const fs::path output = fs::weakly_canonical(p);
|
||||||
|
TEST_CHECK(output == std::string(fs::current_path()));
|
||||||
}
|
}
|
||||||
int main() {
|
|
||||||
// clang-format off
|
TEST_CASE(test_signature_1) {
|
||||||
struct {
|
fs::path p(".");
|
||||||
std::string input;
|
const fs::path output = fs::weakly_canonical(p);
|
||||||
std::string expect;
|
TEST_CHECK(output == std::string(fs::current_path()));
|
||||||
} TestCases[] = {
|
}
|
||||||
{"", fs::current_path()},
|
|
||||||
{".", fs::current_path()},
|
TEST_CASE(test_signature_2) {
|
||||||
{StaticEnv::File, StaticEnv::File},
|
fs::path p(StaticEnv::File);
|
||||||
{StaticEnv::Dir, StaticEnv::Dir},
|
const fs::path output = fs::weakly_canonical(p);
|
||||||
{StaticEnv::SymlinkToDir, StaticEnv::Dir},
|
TEST_CHECK(output == std::string(StaticEnv::File));
|
||||||
{StaticEnv::SymlinkToDir / "dir2/.", StaticEnv::Dir / "dir2"},
|
}
|
||||||
|
|
||||||
|
TEST_CASE(test_signature_3) {
|
||||||
|
fs::path p(StaticEnv::Dir);
|
||||||
|
const fs::path output = fs::weakly_canonical(p);
|
||||||
|
TEST_CHECK(output == std::string(StaticEnv::Dir));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE(test_signature_4) {
|
||||||
|
fs::path p(StaticEnv::SymlinkToDir);
|
||||||
|
const fs::path output = fs::weakly_canonical(p);
|
||||||
|
TEST_CHECK(output == std::string(StaticEnv::Dir));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE(test_signature_5) {
|
||||||
|
fs::path p(StaticEnv::SymlinkToDir / "dir2/.");
|
||||||
|
const fs::path output = fs::weakly_canonical(p);
|
||||||
|
TEST_CHECK(output == std::string(StaticEnv::Dir / "dir2"));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE(test_signature_6) {
|
||||||
// FIXME? If the trailing separator occurs in a part of the path that exists,
|
// FIXME? If the trailing separator occurs in a part of the path that exists,
|
||||||
// it is ommitted. Otherwise it is added to the end of the result.
|
// it is ommitted. Otherwise it is added to the end of the result.
|
||||||
{StaticEnv::SymlinkToDir / "dir2/./", StaticEnv::Dir / "dir2"},
|
fs::path p(StaticEnv::SymlinkToDir / "dir2/./");
|
||||||
{StaticEnv::SymlinkToDir / "dir2/DNE/./", StaticEnv::Dir / "dir2/DNE/"},
|
|
||||||
{StaticEnv::SymlinkToDir / "dir2", StaticEnv::Dir2},
|
|
||||||
{StaticEnv::SymlinkToDir / "dir2/../dir2/DNE/..", StaticEnv::Dir2 / ""},
|
|
||||||
{StaticEnv::SymlinkToDir / "dir2/dir3/../DNE/DNE2", StaticEnv::Dir2 / "DNE/DNE2"},
|
|
||||||
{StaticEnv::Dir / "../dir1", StaticEnv::Dir},
|
|
||||||
{StaticEnv::Dir / "./.", StaticEnv::Dir},
|
|
||||||
{StaticEnv::Dir / "DNE/../foo", StaticEnv::Dir / "foo"}
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
int ID = 0;
|
|
||||||
bool Failed = false;
|
|
||||||
for (auto& TC : TestCases) {
|
|
||||||
++ID;
|
|
||||||
fs::path p(TC.input);
|
|
||||||
const fs::path output = fs::weakly_canonical(p);
|
const fs::path output = fs::weakly_canonical(p);
|
||||||
if (output != TC.expect) {
|
TEST_CHECK(output == std::string(StaticEnv::Dir / "dir2"));
|
||||||
Failed = true;
|
}
|
||||||
std::cerr << "TEST CASE #" << ID << " FAILED: \n";
|
|
||||||
std::cerr << " Input: '" << TC.input << "'\n";
|
TEST_CASE(test_signature_7) {
|
||||||
std::cerr << " Expected: '" << TC.expect << "'\n";
|
fs::path p(StaticEnv::SymlinkToDir / "dir2/DNE/./");
|
||||||
std::cerr << " Output: '" << output.native() << "'";
|
const fs::path output = fs::weakly_canonical(p);
|
||||||
std::cerr << std::endl;
|
TEST_CHECK(output == std::string(StaticEnv::Dir / "dir2/DNE/"));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return Failed;
|
TEST_CASE(test_signature_8) {
|
||||||
|
fs::path p(StaticEnv::SymlinkToDir / "dir2");
|
||||||
|
const fs::path output = fs::weakly_canonical(p);
|
||||||
|
TEST_CHECK(output == std::string(StaticEnv::Dir2));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE(test_signature_9) {
|
||||||
|
fs::path p(StaticEnv::SymlinkToDir / "dir2/../dir2/DNE/..");
|
||||||
|
const fs::path output = fs::weakly_canonical(p);
|
||||||
|
TEST_CHECK(output == std::string(StaticEnv::Dir2 / ""));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE(test_signature_10) {
|
||||||
|
fs::path p(StaticEnv::SymlinkToDir / "dir2/dir3/../DNE/DNE2");
|
||||||
|
const fs::path output = fs::weakly_canonical(p);
|
||||||
|
TEST_CHECK(output == std::string(StaticEnv::Dir2 / "DNE/DNE2"));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE(test_signature_11) {
|
||||||
|
fs::path p(StaticEnv::Dir / "../dir1");
|
||||||
|
const fs::path output = fs::weakly_canonical(p);
|
||||||
|
TEST_CHECK(output == std::string(StaticEnv::Dir));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE(test_signature_12) {
|
||||||
|
fs::path p(StaticEnv::Dir / "./.");
|
||||||
|
const fs::path output = fs::weakly_canonical(p);
|
||||||
|
TEST_CHECK(output == std::string(StaticEnv::Dir));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE(test_signature_13) {
|
||||||
|
fs::path p(StaticEnv::Dir / "DNE/../foo");
|
||||||
|
const fs::path output = fs::weakly_canonical(p);
|
||||||
|
TEST_CHECK(output == std::string(StaticEnv::Dir / "foo"));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_SUITE_END()
|
TEST_SUITE_END()
|
||||||
|
|||||||
Reference in New Issue
Block a user