diff --git a/collects/tests/file/gzip.ss b/collects/tests/file/gzip.ss index 6e7afabf0f..8904eeceb6 100644 --- a/collects/tests/file/gzip.ss +++ b/collects/tests/file/gzip.ss @@ -35,3 +35,105 @@ (provide tests) (define (tests) (test do (run-tests))) + + +#| + +;; ELI: These are the old tests; I think that the only thing that +;; should be added from this to the above is trying the file-related +;; functionality (check that the filename is kept etc). + +(require mzlib/deflate + mzlib/inflate) + +(for-each (lambda (f) + (when (file-exists? f) + (printf "trying ~a~n" f) + (let ([str + (call-with-input-file f + (lambda (p) + (let-values ([(in out) (make-pipe 4096)] + [(out2) (open-output-bytes)]) + (thread + (lambda () + (gzip-through-ports p out "x" 0) + (close-output-port out))) + (thread-wait + (thread + (lambda () + (gunzip-through-ports in out2) + (close-output-port out2)))) + (get-output-bytes out2))))]) + (let ([orig-str (call-with-input-file f + (lambda (p) + (read-bytes (file-size f) p)))]) + (unless (bytes=? str orig-str) + (printf "not the same for ~a" f)))))) + (directory-list)) + + +#| + +;; Uses (unix) `gzip' program from your path. +;; Run this in a directory with lots of files to use as tests + +(require mzlib/deflate + mzlib/process) + +(define (check-file/fastest p in) + (let ([s1 (make-string 5000)] + [s2 (make-string 5000)]) + (let loop ([leftover 0][startpos 0][pos 0]) + (let* ([n1 (if (zero? leftover) + (read-string-avail! s1 p) + leftover)] + [n2 (read-string-avail! s2 in 0 (if (eof-object? n1) + 1 + n1))]) + (unless (if (or (eof-object? n1) + (eof-object? n2)) + (and (eof-object? n1) + (eof-object? n2)) + (if (= n2 n1 5000) + (string=? s1 s2) + (string=? (substring s1 startpos (+ startpos n2)) + (substring s2 0 n2)))) + (error 'check "failed at ~a (~a@~a ~a)" pos n1 startpos n2)) + (unless (eof-object? n1) + (loop (- n1 n2) + (if (= n1 n2) + 0 + (+ startpos n2)) + (+ pos n2))))))) + +(define gzip (find-executable-path "gzip" #f)) +(unless gzip + (error "cannot find gzip")) + +(for-each + (lambda (f) + (when (file-exists? f) + (printf "trying ~a~n" f) + (let-values ([(zo zi zn ze zf) + (apply values (process* gzip "-c" f))] + [(mi mo) (make-pipe 4096)]) + (close-output-port zi) + (close-input-port ze) + (thread + (lambda () + (let ([p (open-input-file f)] + [gz (lambda (p mo) + (gzip-through-ports p mo + (let-values ([(base name dir?) (split-path f)]) + name) + (file-or-directory-modify-seconds f)))]) + (gz p mo) + (close-output-port mo)))) + ;; Compare output + (check-file/fastest mi zo) + (close-input-port zo)))) + (directory-list)) + +|# + +|# diff --git a/collects/tests/mzscheme/gzip.ss b/collects/tests/mzscheme/gzip.ss deleted file mode 100644 index e40ea2a22e..0000000000 --- a/collects/tests/mzscheme/gzip.ss +++ /dev/null @@ -1,93 +0,0 @@ - -(require mzlib/deflate - mzlib/inflate) - -(for-each (lambda (f) - (when (file-exists? f) - (printf "trying ~a~n" f) - (let ([str - (call-with-input-file f - (lambda (p) - (let-values ([(in out) (make-pipe 4096)] - [(out2) (open-output-bytes)]) - (thread - (lambda () - (gzip-through-ports p out "x" 0) - (close-output-port out))) - (thread-wait - (thread - (lambda () - (gunzip-through-ports in out2) - (close-output-port out2)))) - (get-output-bytes out2))))]) - (let ([orig-str (call-with-input-file f - (lambda (p) - (read-bytes (file-size f) p)))]) - (unless (bytes=? str orig-str) - (printf "not the same for ~a" f)))))) - (directory-list)) - - -#| - -;; Uses (unix) `gzip' program from your path. -;; Run this in a directory with lots of files to use as tests - -(require mzlib/deflate - mzlib/process) - -(define (check-file/fastest p in) - (let ([s1 (make-string 5000)] - [s2 (make-string 5000)]) - (let loop ([leftover 0][startpos 0][pos 0]) - (let* ([n1 (if (zero? leftover) - (read-string-avail! s1 p) - leftover)] - [n2 (read-string-avail! s2 in 0 (if (eof-object? n1) - 1 - n1))]) - (unless (if (or (eof-object? n1) - (eof-object? n2)) - (and (eof-object? n1) - (eof-object? n2)) - (if (= n2 n1 5000) - (string=? s1 s2) - (string=? (substring s1 startpos (+ startpos n2)) - (substring s2 0 n2)))) - (error 'check "failed at ~a (~a@~a ~a)" pos n1 startpos n2)) - (unless (eof-object? n1) - (loop (- n1 n2) - (if (= n1 n2) - 0 - (+ startpos n2)) - (+ pos n2))))))) - -(define gzip (find-executable-path "gzip" #f)) -(unless gzip - (error "cannot find gzip")) - -(for-each - (lambda (f) - (when (file-exists? f) - (printf "trying ~a~n" f) - (let-values ([(zo zi zn ze zf) - (apply values (process* gzip "-c" f))] - [(mi mo) (make-pipe 4096)]) - (close-output-port zi) - (close-input-port ze) - (thread - (lambda () - (let ([p (open-input-file f)] - [gz (lambda (p mo) - (gzip-through-ports p mo - (let-values ([(base name dir?) (split-path f)]) - name) - (file-or-directory-modify-seconds f)))]) - (gz p mo) - (close-output-port mo)))) - ;; Compare output - (check-file/fastest mi zo) - (close-input-port zo)))) - (directory-list)) - -|#