diff options
| -rw-r--r-- | cgitrc.5.txt | 4 | ||||
| -rwxr-xr-x | tests/setup.sh | 2 | ||||
| -rwxr-xr-x | tests/t0107-snapshot.sh | 42 | ||||
| -rw-r--r-- | ui-snapshot.c | 7 |
4 files changed, 52 insertions, 3 deletions
diff --git a/cgitrc.5.txt b/cgitrc.5.txt index ba77826..4ad3e64 100644 --- a/cgitrc.5.txt +++ b/cgitrc.5.txt | |||
| @@ -407,8 +407,8 @@ side-by-side-diffs:: | |||
| 407 | snapshots:: | 407 | snapshots:: |
| 408 | Text which specifies the default set of snapshot formats that cgit | 408 | Text which specifies the default set of snapshot formats that cgit |
| 409 | generates links for. The value is a space-separated list of zero or | 409 | generates links for. The value is a space-separated list of zero or |
| 410 | more of the values "tar", "tar.gz", "tar.bz2", "tar.xz" and "zip". | 410 | more of the values "tar", "tar.gz", "tar.bz2", "tar.xz", "tar.lz" and |
| 411 | The special value "all" enables all snapshot formats. | 411 | "zip". The special value "all" enables all snapshot formats. |
| 412 | Default value: none. | 412 | Default value: none. |
| 413 | 413 | ||
| 414 | source-filter:: | 414 | source-filter:: |
diff --git a/tests/setup.sh b/tests/setup.sh index 7590f04..69e47e6 100755 --- a/tests/setup.sh +++ b/tests/setup.sh | |||
| @@ -104,7 +104,7 @@ virtual-root=/ | |||
| 104 | cache-root=$PWD/cache | 104 | cache-root=$PWD/cache |
| 105 | 105 | ||
| 106 | cache-size=1021 | 106 | cache-size=1021 |
| 107 | snapshots=tar.gz tar.bz zip | 107 | snapshots=tar.gz tar.bz tar.lz zip |
| 108 | enable-log-filecount=1 | 108 | enable-log-filecount=1 |
| 109 | enable-log-linecount=1 | 109 | enable-log-linecount=1 |
| 110 | summary-log=5 | 110 | summary-log=5 |
diff --git a/tests/t0107-snapshot.sh b/tests/t0107-snapshot.sh index 6cf7aaa..a845ad9 100755 --- a/tests/t0107-snapshot.sh +++ b/tests/t0107-snapshot.sh | |||
| @@ -38,6 +38,48 @@ test_expect_success 'verify untarred file-5' ' | |||
| 38 | test_line_count = 1 master/file-5 | 38 | test_line_count = 1 master/file-5 |
| 39 | ' | 39 | ' |
| 40 | 40 | ||
| 41 | if test -n "$(which lzip 2>/dev/null)"; then | ||
| 42 | test_set_prereq LZIP | ||
| 43 | else | ||
| 44 | say 'Skipping LZIP validation tests: lzip not found' | ||
| 45 | fi | ||
| 46 | |||
| 47 | test_expect_success LZIP 'get foo/snapshot/master.tar.lz' ' | ||
| 48 | cgit_url "foo/snapshot/master.tar.lz" >tmp | ||
| 49 | ' | ||
| 50 | |||
| 51 | test_expect_success LZIP 'check html headers' ' | ||
| 52 | head -n 1 tmp | | ||
| 53 | grep "Content-Type: application/x-lzip" && | ||
| 54 | |||
| 55 | head -n 2 tmp | | ||
| 56 | grep "Content-Disposition: inline; filename=.master.tar.lz." | ||
| 57 | ' | ||
| 58 | |||
| 59 | test_expect_success LZIP 'strip off the header lines' ' | ||
| 60 | strip_headers <tmp >master.tar.lz | ||
| 61 | ' | ||
| 62 | |||
| 63 | test_expect_success LZIP 'verify lzip format' ' | ||
| 64 | lzip --test master.tar.lz && | ||
| 65 | cp master.tar.lz /tmp/. | ||
| 66 | ' | ||
| 67 | |||
| 68 | test_expect_success LZIP 'untar' ' | ||
| 69 | rm -rf master && | ||
| 70 | tar --lzip -xf master.tar.lz | ||
| 71 | ' | ||
| 72 | |||
| 73 | test_expect_success LZIP 'count files' ' | ||
| 74 | ls master/ >output && | ||
| 75 | test_line_count = 5 output | ||
| 76 | ' | ||
| 77 | |||
| 78 | test_expect_success LZIP 'verify untarred file-5' ' | ||
| 79 | grep "^5$" master/file-5 && | ||
| 80 | test_line_count = 1 master/file-5 | ||
| 81 | ' | ||
| 82 | |||
| 41 | test_expect_success 'get foo/snapshot/master.zip' ' | 83 | test_expect_success 'get foo/snapshot/master.zip' ' |
| 42 | cgit_url "foo/snapshot/master.zip" >tmp | 84 | cgit_url "foo/snapshot/master.zip" >tmp |
| 43 | ' | 85 | ' |
diff --git a/ui-snapshot.c b/ui-snapshot.c index 9461d51..92cde42 100644 --- a/ui-snapshot.c +++ b/ui-snapshot.c | |||
| @@ -79,6 +79,12 @@ static int write_tar_bzip2_archive(const char *hex, const char *prefix) | |||
| 79 | return write_compressed_tar_archive(hex, prefix, argv); | 79 | return write_compressed_tar_archive(hex, prefix, argv); |
| 80 | } | 80 | } |
| 81 | 81 | ||
| 82 | static int write_tar_lzip_archive(const char *hex, const char *prefix) | ||
| 83 | { | ||
| 84 | char *argv[] = { "lzip", NULL }; | ||
| 85 | return write_compressed_tar_archive(hex, prefix, argv); | ||
| 86 | } | ||
| 87 | |||
| 82 | static int write_tar_xz_archive(const char *hex, const char *prefix) | 88 | static int write_tar_xz_archive(const char *hex, const char *prefix) |
| 83 | { | 89 | { |
| 84 | char *argv[] = { "xz", NULL }; | 90 | char *argv[] = { "xz", NULL }; |
| @@ -90,6 +96,7 @@ const struct cgit_snapshot_format cgit_snapshot_formats[] = { | |||
| 90 | { ".tar", "application/x-tar", write_tar_archive }, | 96 | { ".tar", "application/x-tar", write_tar_archive }, |
| 91 | { ".tar.gz", "application/x-gzip", write_tar_gzip_archive }, | 97 | { ".tar.gz", "application/x-gzip", write_tar_gzip_archive }, |
| 92 | { ".tar.bz2", "application/x-bzip2", write_tar_bzip2_archive }, | 98 | { ".tar.bz2", "application/x-bzip2", write_tar_bzip2_archive }, |
| 99 | { ".tar.lz", "application/x-lzip", write_tar_lzip_archive }, | ||
| 93 | { ".tar.xz", "application/x-xz", write_tar_xz_archive }, | 100 | { ".tar.xz", "application/x-xz", write_tar_xz_archive }, |
| 94 | { ".zip", "application/x-zip", write_zip_archive }, | 101 | { ".zip", "application/x-zip", write_zip_archive }, |
| 95 | { NULL } | 102 | { NULL } |
