(module zip mzscheme (require (planet "io.ss" ("dherman" "io.plt" 1))) (require (planet "file.ss" ("dherman" "io.plt" 1))) (require (planet "test.ss" ("schematics" "schemeunit.plt" 1))) (require (planet "util.ss" ("schematics" "schemeunit.plt" 1))) (require (planet "text-ui.ss" ("schematics" "schemeunit.plt" 1))) (require (lib "etc.ss")) (require "../../zip.ss") (require "../../unzip.ss") (require "util.ss") (define test:zip (make-test-suite "zip tests" (make-test-case "one file, no directories" (in-new-directory "sandbox" (let ([abe.txt/actual (string->path "abe-actual.txt")]) (with-gettysburg-address abe.txt (let ([expected (with-input-from-file abe.txt read-lines)]) (with-temporary-file abe.zip ("abe~a.zip" #f (current-directory)) (with-output-to-file abe.zip (lambda () (zip (list (path->relative-path abe.txt)))) 'replace) (with-input-from-file abe.zip (lambda () (unzip (current-input-port) (lambda (entry-name) (open-output-file abe.txt/actual)) #t))) (assert-true (gettysburg-address? abe.txt/actual)))))))) ;; TODO: test multiple files, no directories (make-test-case "multiple files, no directories" (parameterize ([keep-new-directories? #t]) (in-new-directory "sandbox" (in-new-directory "expected" (build-dir-tree ex:multiple-files/no-directories)) ;(fprintf (current-error-port) "~v~n" (all-files (build-path "expected"))) (with-output-to-file "actual.zip" (lambda () (zip (all-files (build-path "expected"))))) (in-new-directory "actual" ()) (assert-true #f) ))) ;; TODO: test directories, no files ;; TODO: test mixed files and subdirectories ;; TODO: test on a piped output stream, where I can't seek )) (define zip-tests (make-test-suite "All zip.ss tests" test:zip )) (test/text-ui zip-tests) (provide zip-tests))