aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src/vcpkg-test/binaryconfigparser.cpp
diff options
context:
space:
mode:
authorRobert Schumacher <roschuma@microsoft.com>2020-04-29 10:16:40 -0700
committerGitHub <noreply@github.com>2020-04-29 10:16:40 -0700
commitce8b01a14bb6a61b4f0686674e4b51bd8ecfb83b (patch)
treea6c14567629529b9c18460d95698e8b1fc432e6f /toolsrc/src/vcpkg-test/binaryconfigparser.cpp
parentbe2f81f9121e0213cd86351c5f98ec8976faa47c (diff)
downloadvcpkg-ce8b01a14bb6a61b4f0686674e4b51bd8ecfb83b.tar.gz
vcpkg-ce8b01a14bb6a61b4f0686674e4b51bd8ecfb83b.zip
[vcpkg] Add support for VCPKG_BINARY_SOURCES and --x-binarysource=<> (#10476)
* [vcpkg] Add support for VCPKG_BINARY_SOURCES and --binarysource=<> * [vcpkg] Rename --binarysource to --x-binarysource to denote internal/experimental * [vcpkg] Address review comments & add tests for BinaryConfigParser * [vcpkg] Replace do {} while(1); with for(;;) Avoids conditional expresion is constant warnings * [vcpkg] Invert if/else * [vcpkg] Fix warning in export.prefab.cpp * [vcpkg] Resolve merge regressions
Diffstat (limited to 'toolsrc/src/vcpkg-test/binaryconfigparser.cpp')
-rw-r--r--toolsrc/src/vcpkg-test/binaryconfigparser.cpp183
1 files changed, 183 insertions, 0 deletions
diff --git a/toolsrc/src/vcpkg-test/binaryconfigparser.cpp b/toolsrc/src/vcpkg-test/binaryconfigparser.cpp
new file mode 100644
index 000000000..910d0836f
--- /dev/null
+++ b/toolsrc/src/vcpkg-test/binaryconfigparser.cpp
@@ -0,0 +1,183 @@
+#include <catch2/catch.hpp>
+#include <vcpkg/binarycaching.h>
+
+using namespace vcpkg;
+
+#if defined(_WIN32)
+#define ABSOLUTE_PATH "C:\\foo"
+#else
+#define ABSOLUTE_PATH "/foo"
+#endif
+
+TEST_CASE ("BinaryConfigParser empty", "[binaryconfigparser]")
+{
+ auto parsed = create_binary_provider_from_configs_pure("", {});
+ REQUIRE(parsed.has_value());
+}
+
+TEST_CASE ("BinaryConfigParser unacceptable provider", "[binaryconfigparser]")
+{
+ auto parsed = create_binary_provider_from_configs_pure("unacceptable", {});
+ REQUIRE(!parsed.has_value());
+}
+
+TEST_CASE ("BinaryConfigParser files provider", "[binaryconfigparser]")
+{
+ {
+ auto parsed = create_binary_provider_from_configs_pure("files", {});
+ REQUIRE(!parsed.has_value());
+ }
+ {
+ auto parsed = create_binary_provider_from_configs_pure("files,relative-path", {});
+ REQUIRE(!parsed.has_value());
+ }
+ {
+ auto parsed = create_binary_provider_from_configs_pure("files,C:foo", {});
+ REQUIRE(!parsed.has_value());
+ }
+ {
+ auto parsed = create_binary_provider_from_configs_pure("files," ABSOLUTE_PATH, {});
+ REQUIRE(parsed.has_value());
+ }
+ {
+ auto parsed = create_binary_provider_from_configs_pure("files," ABSOLUTE_PATH ",nonsense", {});
+ REQUIRE(!parsed.has_value());
+ }
+ {
+ auto parsed = create_binary_provider_from_configs_pure("files," ABSOLUTE_PATH ",upload", {});
+ REQUIRE(parsed.has_value());
+ }
+ {
+ auto parsed = create_binary_provider_from_configs_pure("files," ABSOLUTE_PATH ",upload,extra", {});
+ REQUIRE(!parsed.has_value());
+ }
+ {
+ auto parsed = create_binary_provider_from_configs_pure("files,,upload", {});
+ REQUIRE(!parsed.has_value());
+ }
+}
+
+TEST_CASE ("BinaryConfigParser default provider", "[binaryconfigparser]")
+{
+ {
+ auto parsed = create_binary_provider_from_configs_pure("default", {});
+ REQUIRE(parsed.has_value());
+ }
+ {
+ auto parsed = create_binary_provider_from_configs_pure("default,nonsense", {});
+ REQUIRE(!parsed.has_value());
+ }
+ {
+ auto parsed = create_binary_provider_from_configs_pure("default,upload", {});
+ REQUIRE(parsed.has_value());
+ }
+ {
+ auto parsed = create_binary_provider_from_configs_pure("default,upload,extra", {});
+ REQUIRE(!parsed.has_value());
+ }
+}
+
+TEST_CASE ("BinaryConfigParser clear provider", "[binaryconfigparser]")
+{
+ {
+ auto parsed = create_binary_provider_from_configs_pure("clear", {});
+ REQUIRE(parsed.has_value());
+ }
+ {
+ auto parsed = create_binary_provider_from_configs_pure("clear,upload", {});
+ REQUIRE(!parsed.has_value());
+ }
+}
+
+TEST_CASE ("BinaryConfigParser multiple providers", "[binaryconfigparser]")
+{
+ {
+ auto parsed = create_binary_provider_from_configs_pure("clear;default", {});
+ REQUIRE(parsed.has_value());
+ }
+ {
+ auto parsed = create_binary_provider_from_configs_pure("clear;default,upload", {});
+ REQUIRE(parsed.has_value());
+ }
+ {
+ auto parsed = create_binary_provider_from_configs_pure("clear;default,upload;clear;clear", {});
+ REQUIRE(parsed.has_value());
+ }
+ {
+ auto parsed = create_binary_provider_from_configs_pure("clear;files,relative;default", {});
+ REQUIRE(!parsed.has_value());
+ }
+ {
+ auto parsed = create_binary_provider_from_configs_pure(";;;clear;;;;", {});
+ REQUIRE(parsed.has_value());
+ }
+ {
+ auto parsed = create_binary_provider_from_configs_pure(";;;,;;;;", {});
+ REQUIRE(!parsed.has_value());
+ }
+}
+
+TEST_CASE ("BinaryConfigParser escaping", "[binaryconfigparser]")
+{
+ {
+ auto parsed = create_binary_provider_from_configs_pure(";;;;;;;`", {});
+ REQUIRE(!parsed.has_value());
+ }
+ {
+ auto parsed = create_binary_provider_from_configs_pure(";;;;;;;`defaul`t", {});
+ REQUIRE(parsed.has_value());
+ }
+ {
+ auto parsed = create_binary_provider_from_configs_pure("files," ABSOLUTE_PATH "`", {});
+ REQUIRE(!parsed.has_value());
+ }
+ {
+ auto parsed = create_binary_provider_from_configs_pure("files," ABSOLUTE_PATH "`,", {});
+ REQUIRE(parsed.has_value());
+ }
+ {
+ auto parsed = create_binary_provider_from_configs_pure("files," ABSOLUTE_PATH "``", {});
+ REQUIRE(parsed.has_value());
+ }
+ {
+ auto parsed = create_binary_provider_from_configs_pure("files," ABSOLUTE_PATH "```", {});
+ REQUIRE(!parsed.has_value());
+ }
+ {
+ auto parsed = create_binary_provider_from_configs_pure("files," ABSOLUTE_PATH "````", {});
+ REQUIRE(parsed.has_value());
+ }
+ {
+ auto parsed = create_binary_provider_from_configs_pure("files," ABSOLUTE_PATH ",", {});
+ REQUIRE(!parsed.has_value());
+ }
+}
+
+TEST_CASE ("BinaryConfigParser args", "[binaryconfigparser]")
+{
+ {
+ auto parsed =
+ create_binary_provider_from_configs_pure("files," ABSOLUTE_PATH, std::vector<std::string>{"clear"});
+ REQUIRE(parsed.has_value());
+ }
+ {
+ auto parsed =
+ create_binary_provider_from_configs_pure("files," ABSOLUTE_PATH, std::vector<std::string>{"clear;default"});
+ REQUIRE(parsed.has_value());
+ }
+ {
+ auto parsed = create_binary_provider_from_configs_pure("files," ABSOLUTE_PATH,
+ std::vector<std::string>{"clear;default,"});
+ REQUIRE(!parsed.has_value());
+ }
+ {
+ auto parsed = create_binary_provider_from_configs_pure("files," ABSOLUTE_PATH,
+ std::vector<std::string>{"clear", "clear;default,"});
+ REQUIRE(!parsed.has_value());
+ }
+ {
+ auto parsed = create_binary_provider_from_configs_pure("files," ABSOLUTE_PATH,
+ std::vector<std::string>{"clear", "clear"});
+ REQUIRE(parsed.has_value());
+ }
+}