>From f249e21a051db63565f3332c82deea476e5f1543 Mon Sep 17 00:00:00 2001 From: Mario Domenech Goulart Date: Tue, 2 Jun 2015 22:07:27 -0300 Subject: [PATCH 1/2] Add test suite for find-files --- distribution/manifest | 1 + tests/runtests.bat | 4 ++ tests/runtests.sh | 3 + tests/test-find-files.scm | 160 ++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 168 insertions(+) create mode 100644 tests/test-find-files.scm diff --git a/distribution/manifest b/distribution/manifest index 1285858..4ef3d1d 100644 --- a/distribution/manifest +++ b/distribution/manifest @@ -140,6 +140,7 @@ tests/module-tests.scm tests/module-tests-2.scm tests/test-finalizers.scm tests/test-finalizers-2.scm +tests/test-find-files.scm tests/module-tests-compiled.scm tests/scrutiny-tests.scm tests/scrutiny-tests-strict.scm diff --git a/tests/runtests.bat b/tests/runtests.bat index 942e234..b6ef378 100644 --- a/tests/runtests.bat +++ b/tests/runtests.bat @@ -418,6 +418,10 @@ echo 0 >tmpdir\.dotfile %interpret% -R posix -e "(delete-directory \"tmpdir\" #t)" if errorlevel 1 exit /b 1 +echo ======================================== find-files tests ... +%interpret% -bnq test-find-files.scm +if errorlevel 1 exit /b 1 + echo ======================================== regular expression tests ... %interpret% -bnq test-irregex.scm if errorlevel 1 exit /b 1 diff --git a/tests/runtests.sh b/tests/runtests.sh index ba4449e..7e078ff 100755 --- a/tests/runtests.sh +++ b/tests/runtests.sh @@ -344,6 +344,9 @@ rm -fr tmpdir mkdir tmpdir touch tmpdir/.dotfile +echo "======================================== find-files tests ..." +$interpret -bnq test-find-files.scm + if test -z "$MSYSTEM"; then ln -s /usr tmpdir/symlink fi diff --git a/tests/test-find-files.scm b/tests/test-find-files.scm new file mode 100644 index 0000000..1053768 --- /dev/null +++ b/tests/test-find-files.scm @@ -0,0 +1,160 @@ +(use posix) +(include "test.scm") + +(handle-exceptions exn + 'ignore + (delete-directory "find-files-test-dir" #t)) + +(for-each (lambda (d) + (create-directory d #t)) + '("find-files-test-dir/foo/bar/baz/.quux" + "find-files-test-dir/dir-link-target" + "find-files-test-dir/foo/.x")) + +(for-each (lambda (f) + (with-output-to-file f (cut display ""))) + '("find-files-test-dir/file1" + "find-files-test-dir/file2" + "find-files-test-dir/dir-link-target/foo" + "find-files-test-dir/dir-link-target/bar")) + +(change-directory "find-files-test-dir") + +(create-symbolic-link "dir-link-target" "dir-link-name") + +(test-begin "find-files") + +(test-equal "no keyword args" + (find-files ".") + '("./foo/bar/baz" + "./foo/bar" + "./foo" + "./dir-link-target/foo" + "./dir-link-target/bar" + "./dir-link-target" + "./file1" + "./dir-link-name" + "./file2")) + +(test-equal "dotfiles: #t" + (find-files "." dotfiles: #t) + '("./foo/bar/baz/.quux" + "./foo/bar/baz" + "./foo/bar" + "./foo/.x" + "./foo" + "./dir-link-target/foo" + "./dir-link-target/bar" + "./dir-link-target" + "./file1" + "./dir-link-name" + "./file2")) + +(test-equal "follow-symlinks: #t" + (find-files "." follow-symlinks: #t) + '("./foo/bar/baz" + "./foo/bar" + "./foo" + "./dir-link-target/foo" + "./dir-link-target/bar" + "./dir-link-target" + "./file1" + "./dir-link-name/foo" + "./dir-link-name/bar" + "./dir-link-name" + "./file2")) + +(test-equal "limit: 1" + (find-files "." limit: 1) + '("./foo/bar" + "./foo" + "./dir-link-target/foo" + "./dir-link-target/bar" + "./dir-link-target" + "./file1" + "./dir-link-name" + "./file2")) + +(test-equal "limit: 1 follow-symlinks: #t" + (find-files "." limit: 1 follow-symlinks: #t) + '("./foo/bar" + "./foo" + "./dir-link-target/foo" + "./dir-link-target/bar" + "./dir-link-target" + "./file1" + "./dir-link-name/foo" + "./dir-link-name/bar" + "./dir-link-name" + "./file2")) + +(test-equal "limit: 2" + (find-files "." limit: 2) + '("./foo/bar/baz" + "./foo/bar" + "./foo" + "./dir-link-target/foo" + "./dir-link-target/bar" + "./dir-link-target" + "./file1" + "./dir-link-name" + "./file2")) + +(test-equal "limit: 2 follow-symlinks: #t" + (find-files "." limit: 2 follow-symlinks: #t) + '("./foo/bar/baz" + "./foo/bar" + "./foo" + "./dir-link-target/foo" + "./dir-link-target/bar" + "./dir-link-target" + "./file1" + "./dir-link-name/foo" + "./dir-link-name/bar" + "./dir-link-name" + "./file2")) + +(test-equal "test: (lambda (f) (directory? f))" + (find-files "." test: (lambda (f) (directory? f))) + '("./foo/bar/baz" + "./foo/bar" + "./foo" + "./dir-link-target" + "./dir-link-name")) + +(test-equal "test: (lambda (f) (directory? f)) action: (lambda (f p) (cons (string-append \"--\" f) p))" + (find-files "." + test: (lambda (f) (directory? f)) + action: (lambda (f p) (cons (string-append "--" f) p))) + '("--./foo/bar/baz" + "--./foo/bar" + "--./foo" + "--./dir-link-target" + "--./dir-link-name")) + +(test-equal "dotfiles: #t test: (lambda (f) (directory? f)) follow-symlinks: #t" + (find-files "." dotfiles: #t test: (lambda (f) (directory? f)) follow-symlinks: #t) + '("./foo/bar/baz/.quux" + "./foo/bar/baz" + "./foo/bar" + "./foo/.x" + "./foo" + "./dir-link-target" + "./dir-link-name")) + +(test-equal "dotfiles: #t test: (lambda (f) (directory? f)) follow-symlinks: #t limit: 1" + (find-files "." + dotfiles: #t + test: (lambda (f) (directory? f)) + follow-symlinks: #t + limit: 1) + '("./foo/bar" + "./foo/.x" + "./foo" + "./dir-link-target" + "./dir-link-name")) + +(test-end "find-files") + +(change-directory "..") +(delete-directory "find-files-test-dir" #t) -- 2.1.4