# file : tests/test/script/runner/cleanup.test # copyright : Copyright (c) 2014-2016 Code Synthesis Ltd # license : MIT; see accompanying LICENSE file .include ../common.test b += --no-column td = [string] $path.canonicalize(test/) # Valid cleanups. # # @@ TODO: $c <"$* -f a &a" && $b # : file-always : $c <"$* -f a &a"; $b : file-maybe : $c <"$* &?a"; $b : file-never : $c <"$* &!a"; $b : file-implicit : : Test that a file created out of the testscript working directory is not : implicitly registered for cleanup. If it were, the test would fail due to : 'rm' failure. : $c <"touch ../../a"; $b; rm a : file-append : : Test that file append redirect doesn't not register cleanup. If it did, that : cleanup would fail as the file would be already deleted by 'rm'. : $c <<"EOI"; touch a &!a; $* -o foo >>>&a; rm a EOI $b : dir-always : $c <"$* -d a &a/"; $b : dir-maybe : $c <"$* &?a/"; $b : dir-implicit : : Test that a directory created out of the testscript working directory is not : implicitly registered for cleanup. If it were, the test would fail due to : 'rm' failure. : $c <"mkdir ../../a"; $b; rm -r a : wildcard-always : $c <"$* -d a/b -f a/b/c &a/***"; $b : wildcard-maybe : $c <"$* &?a/***"; $b : order : : Test that cleanup is performed in registration reversed order. : $c <"$* -d a/b &a/ &a/b/"; $b # Invalid cleanups. # : file-not-exists : : Test cleanup of non-existing file. : $c <"$* &a"; $b 2>>"EOE" != 0 testscript:1: error: registered for cleanup file $path.canonicalize(test/1/a) does not exist EOE : file-out-wd : : Test explicit cleanup of a file out of the testscript working directory. : $c <"$* &../../a"; $b 2>>"EOE" != 0 testscript:1: error: file cleanup $path.canonicalize(../../a) is out of working directory $td EOE : file-in-wd : : Test cleanup explicit registration of a file being outside the test working : directory but inside the script working directory. : $c <"$* &../a"; $b 2>>"EOE" != 0 testscript:1: error: registered for cleanup file $path.canonicalize(test/a) does not exist EOE : not-file : : Test cleanup of a directory as a file. : $c <"$* -d a &a"; $b 2>- != 0 # @@ REGEX : dir-not-exists : : Test cleanup of non-existing directory. : $c <"$* &a/"; $b 2>>"EOE" != 0 testscript:1: error: registered for cleanup directory ([string] $path.canonicalize(test/1/a/)) does not exist EOE : dir-out-wd : : Test cleanup of a directory out of the testscript working directory. : $c <"$* &../../a/"; $b 2>>"EOE" != 0 testscript:1: error: directory cleanup ([string] $path.canonicalize(../../a/)) is out of working directory $td EOE : dir-in-wd : : Test cleanup explicit registration of a directory being outside the test : working directory but inside the testscript working directory. : $c <"$* &../a/"; $b 2>>"EOE" != 0 testscript:1: error: registered for cleanup directory ([string] $path.canonicalize(test/a/)) does not exist EOE : dir-not-empty : : Test cleanup of a non-empty directory. : $c <"$* -d a -f a/b &a/"; $b 2>>"EOE" != 0 testscript:1: error: registered for cleanup directory ([string] $path.canonicalize(test/1/a/)) is not empty EOE : not-dir : : Test cleanup of a file as a directory. : $c <"$* -f a &a/"; $b 2>- != 0 # @@ REGEX : wildcard-not-exists : : Test cleanup of a wildcard not matching any directory. : $c <"$* &a/***"; $b 2>>"EOE" != 0 testscript:1: error: registered for cleanup wildcard $path.canonicalize(test/1/a/***) doesn't match a directory EOE : wildcard-out-wd : : Test cleanup of a wildcard out of the testscript working directory. : $c <"$* &../../a/***"; $b 2>>"EOE" != 0 testscript:1: error: wildcard cleanup $path.canonicalize(../../a/***) is out of working directory $td EOE : wildcard-in-wd : : Test cleanup registration of a wildcard matching the directory that being : outside the test working directory is inside the testscript working directory. : $c <"$* &../a/***"; $b 2>>"EOE" != 0 testscript:1: error: registered for cleanup wildcard $path.canonicalize(test/a/***) doesn't match a directory EOE : wildcard-not-dir : : Test cleanup of a file as a wildcard. : $c <"$* -f a &a/***"; $b 2>- != 0 # @@ REGEX : implicit-overwrite : : Test an implicit cleanup being overwritten with the explicit one, : $c <"$* -o foo >>>a &!a"; $b 2>>"EOE" != 0 testscript:1: error: registered for cleanup directory ([string] $path.canonicalize(test/1/)) is not empty EOE : explicit-overwrite : : Test an explicit cleanup not being overwritten with the implicit one. : $c <<"EOO"; $* &!a; $* -o foo >>>a EOO $b 2>>"EOE" != 0 testscript:2: error: registered for cleanup directory ([string] $path.canonicalize(test/1/)) is not empty EOE