New upstream version 8.1.0
This commit is contained in:
90
common/tests/TestStorageTk.cpp
Normal file
90
common/tests/TestStorageTk.cpp
Normal file
@@ -0,0 +1,90 @@
|
||||
#include <common/toolkit/StorageTk.h>
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
// full set of characters allowed in path components, properly escaped as by /proc/mounts
|
||||
#define FULL_SET "\001\002\003\004\005\006\007\010\\011\\012\013\014\015\016\017\020\021" \
|
||||
"\022\023\024\025\026\027\030\031\032\033\034\035\036\037\\040!\"#$%&'()*+,-.0123456789:;<=>?" \
|
||||
"@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\134]^_`abcdefghijklmnopqrstuvwxyz{|}~\177\200\201\202\203\204" \
|
||||
"\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233" \
|
||||
"\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262" \
|
||||
"\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311" \
|
||||
"\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340" \
|
||||
"\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367" \
|
||||
"\370\371\372\373\374\375\376\377"
|
||||
#define FULL_SET_RAW "\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021" \
|
||||
"\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040!\"#$%&'()*+,-.0123456789:;<=>?" \
|
||||
"@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\134]^_`abcdefghijklmnopqrstuvwxyz{|}~\177\200\201\202\203\204" \
|
||||
"\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233" \
|
||||
"\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262" \
|
||||
"\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311" \
|
||||
"\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340" \
|
||||
"\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367" \
|
||||
"\370\371\372\373\374\375\376\377"
|
||||
|
||||
TEST(StorageTk, findMountedPrefix)
|
||||
{
|
||||
static const char* inputFile =
|
||||
"/dev/root / tmpfs rw 0 0\n"
|
||||
"/dev/sda1 /test/foo/bar xfs rw 0 0\n"
|
||||
"/dev/sda1 /test/fo ext4 rw 0 0\n"
|
||||
"/dev/sda1 /test/" FULL_SET " ext4 rw 0 0\n"
|
||||
"/dev/sda1 /test/foo ext4 rw 0 0\n";
|
||||
|
||||
{
|
||||
std::stringstream file;
|
||||
ASSERT_FALSE(StorageTk::findLongestMountedPrefix("", file).first);
|
||||
}
|
||||
|
||||
{
|
||||
std::stringstream file;
|
||||
ASSERT_FALSE(StorageTk::findLongestMountedPrefix("relative", file).first);
|
||||
}
|
||||
|
||||
{
|
||||
std::stringstream file;
|
||||
file.setstate(std::stringstream::failbit);
|
||||
ASSERT_FALSE(StorageTk::findLongestMountedPrefix("/", file).first);
|
||||
}
|
||||
|
||||
{
|
||||
std::stringstream file;
|
||||
auto res = StorageTk::findLongestMountedPrefix("/test", file);
|
||||
ASSERT_FALSE(res.first);
|
||||
}
|
||||
|
||||
{
|
||||
std::stringstream file(inputFile);
|
||||
auto res = StorageTk::findLongestMountedPrefix("/test/foo1", file);
|
||||
ASSERT_TRUE(res.first);
|
||||
ASSERT_EQ(res.second, (Mount{"/dev/root", "/", "tmpfs"}));
|
||||
}
|
||||
|
||||
{
|
||||
std::stringstream file(inputFile);
|
||||
auto res = StorageTk::findLongestMountedPrefix("/test/foo/bar/baz", file);
|
||||
ASSERT_TRUE(res.first);
|
||||
ASSERT_EQ(res.second, (Mount{"/dev/sda1", "/test/foo/bar", "xfs"}));
|
||||
}
|
||||
|
||||
{
|
||||
std::stringstream file(inputFile);
|
||||
auto res = StorageTk::findLongestMountedPrefix("/test/foo", file);
|
||||
ASSERT_TRUE(res.first);
|
||||
ASSERT_EQ(res.second, (Mount{"/dev/sda1", "/test/foo", "ext4"}));
|
||||
}
|
||||
|
||||
{
|
||||
std::stringstream file(inputFile);
|
||||
auto res = StorageTk::findLongestMountedPrefix("/test/" FULL_SET_RAW, file);
|
||||
ASSERT_TRUE(res.first);
|
||||
ASSERT_EQ(res.second, (Mount{"/dev/sda1", "/test/" FULL_SET_RAW, "ext4"}));
|
||||
}
|
||||
|
||||
{
|
||||
std::stringstream file(inputFile);
|
||||
auto res = StorageTk::findLongestMountedPrefix("/test/" FULL_SET_RAW "/sub", file);
|
||||
ASSERT_TRUE(res.first);
|
||||
ASSERT_EQ(res.second, (Mount{"/dev/sda1", "/test/" FULL_SET_RAW, "ext4"}));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user