186 lines
6.4 KiB
Plaintext
186 lines
6.4 KiB
Plaintext
#
|
|
# 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)"
|
|
}
|