aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2021-04-22 10:20:40 +0200
committerEelco Dolstra <edolstra@gmail.com>2021-04-22 10:20:40 +0200
commita6eebcff36164735ff4523012d65c96ca497c905 (patch)
treeefe44b2785b5b3ae4fe0450349b17912bfc0785c
parent7c90552879da4d1df99b50c85e94201981e60123 (diff)
parent97dde3cdd983b2fef9e45dd0ca8d62716a62417d (diff)
Merge branch 's3-decompress' of https://github.com/lukegb/nix
-rw-r--r--src/libutil/compression.cc4
-rw-r--r--src/libutil/tests/compression.cc18
2 files changed, 21 insertions, 1 deletions
diff --git a/src/libutil/compression.cc b/src/libutil/compression.cc
index 08812ef57..c5dae42fa 100644
--- a/src/libutil/compression.cc
+++ b/src/libutil/compression.cc
@@ -186,7 +186,9 @@ struct BrotliDecompressionSink : ChunkedCompressionSink
ref<std::string> decompress(const std::string & method, const std::string & in)
{
- if (method == "br") {
+ if (method == "none" || method == "")
+ return make_ref<std::string>(in);
+ else if (method == "br") {
StringSink ssink;
auto sink = makeDecompressionSink(method, ssink);
(*sink)(in);
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";