Files
iZo/tests/environment_paths.cpp

40 lines
2.0 KiB
C++

#include "test_support.hpp"
#include <izo/environment.hpp>
#include <izo/paths.hpp>
#include <array>
int main() {
std::string error;
CHECK(izo::set_environment_variable("IZO_TEST_VALUE", "hello-utf8-å", &error));
CHECK(izo::get_environment_variable("IZO_TEST_VALUE") == "hello-utf8-å");
CHECK(izo::set_environment_variable("IZO_TEST_VALUE", "", &error));
CHECK(izo::get_environment_variable("IZO_TEST_VALUE") == "");
CHECK(izo::unset_environment_variable("IZO_TEST_VALUE", &error));
CHECK(!izo::get_environment_variable("IZO_TEST_VALUE"));
const auto root = test_directory("paths");
CHECK(izo::set_environment_variable("HOME", root.string(), &error));
CHECK(izo::unset_environment_variable("XDG_DATA_HOME", &error));
CHECK(izo::unset_environment_variable("XDG_CONFIG_HOME", &error));
CHECK(izo::unset_environment_variable("XDG_CACHE_HOME", &error));
CHECK(izo::unset_environment_variable("TMPDIR", &error));
CHECK(izo::get_known_path(izo::known_path::app_data) == root / ".local/share");
CHECK(izo::get_known_path(izo::known_path::local_app_data) == root / ".local/share");
CHECK(izo::get_known_path(izo::known_path::config) == root / ".config");
CHECK(izo::get_known_path(izo::known_path::cache) == root / ".cache");
CHECK(izo::get_known_path(izo::known_path::documents) == root / "Documents");
CHECK(izo::get_known_path(izo::known_path::downloads) == root / "Downloads");
CHECK(izo::get_known_path(izo::known_path::desktop) == root / "Desktop");
CHECK(izo::get_known_path(izo::known_path::temporary) == "/tmp");
CHECK(!izo::get_known_path(izo::known_path::executable_directory, &error).empty());
CHECK(izo::get_known_path(izo::known_path::current_directory, &error) ==
std::filesystem::current_path());
CHECK(izo::set_environment_variable("XDG_CONFIG_HOME", (root / "custom-config").string(), &error));
CHECK(izo::get_known_path(izo::known_path::config) == root / "custom-config");
std::filesystem::remove_all(root);
}