From: list at eworm.de (Christian Hesse)
Subject: [PATCH 1/2] ui-snapshot: add support for zstd compression
Date: Wed, 26 Feb 2020 09:21:47 +0100 [thread overview]
Message-ID: <20200226082148.42470-1-list@eworm.de> (raw)
From: Christian Hesse <mail at eworm.de>
This patch adds support for zstd [0] compressed snapshots (*.tar.zst).
[0] https://www.zstd.net/
Signed-off-by: Christian Hesse <mail at eworm.de>
---
cgitrc.5.txt | 5 +++--
tests/setup.sh | 2 +-
tests/t0107-snapshot.sh | 42 +++++++++++++++++++++++++++++++++++++++++
ui-snapshot.c | 7 +++++++
4 files changed, 53 insertions(+), 3 deletions(-)
diff --git a/cgitrc.5.txt b/cgitrc.5.txt
index 4ad3e64..b0ec698 100644
--- a/cgitrc.5.txt
+++ b/cgitrc.5.txt
@@ -407,8 +407,9 @@ side-by-side-diffs::
snapshots::
Text which specifies the default set of snapshot formats that cgit
generates links for. The value is a space-separated list of zero or
- more of the values "tar", "tar.gz", "tar.bz2", "tar.xz", "tar.lz" and
- "zip". The special value "all" enables all snapshot formats.
+ more of the values "tar", "tar.gz", "tar.bz2", "tar.lz", "tar.xz",
+ "tar.zst" and "zip". The special value "all" enables all snapshot
+ formats.
Default value: none.
source-filter::
diff --git a/tests/setup.sh b/tests/setup.sh
index 69e47e6..e09f7c5 100755
--- a/tests/setup.sh
+++ b/tests/setup.sh
@@ -104,7 +104,7 @@ virtual-root=/
cache-root=$PWD/cache
cache-size=1021
-snapshots=tar.gz tar.bz tar.lz zip
+snapshots=tar.gz tar.bz tar.lz tar.zst zip
enable-log-filecount=1
enable-log-linecount=1
summary-log=5
diff --git a/tests/t0107-snapshot.sh b/tests/t0107-snapshot.sh
index a845ad9..95ad624 100755
--- a/tests/t0107-snapshot.sh
+++ b/tests/t0107-snapshot.sh
@@ -80,6 +80,48 @@ test_expect_success LZIP 'verify untarred file-5' '
test_line_count = 1 master/file-5
'
+if test -n "$(which zstd 2>/dev/null)"; then
+ test_set_prereq ZSTD
+else
+ say 'Skipping ZSTD validation tests: zstd not found'
+fi
+
+test_expect_success ZSTD 'get foo/snapshot/master.tar.zst' '
+ cgit_url "foo/snapshot/master.tar.zst" >tmp
+'
+
+test_expect_success ZSTD 'check html headers' '
+ head -n 1 tmp |
+ grep "Content-Type: application/x-zstd" &&
+
+ head -n 2 tmp |
+ grep "Content-Disposition: inline; filename=.master.tar.zst."
+'
+
+test_expect_success ZSTD 'strip off the header lines' '
+ strip_headers <tmp >master.tar.zst
+'
+
+test_expect_success ZSTD 'verify zstd format' '
+ zstd --test master.tar.zst &&
+ cp master.tar.zst /tmp/.
+'
+
+test_expect_success ZSTD 'untar' '
+ rm -rf master &&
+ tar --zstd -xf master.tar.zst
+'
+
+test_expect_success ZSTD 'count files' '
+ ls master/ >output &&
+ test_line_count = 5 output
+'
+
+test_expect_success ZSTD 'verify untarred file-5' '
+ grep "^5$" master/file-5 &&
+ test_line_count = 1 master/file-5
+'
+
test_expect_success 'get foo/snapshot/master.zip' '
cgit_url "foo/snapshot/master.zip" >tmp
'
diff --git a/ui-snapshot.c b/ui-snapshot.c
index 92cde42..db9f51f 100644
--- a/ui-snapshot.c
+++ b/ui-snapshot.c
@@ -91,6 +91,12 @@ static int write_tar_xz_archive(const char *hex, const char *prefix)
return write_compressed_tar_archive(hex, prefix, argv);
}
+static int write_tar_zstd_archive(const char *hex, const char *prefix)
+{
+ char *argv[] = { "zstd", NULL };
+ return write_compressed_tar_archive(hex, prefix, argv);
+}
+
const struct cgit_snapshot_format cgit_snapshot_formats[] = {
/* .tar must remain the 0 index */
{ ".tar", "application/x-tar", write_tar_archive },
@@ -98,6 +104,7 @@ const struct cgit_snapshot_format cgit_snapshot_formats[] = {
{ ".tar.bz2", "application/x-bzip2", write_tar_bzip2_archive },
{ ".tar.lz", "application/x-lzip", write_tar_lzip_archive },
{ ".tar.xz", "application/x-xz", write_tar_xz_archive },
+ { ".tar.zst", "application/x-zstd", write_tar_zstd_archive },
{ ".zip", "application/x-zip", write_zip_archive },
{ NULL }
};
next reply other threads:[~2020-02-26 8:21 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-26 8:21 list [this message]
2020-02-26 8:21 ` [PATCH 2/2] tests: add tests for xz compressed snapshots list
2020-02-26 9:19 ` Jason
2020-02-26 9:16 ` [PATCH 1/2] ui-snapshot: add support for zstd compression Jason
2020-02-26 10:18 ` list
2020-02-26 10:28 ` list
[not found] ` <alpine.DEB.2.22.394.2002261715550.3793@Zeta>
2020-02-26 22:38 ` list
2020-02-26 21:24 ` [PATCH v2 " list
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200226082148.42470-1-list@eworm.de \
--to=cgit@lists.zx2c4.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).