lumiera_/tests/library/search-path-splitter-test.cpp
Ichthyostega c5292dd0dd Clean-up: get rid of boost::filesystem
Since C++17 we can use the std::filesystem instead (and we ''do use it'' indeed)
- relocate the `/lib/file.hpp` header
- adapt the self-discovery of the executable to using std::filesystem

Furthermore, some recherche regarding XVideo and Video Output
2025-04-27 23:54:21 +02:00

93 lines
2.3 KiB
C++
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
SearchPathSplitter(Test) - iterating a search path specification
Copyright (C)
2011, Hermann Vosseler <Ichthyostega@web.de>
  **Lumiera** is free software; you can redistribute it and/or modify it
  under the terms of the GNU General Public License as published by the
  Free Software Foundation; either version 2 of the License, or (at your
  option) any later version. See the file COPYING for further details.
* *****************************************************************/
/** @file search-path-splitter-test.cpp
** unit test \ref SearchPathSplitter_test
*/
#include "lib/test/run.hpp"
#include "lib/test/test-helper.hpp"
#include "lib/format-cout.hpp"
#include "lib/file.hpp"
#include "lib/searchpath.hpp"
namespace lib {
namespace test {
/**************************************************//**
* @test verify splitting a search path specification
* and retrieving the components by iteration.
* Embedded \c $ORIGIN tokens get resolved
* to the absolute path of this executable.
*/
class SearchPathSplitter_test : public Test
{
void
run (Arg)
{
walkSimplePaths ();
resolveEmbeddedOriginToken ();
}
void
walkSimplePaths ()
{
walk ("");
walk (":");
walk ("a:");
walk (":a");
walk ("a:b");
walk (":a:b:c:");
walk (" d : e f");
walk ("/usr/bin:/usr/lib");
SearchPathSplitter sp("");
VERIFY_ERROR (ITER_EXHAUST, sp.next() );
}
void
walk (string spec)
{
SearchPathSplitter path(spec);
while (path)
cout << "➢➢" << path.next() << endl;
}
void
resolveEmbeddedOriginToken ()
{
fs::path exePath{findExePath()};
string expected{exePath.parent_path() / "modules"};
SearchPathSplitter sp("xyz:$ORIGIN/modules:abc");
CHECK ("xyz" == sp.next());
CHECK (sp.next() == expected);
CHECK ("abc" == sp.next());
CHECK (!sp.isValid());
}
};
LAUNCHER (SearchPathSplitter_test, "unit common");
}} // namespace lib::test