| 130 | } |
| 131 | |
| 132 | void TestGetFileInfo(const std::string& base_dir) { |
| 133 | std::vector<FileInfo> infos; |
| 134 | |
| 135 | ASSERT_OK(fs_->CreateDir(base_dir + "AB")); |
| 136 | ASSERT_OK(fs_->CreateDir(base_dir + "AB/CD")); |
| 137 | ASSERT_OK(fs_->CreateDir(base_dir + "AB/EF")); |
| 138 | ASSERT_OK(fs_->CreateDir(base_dir + "AB/EF/GH")); |
| 139 | ASSERT_OK(fs_->CreateDir(base_dir + "AB/EF/GH/IJ")); |
| 140 | CreateFile(fs_.get(), base_dir + "AB/data", "some data"); |
| 141 | |
| 142 | // With single path |
| 143 | FileInfo info; |
| 144 | ASSERT_OK_AND_ASSIGN(info, fs_->GetFileInfo(base_dir + "AB")); |
| 145 | AssertFileInfo(info, base_dir + "AB", FileType::Directory); |
| 146 | ASSERT_OK_AND_ASSIGN(info, fs_->GetFileInfo(base_dir + "AB/data")); |
| 147 | AssertFileInfo(info, base_dir + "AB/data", FileType::File, 9); |
| 148 | |
| 149 | // With selector |
| 150 | FileSelector selector; |
| 151 | selector.base_dir = base_dir + "AB"; |
| 152 | selector.recursive = false; |
| 153 | |
| 154 | ASSERT_OK_AND_ASSIGN(infos, fs_->GetFileInfo(selector)); |
| 155 | ASSERT_EQ(infos.size(), 3); |
| 156 | AssertFileInfo(infos[0], base_dir + "AB/CD", FileType::Directory); |
| 157 | AssertFileInfo(infos[1], base_dir + "AB/EF", FileType::Directory); |
| 158 | AssertFileInfo(infos[2], base_dir + "AB/data", FileType::File); |
| 159 | |
| 160 | selector.recursive = true; |
| 161 | ASSERT_OK_AND_ASSIGN(infos, fs_->GetFileInfo(selector)); |
| 162 | ASSERT_EQ(infos.size(), 5); |
| 163 | AssertFileInfo(infos[0], base_dir + "AB/CD", FileType::Directory); |
| 164 | AssertFileInfo(infos[1], base_dir + "AB/EF", FileType::Directory); |
| 165 | AssertFileInfo(infos[2], base_dir + "AB/EF/GH", FileType::Directory); |
| 166 | AssertFileInfo(infos[3], base_dir + "AB/EF/GH/IJ", FileType::Directory); |
| 167 | AssertFileInfo(infos[4], base_dir + "AB/data", FileType::File, 9); |
| 168 | |
| 169 | selector.max_recursion = 0; |
| 170 | ASSERT_OK_AND_ASSIGN(infos, fs_->GetFileInfo(selector)); |
| 171 | ASSERT_EQ(infos.size(), 3); |
| 172 | AssertFileInfo(infos[0], base_dir + "AB/CD", FileType::Directory); |
| 173 | AssertFileInfo(infos[1], base_dir + "AB/EF", FileType::Directory); |
| 174 | AssertFileInfo(infos[2], base_dir + "AB/data", FileType::File); |
| 175 | |
| 176 | selector.max_recursion = 1; |
| 177 | ASSERT_OK_AND_ASSIGN(infos, fs_->GetFileInfo(selector)); |
| 178 | ASSERT_EQ(infos.size(), 4); |
| 179 | AssertFileInfo(infos[0], base_dir + "AB/CD", FileType::Directory); |
| 180 | AssertFileInfo(infos[1], base_dir + "AB/EF", FileType::Directory); |
| 181 | AssertFileInfo(infos[2], base_dir + "AB/EF/GH", FileType::Directory); |
| 182 | AssertFileInfo(infos[3], base_dir + "AB/data", FileType::File); |
| 183 | |
| 184 | selector.base_dir = base_dir + "XYZ"; |
| 185 | selector.allow_not_found = true; |
| 186 | ASSERT_OK_AND_ASSIGN(infos, fs_->GetFileInfo(selector)); |
| 187 | ASSERT_EQ(infos.size(), 0); |
| 188 | |
| 189 | selector.allow_not_found = false; |
no test coverage detected