aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src
diff options
context:
space:
mode:
authorNicole Mazzuca <mazzucan@outlook.com>2019-07-17 18:58:23 -0700
committerNicole Mazzuca <mazzucan@outlook.com>2019-07-17 18:58:23 -0700
commitf599f19bad8fd97b60f41063537be2e4ecef3ca7 (patch)
tree1f6e1ae675f0cfe19592c2bc83b1310d4d036c0f /toolsrc/src
parent65d34c5e55ef30a6572dfb3b79d212196fbadc0d (diff)
downloadvcpkg-f599f19bad8fd97b60f41063537be2e4ecef3ca7.tar.gz
vcpkg-f599f19bad8fd97b60f41063537be2e4ecef3ca7.zip
tests.files.cpp:create_directory_tree -- change magic numbers to names
Diffstat (limited to 'toolsrc/src')
-rw-r--r--toolsrc/src/tests.files.cpp79
1 files changed, 43 insertions, 36 deletions
diff --git a/toolsrc/src/tests.files.cpp b/toolsrc/src/tests.files.cpp
index 56b0ceac6..e60662fd9 100644
--- a/toolsrc/src/tests.files.cpp
+++ b/toolsrc/src/tests.files.cpp
@@ -93,45 +93,31 @@ namespace UnitTest1
std::random_device rd;
constexpr std::uint64_t max_depth = 5;
constexpr std::uint64_t width = 5;
- const auto type = depth < max_depth ? uid{0, 9}(urbg) : uid{7, 9}(urbg);
- // 0 <= type < 7 : directory
- // 7 = type : regular
- // 8 = type : regular symlink (regular file if !ALLOW_SYMLINKS)
- // 9 = type : directory symlink (^^)
-
- std::error_code ec;
- if (type >= 7)
- {
- // I don't want to move urbg forward conditionally
- if (type == 7 || !ALLOW_SYMLINKS)
- {
- // regular file
- fs.write_contents(base, "", ec);
- }
- else if (type == 8)
- {
- // regular symlink
- fs.write_contents(base, "", ec);
- Assert::IsFalse(bool(ec));
- const std::filesystem::path basep = base.native();
- auto basep_link = basep;
- basep_link.replace_filename(basep.filename().native() + L"-link");
- std::filesystem::create_symlink(basep, basep_link, ec);
- }
- else
- {
- // directory symlink
- std::filesystem::path basep = base.native();
- std::filesystem::create_directory_symlink(basep / "..", basep, ec);
- }
-
- Assert::IsFalse(bool(ec));
+ // we want ~70% of our "files" to be directories, and then a third
+ // each of the remaining ~30% to be regular files, directory symlinks,
+ // and regular symlinks
+ constexpr std::uint64_t directory_min_tag = 0;
+ constexpr std::uint64_t directory_max_tag = 6;
+ constexpr std::uint64_t regular_file_tag = 7;
+ constexpr std::uint64_t regular_symlink_tag = 8;
+ constexpr std::uint64_t directory_symlink_tag = 9;
+
+ // if we're at the max depth, we only want to build non-directories
+ std::uint64_t file_type;
+ if (depth < max_depth) {
+ file_type = uid{directory_min_tag, regular_symlink_tag}(urbg);
+ } else {
+ file_type = uid{regular_file_tag, regular_symlink_tag}(urbg);
+ }
+ if (!ALLOW_SYMLINKS && file_type > regular_file_tag) {
+ file_type = regular_file_tag;
}
- else
+
+ std::error_code ec;
+ if (type <= directory_max_tag)
{
- // directory
fs.create_directory(base, ec);
Assert::IsFalse(bool(ec));
@@ -139,9 +125,30 @@ namespace UnitTest1
{
create_directory_tree(urbg, fs, depth + 1, base / get_random_filename(urbg));
}
-
+ }
+ else if (type == regular_file_tag)
+ {
+ // regular file
+ fs.write_contents(base, "", ec);
+ }
+ else if (type == regular_symlink_tag)
+ {
+ // regular symlink
+ fs.write_contents(base, "", ec);
+ Assert::IsFalse(bool(ec));
+ const std::filesystem::path basep = base.native();
+ auto basep_link = basep;
+ basep_link.replace_filename(basep.filename().native() + L"-link");
+ std::filesystem::create_symlink(basep, basep_link, ec);
+ }
+ else // type == directory_symlink_tag
+ {
+ // directory symlink
+ std::filesystem::path basep = base.native();
+ std::filesystem::create_directory_symlink(basep / "..", basep, ec);
}
+ Assert::IsFalse(bool(ec));
}
};
}