# file : tests/test/script/runner/cleanup.test # copyright : Copyright (c) 2014-2016 Code Synthesis Ltd # license : MIT; see accompanying LICENSE file +mkdir build &build/ # @@ Should not be necessary once builtin. +cat <>>build/boostrap.build project = test amalgamation = using test EOI b = $build.driver -q --no-column --buildfile - <"./: test{testscript}" \ &?test/*** test c = cat >>>testscript # 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 : dir-always : $c <"$* -d a &a/"; $b : dir-maybe : $c <"$* &?a/"; $b : 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 test/1/a does not exist EOE : file-out-wd : Test cleanup of file out of working directory : $c <"$* &../a"; $b 2>>EOE != 0 testscript:1: error: registered for cleanup file test/a is out of working directory test/1/ EOE : not-file : Test cleanup of directory as a file : $c <"$* -d a &a"; $b 2>>EOE != 0 error: unable to remove file test/1/a: Is a directory EOE : dir-not-exists : Test cleanup of non-existing directory : $c <"$* &a/"; $b 2>>EOE != 0 testscript:1: error: registered for cleanup directory test/1/a/ does not exist EOE : dir-out-wd : Test cleanup of directory out of working directory : $c <"$* &../a/"; $b 2>>EOE != 0 testscript:1: error: registered for cleanup directory test/a/ is out of working directory test/1/ EOE : dir-not-empty : Test cleanup of non-empty directory : $c <"$* -d a -f a/b &a/"; $b 2>>EOE != 0 testscript:1: error: registered for cleanup directory test/1/a/ is not empty EOE : not-dir : Test cleanup of file as a directory : $c <"$* -f a &a/"; $b 2>>EOE != 0 error: unable to remove directory test/1/a/: Not a directory EOE : wildcard-not-exists : Test cleanup of wildcard not matching any directory : $c <"$* &a/***"; $b 2>>EOE != 0 testscript:1: error: registered for cleanup wildcard test/1/a/*** doesn't match a directory EOE : wildcard-out-wd : Test cleanup of wildcard out of working directory : $c <"$* &../a/***"; $b 2>>EOE != 0 testscript:1: error: registered for cleanup wildcard test/a/*** is out of working directory test/1/ EOE : wildcard-not-dir : Test cleanup of file as a wildcard : $c <"$* -f a &a/***"; $b 2>>EOE != 0 error: unable to remove directory test/1/a/: Not a directory EOE : implicit-overwrite : Test implicit cleanup being overwritten with an explicit one : $c <"$* -o foo >>>a &!a"; $b 2>>EOE != 0 testscript:1: error: registered for cleanup directory test/1/ is not empty EOE : explicit-overwrite : Test explicit cleanup not being overwritten with an implicit one : $c <>>a EOO $b 2>>EOE != 0 testscript:2: error: registered for cleanup directory test/1/ is not empty EOE