summaryrefslogtreecommitdiffstats
path: root/src/boost/tools/quickbook/test/quickbook-testing.jam
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/boost/tools/quickbook/test/quickbook-testing.jam185
1 files changed, 185 insertions, 0 deletions
diff --git a/src/boost/tools/quickbook/test/quickbook-testing.jam b/src/boost/tools/quickbook/test/quickbook-testing.jam
new file mode 100644
index 000000000..a4529497c
--- /dev/null
+++ b/src/boost/tools/quickbook/test/quickbook-testing.jam
@@ -0,0 +1,185 @@
+#
+# Copyright (c) 2005 João Abecasis
+#
+# Distributed under the Boost Software License, Version 1.0. (See
+# accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+#
+
+import feature ;
+import generators ;
+import modules ;
+import project ;
+import targets ;
+import testing ;
+import toolset ;
+import type ;
+
+feature.feature quickbook-testing.quickbook-command : : free dependency ;
+feature.feature <quickbook-test-define> : : free ;
+feature.feature <quickbook-test-include> : : free path ;
+feature.feature <quickbook-xinclude-base> : : free ;
+
+type.register QUICKBOOK_INPUT : quickbook ;
+type.register QUICKBOOK_OUTPUT ;
+type.register QUICKBOOK_HTML_OUTPUT ;
+
+generators.register-standard quickbook-testing.process-quickbook : QUICKBOOK_INPUT : QUICKBOOK_OUTPUT ;
+generators.register-standard quickbook-testing.process-quickbook-html : QUICKBOOK_INPUT : QUICKBOOK_HTML_OUTPUT ;
+
+################################################################################
+#
+# quickbook-test - generates a test for quickbook itself. A quickbook-test is
+# actually made up of two tests:
+# $(target-name).boostbook :
+# generate boostbook from $(input) or $(target-name).quickbook
+#
+# $(target-name):
+# compare generated boostbook to $(reference-output) or
+# $(input).gold or $(target-name).gold
+#
+rule quickbook-test ( target-name : input ? : reference-output ? : requirements * )
+{
+ input ?= $(target-name).quickbook ;
+ reference-output ?= $(input:S=.gold) ;
+ reference-output-html = $(input:S=.gold-html) ;
+
+ local project = [ project.current ] ;
+
+ local boost-root = [ modules.peek : BOOST_ROOT ] ;
+
+ local t1 =
+ [ targets.create-typed-target QUICKBOOK_OUTPUT
+ : $(project)
+ : $(target-name).boostbook
+ : $(input)
+ : $(requirements)
+ <location-prefix>$(target-name).test
+ <quickbook-testing.quickbook-command>$(boost-root)/tools/quickbook/src//quickbook
+ ] ;
+
+ local t2 =
+ [ targets.create-typed-target RUN
+ : $(project)
+ : $(target-name)
+ : $(boost-root)/tools/quickbook/test/src/text_diff.cpp
+ : $(requirements)
+ <location-prefix>$(target-name).test2
+ <testing.input-file>$(reference-output)
+ <testing.input-file>$(target-name).boostbook
+ <preserve-test-targets>on
+ ] ;
+
+ local t1-html =
+ [ targets.create-typed-target QUICKBOOK_HTML_OUTPUT
+ : $(project)
+ : $(target-name).html
+ : $(input)
+ : $(requirements)
+ <location-prefix>$(target-name).test-html
+ <quickbook-testing.quickbook-command>$(boost-root)/tools/quickbook/src//quickbook
+ ] ;
+
+ local t2-html =
+ [ targets.create-typed-target RUN
+ : $(project)
+ : $(target-name)-compare-html
+ : $(boost-root)/tools/quickbook/test/src/text_diff.cpp
+ : $(requirements)
+ <location-prefix>$(target-name).test-html
+ <testing.input-file>$(reference-output-html)
+ <testing.input-file>$(target-name).html
+ <preserve-test-targets>on
+ ] ;
+
+ local all-tests = [ modules.peek testing : .all-tests ] ;
+ all-tests += $(t2) $(t2-html) ;
+ modules.poke testing : .all-tests : $(all-tests) ;
+
+ return $(t1) $(t2) $(t1-html) $(t2-html) ;
+}
+
+rule quickbook-fail-test ( target-name : input ? : requirements * )
+{
+ input ?= $(target-name).quickbook ;
+
+ local project = [ project.current ] ;
+
+ local boost-root = [ modules.peek : BOOST_ROOT ] ;
+
+ local t =
+ [ targets.create-typed-target RUN_FAIL
+ : $(project)
+ : $(target-name)
+ : $(boost-root)/tools/quickbook/src//quickbook
+ : $(requirements)
+ <testing.input-file>$(input)
+ <preserve-test-targets>on
+ <dependency>$(input)
+ ]
+ ;
+
+ local all-tests = [ modules.peek testing : .all-tests ] ;
+ all-tests += $(t) ;
+ modules.poke testing : .all-tests : $(all-tests) ;
+
+ return $(t) ;
+}
+
+rule quickbook-error-test ( target-name : input ? : requirements * )
+{
+ input ?= $(target-name).quickbook ;
+
+ local project = [ project.current ] ;
+
+ local boost-root = [ modules.peek : BOOST_ROOT ] ;
+
+ local t =
+ [ targets.create-typed-target RUN
+ : $(project)
+ : $(target-name)
+ : $(boost-root)/tools/quickbook/src//quickbook
+ : $(requirements)
+ <testing.input-file>$(input)
+ <testing.arg>--expect-errors
+ <preserve-test-targets>on
+ <dependency>$(input)
+ ]
+ ;
+
+ local all-tests = [ modules.peek testing : .all-tests ] ;
+ all-tests += $(t) ;
+ modules.poke testing : .all-tests : $(all-tests) ;
+
+ return $(t) ;
+}
+
+################################################################################
+toolset.flags quickbook-testing.process-quickbook quickbook-command <quickbook-testing.quickbook-command> ;
+toolset.flags quickbook-testing.process-quickbook QB-DEFINES <quickbook-test-define> ;
+toolset.flags quickbook-testing.process-quickbook XINCLUDE <quickbook-xinclude-base> ;
+toolset.flags quickbook-testing.process-quickbook INCLUDES <quickbook-test-include> ;
+toolset.flags quickbook-testing.process-quickbook-html quickbook-command <quickbook-testing.quickbook-command> ;
+toolset.flags quickbook-testing.process-quickbook-html QB-DEFINES <quickbook-test-define> ;
+toolset.flags quickbook-testing.process-quickbook-html XINCLUDE <quickbook-xinclude-base> ;
+toolset.flags quickbook-testing.process-quickbook-html INCLUDES <quickbook-test-include> ;
+
+rule process-quickbook ( target : source : properties * )
+{
+ DEPENDS $(target) : [ on $(target) return $(quickbook-command) ] ;
+}
+
+actions process-quickbook bind quickbook-command
+{
+ $(quickbook-command) $(>) --output-file=$(<) --debug -D"$(QB-DEFINES)" -I"$(INCLUDES)" --xinclude-base="$(XINCLUDE)"
+}
+
+rule process-quickbook-html ( target : source : properties * )
+{
+ DEPENDS $(target) : [ on $(target) return $(quickbook-command) ] ;
+}
+
+actions process-quickbook-html bind quickbook-command
+{
+ $(quickbook-command) $(>) --output-format=onehtml --output-file=$(<) --debug -D"$(QB-DEFINES)" -I"$(INCLUDES)" --xinclude-base="$(XINCLUDE)"
+}