286 lines
6.1 KiB
Scheme
Executable File
286 lines
6.1 KiB
Scheme
Executable File
#!/usr/bin/env sh
|
|
exec guile -L . -s "$0" "$@"
|
|
!#
|
|
(use-modules (potato make)
|
|
(srfi srfi-1)
|
|
(srfi srfi-64))
|
|
|
|
(test-begin "automatic-variables")
|
|
|
|
(test-equal "A phony target rule with no prerequisites defines $@."
|
|
#t
|
|
(begin
|
|
(initialize)
|
|
(: "clean" '()
|
|
(lambda ()
|
|
(string=? ($@) "clean")))
|
|
(execute)))
|
|
|
|
(test-equal "A phony target rule with no prerequisites defines $*."
|
|
#t
|
|
(begin
|
|
(initialize)
|
|
(: "clean" '()
|
|
(lambda ()
|
|
(string=? ($*) "clean")))
|
|
(execute)))
|
|
|
|
(test-equal "A phony target rule with no prerequisites has empty string $<."
|
|
#t
|
|
(begin
|
|
(initialize)
|
|
(: "clean" '()
|
|
(lambda ()
|
|
(string-null? ($<))))
|
|
(execute)))
|
|
|
|
(test-equal "A phony target rule with no prerequisites has null list $$?."
|
|
#t
|
|
(begin
|
|
(initialize)
|
|
(: "clean" '()
|
|
(lambda ()
|
|
(null? ($$?))))
|
|
(execute)))
|
|
|
|
(test-equal "A phony target rule with no prerequisites has empty string $?."
|
|
#t
|
|
(begin
|
|
(initialize)
|
|
(: "clean" '()
|
|
(lambda ()
|
|
(string-null? ($?))))
|
|
(execute)))
|
|
|
|
(test-equal "A phony target rule with no prerequisites has null list $$^."
|
|
#t
|
|
(begin
|
|
(initialize)
|
|
(: "clean" '()
|
|
(lambda ()
|
|
(null? ($$^))))
|
|
(execute)))
|
|
|
|
(test-equal "A phony target rule with no prerequisites has empty string $^."
|
|
#t
|
|
(begin
|
|
(initialize)
|
|
(: "clean" '()
|
|
(lambda ()
|
|
(string-null? ($^))))
|
|
(execute)))
|
|
|
|
;;;;;;;;;;;;;;;;
|
|
|
|
(test-equal "A target rule with a prerequisite defines $@."
|
|
#t
|
|
(begin
|
|
(initialize)
|
|
(: "foo.exe" '("foo.x")
|
|
(lambda ()
|
|
(string=? ($@) "foo.exe")))
|
|
(: "foo.x" '() #t)
|
|
(execute)))
|
|
|
|
(test-equal "A target rule with a prerequisite defines $*."
|
|
#t
|
|
(begin
|
|
(initialize)
|
|
(: "foo.exe" '("foo.x")
|
|
(lambda ()
|
|
(string=? ($*) "foo")))
|
|
(: "foo.x" '() #t)
|
|
(execute)))
|
|
|
|
(test-equal "A target rule with a prerequisite defines $<."
|
|
#t
|
|
(begin
|
|
(initialize)
|
|
(: "foo.exe" '("foo.x")
|
|
(lambda ()
|
|
(string=? ($<) "foo.x")))
|
|
(: "foo.x" '() #t)
|
|
(execute)))
|
|
|
|
(test-equal "A target rule with a prerequisite defines $$?."
|
|
#t
|
|
(begin
|
|
(initialize)
|
|
(: "foo.exe" '("foo.x")
|
|
(lambda ()
|
|
(equal? ($$?) (list "foo.x"))))
|
|
(: "foo.x" '() #t)
|
|
(execute)))
|
|
|
|
(test-equal "A target rule with a prerequisite defines $?."
|
|
#t
|
|
(begin
|
|
(initialize)
|
|
(: "foo.exe" '("foo.x")
|
|
(lambda ()
|
|
(string=? ($?) "foo.x")))
|
|
(: "foo.x" '() #t)
|
|
(execute)))
|
|
|
|
(test-equal "A target rule with a prerequisite defines $$^."
|
|
#t
|
|
(begin
|
|
(initialize)
|
|
(: "foo.exe" '("foo.x")
|
|
(lambda ()
|
|
(equal? ($$?) (list "foo.x"))))
|
|
(: "foo.x" '() #t)
|
|
(execute)))
|
|
|
|
(test-equal "A target rule with a prerequisite defines $^."
|
|
#t
|
|
(begin
|
|
(initialize)
|
|
(: "foo.exe" '("foo.x")
|
|
(lambda ()
|
|
(string=? ($?) "foo.x")))
|
|
(: "foo.x" '() #t)
|
|
(execute)))
|
|
|
|
;;;;;;;;;;;;;;;;
|
|
|
|
(test-equal "A target rule with multiple prerequisites defines $@."
|
|
#t
|
|
(begin
|
|
(initialize)
|
|
(: "foo.exe" '("foo.x" "foo.y")
|
|
(lambda ()
|
|
(string=? ($@) "foo.exe")))
|
|
(: "foo.x" '() #t)
|
|
(: "foo.y" '() #t)
|
|
(execute)))
|
|
|
|
(test-equal "A target rule with multiple prerequisites defines $*."
|
|
#t
|
|
(begin
|
|
(initialize)
|
|
(: "foo.exe" '("foo.x" "foo.y")
|
|
(lambda ()
|
|
(string=? ($*) "foo")))
|
|
(: "foo.x" '() #t)
|
|
(: "foo.y" '() #t)
|
|
(execute)))
|
|
|
|
(test-equal "A target rule with multiple prerequisites defines $<."
|
|
#t
|
|
(begin
|
|
(initialize)
|
|
(: "foo.exe" '("foo.x" "foo.y")
|
|
(lambda ()
|
|
(string=? ($<) "foo.x")))
|
|
(: "foo.x" '() #t)
|
|
(: "foo.y" '() #t)
|
|
(execute)))
|
|
|
|
(test-equal "A target rule with multiple prerequisites defines $$?."
|
|
#t
|
|
(begin
|
|
(initialize)
|
|
(: "foo.exe" '("foo.x" "foo.y")
|
|
(lambda ()
|
|
(equal? ($$?) (list "foo.x" "foo.y"))))
|
|
(: "foo.x" '() #t)
|
|
(: "foo.y" '() #t)
|
|
(execute)))
|
|
|
|
(test-equal "A target rule with multiple prerequisites defines $?."
|
|
#t
|
|
(begin
|
|
(initialize)
|
|
(: "foo.exe" '("foo.x" "foo.y")
|
|
(lambda ()
|
|
(string=? ($?) "foo.x foo.y")))
|
|
(: "foo.x" '() #t)
|
|
(: "foo.y" '() #t)
|
|
(execute)))
|
|
|
|
(test-equal "A target rule with multiple prerequisites defines $$^."
|
|
#t
|
|
(begin
|
|
(initialize)
|
|
(: "foo.exe" '("foo.x" "foo.y")
|
|
(lambda ()
|
|
(equal? ($$?) (list "foo.x" "foo.y"))))
|
|
(: "foo.x" '() #t)
|
|
(: "foo.y" '() #t)
|
|
(execute)))
|
|
|
|
(test-equal "A target rule with multiple prerequisites defines $^."
|
|
#t
|
|
(begin
|
|
(initialize)
|
|
(: "foo.exe" '("foo.x" "foo.y")
|
|
(lambda ()
|
|
(string=? ($?) "foo.x foo.y")))
|
|
(: "foo.x" '() #t)
|
|
(: "foo.y" '() #t)
|
|
(execute)))
|
|
|
|
;;;;;;;;;;;;;;;;
|
|
|
|
(test-equal "A suffix rule with a prerequisite defines $@."
|
|
#t
|
|
(begin
|
|
(initialize '("test" "foo.y"))
|
|
(-> ".x" ".y"
|
|
(lambda ()
|
|
(format #t "BLAMMO ~A~%" ($@))
|
|
(string=? ($@) "foo.y")))
|
|
(: "foo.x" '() #t)
|
|
(execute)))
|
|
|
|
(test-equal "A suffix rule with a prerequisite defines $*."
|
|
#t
|
|
(begin
|
|
(initialize '("test" "foo.y"))
|
|
(-> ".x" ".y"
|
|
(lambda ()
|
|
(format #t "BLAMMO ~A~%" ($*))
|
|
(string=? ($*) "foo")))
|
|
(: "foo.x" '() #t)
|
|
(execute)))
|
|
|
|
(test-equal "A suffix rule with a prerequisite defines $<."
|
|
#t
|
|
(begin
|
|
(initialize '("test" "foo.y"))
|
|
(-> ".x" ".y"
|
|
(lambda ()
|
|
(format #t "BLAMMO ~A~%" ($<))
|
|
(string=? ($<) "foo.x")))
|
|
(: "foo.x" '() #t)
|
|
(execute)))
|
|
|
|
(test-equal "A suffix rule with a prerequisite defines $$^."
|
|
#t
|
|
(begin
|
|
(initialize '("test" "foo.y"))
|
|
(-> ".x" ".y"
|
|
(lambda ()
|
|
(format #t "BLAMMO ~A~%" ($$^))
|
|
(equal? ($$^) (list "foo.x"))))
|
|
(: "foo.x" '() #t)
|
|
(execute)))
|
|
|
|
(test-equal "A suffix rule with a prerequisite defines $^."
|
|
#t
|
|
(begin
|
|
(initialize '("test" "foo.y"))
|
|
(-> ".x" ".y"
|
|
(lambda ()
|
|
(format #t "BLAMMO ~A~%" ($^))
|
|
(equal? ($^) "foo.x")))
|
|
(: "foo.x" '() #t)
|
|
(execute)))
|
|
|
|
(test-end "automatic-variables")
|
|
|
|
;; Local Variables:
|
|
;; mode: scheme
|
|
;; End:
|