Skip to content
This repository was archived by the owner on Dec 9, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions lib/runtime.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -116,11 +116,13 @@ void ManagerSettings::init_settings(const everest::config::Settings& settings) {
fs::path etc_dir;
{
// etc directory
const auto default_etc_dir = fs::path(defaults::SYSCONF_DIR) / defaults::NAMESPACE;
if (prefix.string() != "/usr") {
etc_dir = prefix / default_etc_dir;
} else {
const auto default_etc_dir = (fs::path(defaults::SYSCONF_DIR) / defaults::NAMESPACE).relative_path();
if (prefix.string() == "/usr") {
etc_dir = fs::path("/") / default_etc_dir;
} else if (prefix.filename() == "usr") {
etc_dir = prefix.parent_path() / default_etc_dir;
} else {
etc_dir = prefix / default_etc_dir;
}
etc_dir = assert_dir(etc_dir.string(), "Default etc directory");
}
Expand Down
5 changes: 5 additions & 0 deletions tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,11 @@ include(test_utilities.cmake)

setup_test_directory(empty_config)
setup_test_directory(valid_config)
setup_test_directory(valid_config_custom_prefix)
file(RENAME ${CMAKE_CURRENT_BINARY_DIR}/valid_config_custom_prefix ${CMAKE_CURRENT_BINARY_DIR}/valid_config_custom_prefix_tmp)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/valid_config_custom_prefix)
file(RENAME ${CMAKE_CURRENT_BINARY_DIR}/valid_config_custom_prefix_tmp ${CMAKE_CURRENT_BINARY_DIR}/valid_config_custom_prefix/usr)
file(RENAME ${CMAKE_CURRENT_BINARY_DIR}/valid_config_custom_prefix/usr/etc ${CMAKE_CURRENT_BINARY_DIR}/valid_config_custom_prefix/etc)
setup_test_directory(valid_module_config TESTValidManifest test_interface)
setup_test_directory(valid_module_config_userconfig TESTValidManifest test_interface
CONFIG valid_module_config_config.yaml
Expand Down
7 changes: 7 additions & 0 deletions tests/test_config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,13 @@ SCENARIO("Check ManagerSettings Constructor", "[!throws]") {
CHECK_NOTHROW(Everest::ManagerSettings(bin_dir + "valid_config/", bin_dir + "valid_config/config.yaml"));
}
}
GIVEN("A valid prefix and a valid config file with a custom prefix") {
THEN("It should not throw") {
auto ms = Everest::ManagerSettings(bin_dir + "valid_config_custom_prefix/usr",
bin_dir + "valid_config_custom_prefix/usr/config.yaml");
CHECK(ms.runtime_settings.etc_dir == bin_dir + "valid_config_custom_prefix/etc/everest");
}
}
GIVEN("A broken yaml file") {
// FIXME (aw): this also throws, if the folder doesn't even exists or some other things fail
THEN("It should throw") {
Expand Down
9 changes: 9 additions & 0 deletions tests/test_configs/valid_config_custom_prefix_config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
active_modules: {}
settings:
interfaces_dir: "interfaces"
modules_dir: "modules"
types_dir: "types"
errors_dir: "errors"
schemas_dir: "schemas"
www_dir: "www"
logging_config_file: "logging.ini"