diff --git a/test/stamp-propagation/test-stamp-propagation.lisp b/test/stamp-propagation/test-stamp-propagation.lisp index 964af207652d823109c54f8cc565d6794ca5f76c..b07ca07c4b97978fc6bf3faebb2fde6208daf059 100644 --- a/test/stamp-propagation/test-stamp-propagation.lisp +++ b/test/stamp-propagation/test-stamp-propagation.lisp @@ -32,6 +32,12 @@ (eval-note :tsp) (defvar *tsp* (asdf::pathname-directory-pathname *load-pathname*)) +(defparameter *defsystems* '(#+(or allegro genera lispworks) :native + #+mk-defsystem :mk-defsystem + #+asdf :asdf)) +(defvar *default-defsystem* (first *defsystems*)) +(defvar asdf::*asdf-cache* nil) ;; if defparameter instead of defvar, disable any surrounding cache + (defun lisppath (filename) (asdf::subpathname *tsp* filename)) (defun faslpath (lisppath &optional (defsystem *default-defsystem*)) (funcall @@ -42,7 +48,6 @@ (pathname lisppath) (string (lisppath lisppath))))) -(defvar asdf::*asdf-cache* nil) ;; if defparameter instead of defvar, disable any surrounding cache (defun use-cache-p (defsystem) (and (eq defsystem :asdf) @@ -86,12 +91,6 @@ "file1.lisp" "file2.lisp")) -(defparameter *defsystems* '(#+(or allegro genera lispworks) :native - #+mk-defsystem :mk-defsystem - #+asdf :asdf)) - -(defvar *default-defsystem* (first *defsystems*)) - (defun reload (&optional (defsystem *default-defsystem*)) (format t "~&ASDF-CACHE ~S~%" asdf::*asdf-cache*) (setf *eval-notes* nil) @@ -145,16 +144,24 @@ (format t "~&Testing stamp propagation by defsystem ~S~%" defsystem) #+allegro (progn (DBG "removing any old fasls from another flavor of allegro") (clear-fasls defsystem)) + (when (use-cache-p defsystem) + (let ((tl1 (file-write-date (lisppath "file1.lisp")))) + (touch-file (lisppath "file1.lisp") :timestamp tl1 :offset -1000) + (touch-file (faslpath "file1.lisp") :timestamp tl1 :offset -10000) + (touch-file (lisppath "file2.lisp") :timestamp tl1 :offset -1000) + (touch-file (faslpath "file2.lisp") :timestamp tl1 :offset -10000))) (DBG "loading system") (reload defsystem) (cond ((use-cache-p defsystem) (DBG "marking all files old but first source file, and reloading") + (clrhash (asdf::component-operation-times (asdf:find-component :test-stamp-propagation "file1"))) + (clrhash (asdf::component-operation-times (asdf:find-component :test-stamp-propagation "file2"))) (let ((tf2 (file-write-date (faslpath "file2.lisp")))) (touch-file (lisppath "file1.lisp") :timestamp tf2 :offset 0) - (touch-file (faslpath "file1.lisp") :timestamp tf2 :offset -2000) - (touch-file (lisppath "file2.lisp") :timestamp tf2 :offset -5000) - (touch-file (faslpath "file2.lisp") :timestamp tf2 :offset -1000))) + (touch-file (faslpath "file1.lisp") :timestamp tf2 :offset -200) + (touch-file (lisppath "file2.lisp") :timestamp tf2 :offset -500) + (touch-file (faslpath "file2.lisp") :timestamp tf2 :offset -100))) (t (DBG "touching first source file and reloading") (sleep #-os-windows 3 #+os-windows 5)