~ chicken-core (chicken-5) /tests/test-find-files.scm
Trap1(import (chicken file)2 (chicken file posix)3 (chicken process-context)4 (chicken sort)5 (chicken string))67(include "test.scm")89(handle-exceptions exn10 'ignore11 (delete-directory "find-files-test-dir" #t))1213(define (file-list=? a b)14 (equal? (sort a string<?) (sort b string<?)))1516(for-each (lambda (d)17 (create-directory d #t))18 '("find-files-test-dir/foo/bar/baz/.quux"19 "find-files-test-dir/dir-link-target"20 "find-files-test-dir/foo/.x"))2122(for-each (lambda (f)23 (with-output-to-file f (cut display "")))24 '("find-files-test-dir/file1"25 "find-files-test-dir/file2"26 "find-files-test-dir/dir-link-target/foo"27 "find-files-test-dir/dir-link-target/bar"))2829(change-directory "find-files-test-dir")3031(cond-expand32 ((and windows (not cygwin)) ; Cannot handle symlinks33 (define (path lst)34 (map (cut string-translate <> "/" "\\") lst)) )35 (else36 (create-symbolic-link "dir-link-target" "dir-link-name")37 (define (path lst) lst)))3839(test-begin "find-files")4041(test-equal "no keyword args"42 (find-files ".")43 (path44 `("./foo/bar/baz"45 "./foo/bar"46 "./foo"47 "./dir-link-target/foo"48 "./dir-link-target/bar"49 "./dir-link-target"50 "./file1"51 ,@(cond-expand52 ((and windows (not cygwin)) '())53 (else '("./dir-link-name")))54 "./file2"))55 file-list=?)5657(test-equal "dotfiles: #t"58 (find-files "." dotfiles: #t)59 (path60 `("./foo/bar/baz/.quux"61 "./foo/bar/baz"62 "./foo/bar"63 "./foo/.x"64 "./foo"65 "./dir-link-target/foo"66 "./dir-link-target/bar"67 "./dir-link-target"68 "./file1"69 ,@(cond-expand70 ((and windows (not cygwin)) '())71 (else '("./dir-link-name")))72 "./file2"))73 file-list=?)7475(test-equal "follow-symlinks: #t"76 (find-files "." follow-symlinks: #t)77 (path78 `("./foo/bar/baz"79 "./foo/bar"80 "./foo"81 "./dir-link-target/foo"82 "./dir-link-target/bar"83 "./dir-link-target"84 "./file1"85 ,@(cond-expand86 ((and windows (not cygwin)) '())87 (else '("./dir-link-name/foo"88 "./dir-link-name/bar"89 "./dir-link-name")))90 "./file2"))91 file-list=?)9293(test-equal "limit: 1"94 (find-files "." limit: 1)95 (path96 `("./foo/bar"97 "./foo"98 "./dir-link-target/foo"99 "./dir-link-target/bar"100 "./dir-link-target"101 "./file1"102 ,@(cond-expand103 ((and windows (not cygwin)) '())104 (else '("./dir-link-name")))105 "./file2"))106 file-list=?)107108(test-equal "limit: 1 follow-symlinks: #t"109 (find-files "." limit: 1 follow-symlinks: #t)110 (path111 `("./foo/bar"112 "./foo"113 "./dir-link-target/foo"114 "./dir-link-target/bar"115 "./dir-link-target"116 "./file1"117 ,@(cond-expand118 ((and windows (not cygwin)) '())119 (else '("./dir-link-name/foo"120 "./dir-link-name/bar"121 "./dir-link-name")))122 "./file2"))123 file-list=?)124125(test-equal "limit: 2"126 (find-files "." limit: 2)127 (path128 `("./foo/bar/baz"129 "./foo/bar"130 "./foo"131 "./dir-link-target/foo"132 "./dir-link-target/bar"133 "./dir-link-target"134 "./file1"135 ,@(cond-expand136 ((and windows (not cygwin)) '())137 (else '("./dir-link-name")))138 "./file2"))139 file-list=?)140141(test-equal "limit: 2 follow-symlinks: #t"142 (find-files "." limit: 2 follow-symlinks: #t)143 (path144 `("./foo/bar/baz"145 "./foo/bar"146 "./foo"147 "./dir-link-target/foo"148 "./dir-link-target/bar"149 "./dir-link-target"150 "./file1"151 ,@(cond-expand152 ((and windows (not cygwin)) '())153 (else '("./dir-link-name/foo"154 "./dir-link-name/bar"155 "./dir-link-name")))156 "./file2"))157 file-list=?)158159(test-equal "test: (lambda (f) (directory? f))"160 (find-files "." test: (lambda (f) (directory? f)))161 (path162 `("./foo/bar/baz"163 "./foo/bar"164 "./foo"165 "./dir-link-target"166 ,@(cond-expand167 ((and windows (not cygwin)) '())168 (else '("./dir-link-name")))))169 file-list=?)170171(test-equal "test: (lambda (f) (directory? f)) action: (lambda (f p) (cons (string-append \"--\" f) p))"172 (find-files "."173 test: (lambda (f) (directory? f))174 action: (lambda (f p) (cons (string-append "--" f) p)))175 (path176 `("--./foo/bar/baz"177 "--./foo/bar"178 "--./foo"179 "--./dir-link-target"180 ,@(cond-expand181 ((and windows (not cygwin)) '())182 (else '("--./dir-link-name")))))183 file-list=?)184185(test-equal "dotfiles: #t test: (lambda (f) (directory? f)) follow-symlinks: #t"186 (find-files "." dotfiles: #t test: (lambda (f) (directory? f)) follow-symlinks: #t)187 (path188 `("./foo/bar/baz/.quux"189 "./foo/bar/baz"190 "./foo/bar"191 "./foo/.x"192 "./foo"193 "./dir-link-target"194 ,@(cond-expand195 ((and windows (not cygwin)) '())196 (else '("./dir-link-name")))))197 file-list=?)198199(test-equal "dotfiles: #t test: (lambda (f) (directory? f)) follow-symlinks: #t limit: 1"200 (find-files "."201 dotfiles: #t202 test: (lambda (f) (directory? f))203 follow-symlinks: #t204 limit: 1)205 (path206 `("./foo/bar"207 "./foo/.x"208 "./foo"209 "./dir-link-target"210 ,@(cond-expand211 ((and windows (not cygwin)) '())212 (else '("./dir-link-name")))))213 file-list=?)214215(test-end "find-files")216217(change-directory "..")218(delete-directory "find-files-test-dir" #t)219220(test-exit)