I was reading over the info again before my talk, and I realized that there was no discussion of the test-op as one of the predefined operations, although it is predefined. Patch attached.
diff --git a/asdf.texinfo b/asdf.texinfo index cfef5c6..761d606 100644 --- a/asdf.texinfo +++ b/asdf.texinfo @@ -558,42 +558,59 @@ If you are creating a component type, you need to implement this operation - at least, where meaningful. @end deffn
-@deffn Operation test-system-version &key minimum +@deffn Operation test-op
-Asks the system whether it satisfies a version requirement. +This operation should carry out a test on the specified component. ASDF +does not (currently) provide a method for returning a value from the +test-op (or any other operation), so the implementor must ensure that +executing the @code{test-op} has the side effect of printing useful +information about the tests to the CL stream @code{*standard-output*}.
-The default method accepts a string, which is expected to contain of a -number of integers separated by #. characters. The method is not -recursive. The component satisfies the version dependency if it has -the same major number as required and each of its sub-versions is -greater than or equal to the sub-version number required. +The default method for @code{test-op} does nothing, and will have to be +overridden, but invoking @code{test-op} on a component for which nothing +is defined will be a simple no-op.
-@lisp -(defun version-satisfies (x y) - (labels ((bigger (x y) - (cond ((not y) t) - ((not x) nil) - ((> (car x) (car y)) t) - ((= (car x) (car y)) - (bigger (cdr x) (cdr y)))))) - (and (= (car x) (car y)) - (or (not (cdr y)) (bigger (cdr x) (cdr y)))))) -@end lisp - -If that doesn't work for your system, you can override it. I hope -you have as much fun writing the new method as @verb{|#lisp|} did -reimplementing this one. +The default dependency for @code{test-op} on a system is to require +@code{load-op} on that system. @end deffn
-@deffn Operation feature-dependent-op
-An instance of @code{feature-dependent-op} will ignore any components -which have a @code{features} attribute, unless the feature combination -it designates is satisfied by @code{*features*}. This operation is -not intended to be instantiated directly, but other operations may -inherit from it. +@c @deffn Operation test-system-version &key minimum
-@end deffn +@c Asks the system whether it satisfies a version requirement. + +@c The default method accepts a string, which is expected to contain of a +@c number of integers separated by #. characters. The method is not +@c recursive. The component satisfies the version dependency if it has +@c the same major number as required and each of its sub-versions is +@c greater than or equal to the sub-version number required. + +@c @lisp +@c (defun version-satisfies (x y) +@c (labels ((bigger (x y) +@c (cond ((not y) t) +@c ((not x) nil) +@c ((> (car x) (car y)) t) +@c ((= (car x) (car y)) +@c (bigger (cdr x) (cdr y)))))) +@c (and (= (car x) (car y)) +@c (or (not (cdr y)) (bigger (cdr x) (cdr y)))))) +@c @end lisp + +@c If that doesn't work for your system, you can override it. I hope +@c you have as much fun writing the new method as @verb{|#lisp|} did +@c reimplementing this one. +@c @end deffn + +@c @deffn Operation feature-dependent-op + +@c An instance of @code{feature-dependent-op} will ignore any components +@c which have a @code{features} attribute, unless the feature combination +@c it designates is satisfied by @code{*features*}. This operation is +@c not intended to be instantiated directly, but other operations may +@c inherit from it. + +@c @end deffn
@node Creating new operations, , Predefined operations of asdf, Operations @comment node-name, next, previous, up
Robert Goldman wrote:
I was reading over the info again before my talk, and I realized that there was no discussion of the test-op as one of the predefined operations, although it is predefined. Patch attached.
In previous draft I forgot to mention that OPERATION-DONE-P always returns NIL by default for TEST-OP. Fixed here.
Best, r
diff --git a/asdf.texinfo b/asdf.texinfo index cfef5c6..c831ddc 100644 --- a/asdf.texinfo +++ b/asdf.texinfo @@ -558,42 +558,63 @@ If you are creating a component type, you need to implement this operation - at least, where meaningful. @end deffn
-@deffn Operation test-system-version &key minimum +@deffn Operation test-op
-Asks the system whether it satisfies a version requirement. +This operation should carry out a test on the specified component. ASDF +does not (currently) provide a method for returning a value from the +test-op (or any other operation), so the implementor must ensure that +executing the @code{test-op} has the side effect of printing useful +information about the tests to the CL stream @code{*standard-output*}.
-The default method accepts a string, which is expected to contain of a -number of integers separated by #. characters. The method is not -recursive. The component satisfies the version dependency if it has -the same major number as required and each of its sub-versions is -greater than or equal to the sub-version number required. +The default method for @code{test-op} does nothing, and will have to be +overridden, but invoking @code{test-op} on a component for which nothing +is defined will be a simple no-op.
-@lisp -(defun version-satisfies (x y) - (labels ((bigger (x y) - (cond ((not y) t) - ((not x) nil) - ((> (car x) (car y)) t) - ((= (car x) (car y)) - (bigger (cdr x) (cdr y)))))) - (and (= (car x) (car y)) - (or (not (cdr y)) (bigger (cdr x) (cdr y)))))) -@end lisp +The default dependency for @code{test-op} on a system is to require +@code{load-op} on that system.
-If that doesn't work for your system, you can override it. I hope -you have as much fun writing the new method as @verb{|#lisp|} did -reimplementing this one. +The default method for @code{operation-done-p} for @code{test-op} and +any component is to return @code{NIL}. We expect that users will want +to rerun tests. @end deffn
-@deffn Operation feature-dependent-op
-An instance of @code{feature-dependent-op} will ignore any components -which have a @code{features} attribute, unless the feature combination -it designates is satisfied by @code{*features*}. This operation is -not intended to be instantiated directly, but other operations may -inherit from it. +@c @deffn Operation test-system-version &key minimum
-@end deffn +@c Asks the system whether it satisfies a version requirement. + +@c The default method accepts a string, which is expected to contain of a +@c number of integers separated by #. characters. The method is not +@c recursive. The component satisfies the version dependency if it has +@c the same major number as required and each of its sub-versions is +@c greater than or equal to the sub-version number required. + +@c @lisp +@c (defun version-satisfies (x y) +@c (labels ((bigger (x y) +@c (cond ((not y) t) +@c ((not x) nil) +@c ((> (car x) (car y)) t) +@c ((= (car x) (car y)) +@c (bigger (cdr x) (cdr y)))))) +@c (and (= (car x) (car y)) +@c (or (not (cdr y)) (bigger (cdr x) (cdr y)))))) +@c @end lisp + +@c If that doesn't work for your system, you can override it. I hope +@c you have as much fun writing the new method as @verb{|#lisp|} did +@c reimplementing this one. +@c @end deffn + +@c @deffn Operation feature-dependent-op + +@c An instance of @code{feature-dependent-op} will ignore any components +@c which have a @code{features} attribute, unless the feature combination +@c it designates is satisfied by @code{*features*}. This operation is +@c not intended to be instantiated directly, but other operations may +@c inherit from it. + +@c @end deffn
@node Creating new operations, , Predefined operations of asdf, Operations @comment node-name, next, previous, up