From ffc9bfb66d0b8d5da4e94ab1ac4580657b6352eb Mon Sep 17 00:00:00 2001 From: Sergei Zimmerman Date: Fri, 18 Jul 2025 21:20:13 +0300 Subject: [PATCH] lib{store,flake}-tests: Add test for spaces in URIs These cases do not seem to be covered by the test suite at all. --- src/libflake-tests/flakeref.cc | 7 +++++++ .../data/store-reference/local_3.txt | 1 + src/libstore-tests/store-reference.cc | 14 ++++++++++++++ 3 files changed, 22 insertions(+) create mode 100644 src/libstore-tests/data/store-reference/local_3.txt diff --git a/src/libflake-tests/flakeref.cc b/src/libflake-tests/flakeref.cc index eafe74a2d..b8f1ef7c9 100644 --- a/src/libflake-tests/flakeref.cc +++ b/src/libflake-tests/flakeref.cc @@ -48,6 +48,13 @@ TEST(parseFlakeRef, path) ASSERT_EQ(flakeref.to_string(), "path:/foo/bar?revCount=123"); ASSERT_EQ(fragment, "bla"); } + + { + auto s = "/foo bar/baz?dir=bla space"; + auto flakeref = parseFlakeRef(fetchSettings, s); + ASSERT_EQ(flakeref.to_string(), "path:/foo%20bar/baz?dir=bla%20space"); + ASSERT_EQ(flakeref.toAttrs().at("dir"), fetchers::Attr("bla space")); + } } TEST(to_string, doesntReencodeUrl) diff --git a/src/libstore-tests/data/store-reference/local_3.txt b/src/libstore-tests/data/store-reference/local_3.txt new file mode 100644 index 000000000..2a67a3426 --- /dev/null +++ b/src/libstore-tests/data/store-reference/local_3.txt @@ -0,0 +1 @@ +local://?root=/foo bar/baz \ No newline at end of file diff --git a/src/libstore-tests/store-reference.cc b/src/libstore-tests/store-reference.cc index f8c3587d2..01b75f3d2 100644 --- a/src/libstore-tests/store-reference.cc +++ b/src/libstore-tests/store-reference.cc @@ -85,10 +85,24 @@ static StoreReference localExample_2{ }, }; +static StoreReference localExample_3{ + .variant = + StoreReference::Specified{ + .scheme = "local", + }, + .params = + { + {"root", "/foo bar/baz"}, + }, +}; + URI_TEST(local_1, localExample_1) URI_TEST(local_2, localExample_2) +/* Test path with spaces */ +URI_TEST(local_3, localExample_3) + URI_TEST_READ(local_shorthand_1, localExample_1) URI_TEST_READ(local_shorthand_2, localExample_2)