feat(xdg): return base or user directories (#6702)
This commit is contained in:
@@ -103,6 +103,63 @@ TEST(XDGDirectory, ConfigCustom)
|
||||
ASSERT_EQ(actual.length(), 3);
|
||||
}
|
||||
|
||||
TEST(XDGDirectory, ConfigUserDefault)
|
||||
{
|
||||
QTemporaryDir tmp;
|
||||
auto lock = environmentLock();
|
||||
|
||||
TempEnv home("HOME", combinePath(tmp.path(), "home"));
|
||||
TempEnv dataHome("XDG_CONFIG_HOME", {});
|
||||
|
||||
auto actual = getXDGUserDirectories(XDGDirectoryType::Config);
|
||||
|
||||
ASSERT_EQ(actual.at(0), combinePath(home.getValue(), ".config/"));
|
||||
|
||||
ASSERT_EQ(actual.length(), 1);
|
||||
}
|
||||
|
||||
TEST(XDGDirectory, ConfigUserCustom)
|
||||
{
|
||||
auto lock = environmentLock();
|
||||
|
||||
TempEnv dataDirs("XDG_CONFIG_HOME", "/tmp/home-data");
|
||||
|
||||
auto actual = getXDGUserDirectories(XDGDirectoryType::Config);
|
||||
|
||||
ASSERT_EQ(actual.at(0), "/tmp/home-data");
|
||||
|
||||
ASSERT_EQ(actual.length(), 1);
|
||||
}
|
||||
|
||||
TEST(XDGDirectory, ConfigBaseDefault)
|
||||
{
|
||||
auto lock = environmentLock();
|
||||
|
||||
TempEnv dataDirs("XDG_CONFIG_DIRS", {});
|
||||
|
||||
auto actual = getXDGBaseDirectories(XDGDirectoryType::Config);
|
||||
|
||||
ASSERT_EQ(actual.at(0), "/etc/xdg");
|
||||
|
||||
ASSERT_EQ(actual.length(), 1);
|
||||
}
|
||||
|
||||
TEST(XDGDirectory, ConfigBaseCustom)
|
||||
{
|
||||
auto lock = environmentLock();
|
||||
|
||||
TempEnv dataDirs("XDG_CONFIG_DIRS",
|
||||
"/tmp/sys-data-1:/tmp/sys-data-2:/tmp/sys-data-3");
|
||||
|
||||
auto actual = getXDGBaseDirectories(XDGDirectoryType::Config);
|
||||
|
||||
ASSERT_EQ(actual.at(0), "/tmp/sys-data-1");
|
||||
ASSERT_EQ(actual.at(1), "/tmp/sys-data-2");
|
||||
ASSERT_EQ(actual.at(2), "/tmp/sys-data-3");
|
||||
|
||||
ASSERT_EQ(actual.length(), 3);
|
||||
}
|
||||
|
||||
/// Test the returned directories from XDGDirectoryType::Data when no extra environment variables are set
|
||||
TEST(XDGDirectory, DataDefault)
|
||||
{
|
||||
@@ -141,4 +198,59 @@ TEST(XDGDirectory, DataCustom)
|
||||
ASSERT_EQ(actual.length(), 4);
|
||||
}
|
||||
|
||||
TEST(XDGDirectory, DataUserDefault)
|
||||
{
|
||||
QTemporaryDir tmp;
|
||||
auto lock = environmentLock();
|
||||
|
||||
TempEnv home("HOME", combinePath(tmp.path(), "home"));
|
||||
TempEnv dataDirs("XDG_DATA_HOME", {});
|
||||
|
||||
auto actual = getXDGUserDirectories(XDGDirectoryType::Data);
|
||||
|
||||
ASSERT_EQ(actual.at(0), combinePath(home.getValue(), ".local/share/"));
|
||||
|
||||
ASSERT_EQ(actual.length(), 1);
|
||||
}
|
||||
|
||||
TEST(XDGDirectory, DataUserCustom)
|
||||
{
|
||||
auto lock = environmentLock();
|
||||
|
||||
TempEnv dataHome("XDG_DATA_HOME", "/tmp/home-share");
|
||||
|
||||
auto actual = getXDGUserDirectories(XDGDirectoryType::Data);
|
||||
|
||||
ASSERT_EQ(actual.at(0), "/tmp/home-share");
|
||||
|
||||
ASSERT_EQ(actual.length(), 1);
|
||||
}
|
||||
|
||||
TEST(XDGDirectory, DataBaseDefault)
|
||||
{
|
||||
auto lock = environmentLock();
|
||||
|
||||
TempEnv dataDirs("XDG_DATA_DIRS", {});
|
||||
|
||||
auto actual = getXDGBaseDirectories(XDGDirectoryType::Data);
|
||||
|
||||
ASSERT_EQ(actual.at(0), "/usr/local/share/");
|
||||
ASSERT_EQ(actual.at(1), "/usr/share/");
|
||||
|
||||
ASSERT_EQ(actual.length(), 2);
|
||||
}
|
||||
|
||||
TEST(XDGDirectory, DataBaseCustom)
|
||||
{
|
||||
auto lock = environmentLock();
|
||||
|
||||
TempEnv dataDirs("XDG_DATA_DIRS", "/tmp/sys-share-1");
|
||||
|
||||
auto actual = getXDGBaseDirectories(XDGDirectoryType::Data);
|
||||
|
||||
ASSERT_EQ(actual.at(0), "/tmp/sys-share-1");
|
||||
|
||||
ASSERT_EQ(actual.length(), 1);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user