From 91e02dde5fefbba87dc4736df40cfaeec2c088c1 Mon Sep 17 00:00:00 2001 From: Juri Linkov Date: Mon, 20 May 2024 09:22:10 +0300 Subject: [PATCH] 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. --- test/data/decompress/tzg.tar.gz | Bin 0 -> 255 bytes test/data/decompress/ztg.zip | Bin 0 -> 316 bytes test/lisp/arc-mode-tests.el | 16 ++++++++++++++++ test/lisp/tar-mode-tests.el | 14 ++++++++++++++ 4 files changed, 30 insertions(+) create mode 100644 test/data/decompress/tzg.tar.gz create mode 100644 test/data/decompress/ztg.zip diff --git a/test/data/decompress/tzg.tar.gz b/test/data/decompress/tzg.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..611f543688eecd203a167480d57f7384a6afc3bd GIT binary patch literal 255 zcmb2|=3oE==C>C%dNDf+G(5EYt~5(z8XM2Ec?xfio}D|lHI`|T(oQYSHGK&SU78=R zVOd+ld*88I`=jETmMP!N-raMY&=BRS^ymI2V{Yp+IL;~?M)BA{p<<SieVMN$Xbzg>w>gT BaVh`+ literal 0 HcmV?d00001 diff --git a/test/data/decompress/ztg.zip b/test/data/decompress/ztg.zip new file mode 100644 index 0000000000000000000000000000000000000000..5f4aea4c8dc65373553dadf053f35c9cf111bdb7 GIT binary patch literal 316 zcmWIWW@Zs#U|`^2$e;8qV9J9#x>Fb!7^X2WFmN)+FqEY0l_VDFrB{W9a56A6IWot$ z&-Y9#t>9*0WO>QVzyKyDzkinSec3dm#w>N{eJed*X#f7 z+&71jRcD|0p2T}`Y`ko23<2JZOmfV)JSM>a16vwFEF^ETLcEFQ#Q<+sHjqL_21W*d L1_p-fAPxfnY1wh6 literal 0 HcmV?d00001 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