aboutsummaryrefslogtreecommitdiff
path: root/src/libutil/tests/compression.cc
diff options
context:
space:
mode:
authorLuke Granger-Brown <git@lukegb.com>2021-04-22 02:33:59 +0000
committerLuke Granger-Brown <git@lukegb.com>2021-04-22 02:33:59 +0000
commit97dde3cdd983b2fef9e45dd0ca8d62716a62417d (patch)
treee20c5813ba043d2199a3b46835f74d7f98f0bc49 /src/libutil/tests/compression.cc
parent8d651a1f68c018b8a10dd37da81e9d3612073656 (diff)
libutil: allow decompression with none/empty method
The S3 store relies on the ability to be able to decompress things with an empty method, because it just passes the value of the Content-Encoding directly to decompress. If the file is not compressed, then this will cause the compression routine to get confused. This caused NixOS/nixpkgs#120120.
Diffstat (limited to 'src/libutil/tests/compression.cc')
-rw-r--r--src/libutil/tests/compression.cc18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/libutil/tests/compression.cc b/src/libutil/tests/compression.cc
index 5b7a2c5b9..2efa3266b 100644
--- a/src/libutil/tests/compression.cc
+++ b/src/libutil/tests/compression.cc
@@ -17,6 +17,24 @@ namespace nix {
ASSERT_EQ(*o, "this-is-a-test");
}
+ TEST(decompress, decompressNoneCompressed) {
+ auto method = "none";
+ auto str = "slfja;sljfklsa;jfklsjfkl;sdjfkl;sadjfkl;sdjf;lsdfjsadlf";
+ ref<std::string> o = decompress(method, str);
+
+ ASSERT_EQ(*o, str);
+ }
+
+ TEST(decompress, decompressEmptyCompressed) {
+ // Empty-method decompression used e.g. by S3 store
+ // (Content-Encoding == "").
+ auto method = "";
+ auto str = "slfja;sljfklsa;jfklsjfkl;sdjfkl;sadjfkl;sdjf;lsdfjsadlf";
+ ref<std::string> o = decompress(method, str);
+
+ ASSERT_EQ(*o, str);
+ }
+
TEST(decompress, decompressXzCompressed) {
auto method = "xz";
auto str = "slfja;sljfklsa;jfklsjfkl;sdjfkl;sadjfkl;sdjf;lsdfjsadlf";