summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuri Linkov <juri@linkov.net>2024-05-20 09:22:10 +0300
committerJuri Linkov <juri@linkov.net>2024-05-20 09:22:41 +0300
commit91e02dde5fefbba87dc4736df40cfaeec2c088c1 (patch)
treeca5d4c23dc3f335986f70325db06a3f5ad2f92fa
parent44d1687f1f6bc3d261aa2344a714b1f3397b3039 (diff)
New tests for nested archives (bug#70987)
* test/lisp/tar-mode-tests.el (tar-mode-test-tar-extract-zip-and-gz): * test/lisp/arc-mode-tests.el (arc-mode-test-zip-extract-tar-and-gz): New tests. * test/data/decompress/tzg.tar.gz: * test/data/decompress/ztg.zip: New data files to test decompressing of different combinations of nested tar and zip archives.
-rw-r--r--test/data/decompress/tzg.tar.gzbin0 -> 255 bytes
-rw-r--r--test/data/decompress/ztg.zipbin0 -> 316 bytes
-rw-r--r--test/lisp/arc-mode-tests.el16
-rw-r--r--test/lisp/tar-mode-tests.el14
4 files changed, 30 insertions, 0 deletions
diff --git a/test/data/decompress/tzg.tar.gz b/test/data/decompress/tzg.tar.gz
new file mode 100644
index 00000000000..611f543688e
--- /dev/null
+++ b/test/data/decompress/tzg.tar.gz
Binary files differ
diff --git a/test/data/decompress/ztg.zip b/test/data/decompress/ztg.zip
new file mode 100644
index 00000000000..5f4aea4c8dc
--- /dev/null
+++ b/test/data/decompress/ztg.zip
Binary files differ
diff --git a/test/lisp/arc-mode-tests.el b/test/lisp/arc-mode-tests.el
index acc416d6f78..5ebc56a84fc 100644
--- a/test/lisp/arc-mode-tests.el
+++ b/test/lisp/arc-mode-tests.el
@@ -46,6 +46,22 @@
(when (buffer-live-p zip-buffer) (kill-buffer zip-buffer))
(when (buffer-live-p gz-buffer) (kill-buffer gz-buffer)))))
+(declare-function tar-extract "tar-mode")
+(ert-deftest arc-mode-test-zip-extract-tar-and-gz ()
+ (skip-unless (and archive-zip-extract (executable-find (car archive-zip-extract))))
+ (skip-unless (executable-find "gzip"))
+ (require 'tar-mode)
+ (let* ((zip-file (expand-file-name "ztg.zip" arc-mode-tests-data-directory))
+ zip-buffer tar-buffer gz-buffer)
+ (unwind-protect
+ (with-current-buffer (setq zip-buffer (find-file-noselect zip-file))
+ (with-current-buffer (setq tar-buffer (archive-extract))
+ (setq gz-buffer (tar-extract))
+ (should (equal (char-after) ?\N{SNOWFLAKE}))))
+ (when (buffer-live-p zip-buffer) (kill-buffer zip-buffer))
+ (when (buffer-live-p tar-buffer) (kill-buffer tar-buffer))
+ (when (buffer-live-p gz-buffer) (kill-buffer gz-buffer)))))
+
(ert-deftest arc-mode-test-zip-ensure-ext ()
"Regression test for bug#61326."
(skip-unless (executable-find "zip"))
diff --git a/test/lisp/tar-mode-tests.el b/test/lisp/tar-mode-tests.el
index b40cd39d112..bafe575fdda 100644
--- a/test/lisp/tar-mode-tests.el
+++ b/test/lisp/tar-mode-tests.el
@@ -46,6 +46,20 @@
(when (buffer-live-p tar-buffer) (kill-buffer tar-buffer))
(when (buffer-live-p gz-buffer) (kill-buffer gz-buffer)))))
+(ert-deftest tar-mode-test-tar-extract-zip-and-gz ()
+ (skip-unless (executable-find "gzip"))
+ (require 'arc-mode)
+ (let* ((tar-file (expand-file-name "tzg.tar.gz" tar-mode-tests-data-directory))
+ tar-buffer zip-buffer gz-buffer)
+ (unwind-protect
+ (with-current-buffer (setq tar-buffer (find-file-noselect tar-file))
+ (with-current-buffer (setq zip-buffer (tar-extract))
+ (setq gz-buffer (archive-extract))
+ (should (equal (char-after) ?\N{SNOWFLAKE}))))
+ (when (buffer-live-p tar-buffer) (kill-buffer tar-buffer))
+ (when (buffer-live-p zip-buffer) (kill-buffer zip-buffer))
+ (when (buffer-live-p gz-buffer) (kill-buffer gz-buffer)))))
+
(provide 'tar-mode-tests)
;;; tar-mode-tests.el ends here