diff options
Diffstat (limited to 'tools/build/v2/test/conditionals_multiple.py')
-rwxr-xr-x | tools/build/v2/test/conditionals_multiple.py | 297 |
1 files changed, 297 insertions, 0 deletions
diff --git a/tools/build/v2/test/conditionals_multiple.py b/tools/build/v2/test/conditionals_multiple.py new file mode 100755 index 0000000000..20b6b47f7b --- /dev/null +++ b/tools/build/v2/test/conditionals_multiple.py @@ -0,0 +1,297 @@ +#!/usr/bin/python + +# Copyright 2008 Jurko Gospodnetic +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) + +# Tests that properties conditioned on more than one other property work as +# expected. + +import BoostBuild + + +################################################################################ +# +# test_multiple_conditions() +# -------------------------- +# +################################################################################ + +def test_multiple_conditions(): + """Basic tests for properties conditioned on multiple other properties. + """ + + t = BoostBuild.Tester("--ignore-regular-config toolset=testToolset", + pass_toolset=False, use_test_config=False) + + t.write("testToolset.jam", """ +import feature ; +feature.extend toolset : testToolset ; +rule init ( ) { } +""") + + t.write("jamroot.jam", """ +import feature ; +import notfile ; +import toolset ; + +feature.feature description : : free incidental ; +feature.feature aaa : 1 0 : incidental ; +feature.feature bbb : 1 0 : incidental ; +feature.feature ccc : 1 0 : incidental ; + +rule buildRule ( name : targets ? : properties * ) +{ + for local description in [ feature.get-values description : $(properties) ] + { + ECHO "description:" /$(description)/ ; + } +} + +notfile testTarget1 : @buildRule : : + <description>d + <aaa>0:<description>a0 + <aaa>1:<description>a1 + <aaa>0,<bbb>0:<description>a0-b0 + <aaa>0,<bbb>1:<description>a0-b1 + <aaa>1,<bbb>0:<description>a1-b0 + <aaa>1,<bbb>1:<description>a1-b1 + <aaa>0,<bbb>0,<ccc>0:<description>a0-b0-c0 + <aaa>0,<bbb>0,<ccc>1:<description>a0-b0-c1 + <aaa>0,<bbb>1,<ccc>1:<description>a0-b1-c1 + <aaa>1,<bbb>0,<ccc>1:<description>a1-b0-c1 + <aaa>1,<bbb>1,<ccc>0:<description>a1-b1-c0 + <aaa>1,<bbb>1,<ccc>1:<description>a1-b1-c1 ; +""") + + t.run_build_system("aaa=1 bbb=1 ccc=1") + t.expect_output_line("description: /d/" ) + t.expect_output_line("description: /a0/" , False) + t.expect_output_line("description: /a1/" ) + t.expect_output_line("description: /a0-b0/" , False) + t.expect_output_line("description: /a0-b1/" , False) + t.expect_output_line("description: /a1-b0/" , False) + t.expect_output_line("description: /a1-b1/" ) + t.expect_output_line("description: /a0-b0-c0/", False) + t.expect_output_line("description: /a0-b0-c1/", False) + t.expect_output_line("description: /a0-b1-c1/", False) + t.expect_output_line("description: /a1-b0-c1/", False) + t.expect_output_line("description: /a1-b1-c0/", False) + t.expect_output_line("description: /a1-b1-c1/" ) + + t.run_build_system("aaa=0 bbb=0 ccc=1") + t.expect_output_line("description: /d/" ) + t.expect_output_line("description: /a0/" ) + t.expect_output_line("description: /a1/" , False) + t.expect_output_line("description: /a0-b0/" ) + t.expect_output_line("description: /a0-b1/" , False) + t.expect_output_line("description: /a1-b0/" , False) + t.expect_output_line("description: /a1-b1/" , False) + t.expect_output_line("description: /a0-b0-c0/", False) + t.expect_output_line("description: /a0-b0-c1/" ) + t.expect_output_line("description: /a0-b1-c1/", False) + t.expect_output_line("description: /a1-b0-c1/", False) + t.expect_output_line("description: /a1-b1-c0/", False) + t.expect_output_line("description: /a1-b1-c1/", False) + + t.run_build_system("aaa=0 bbb=0 ccc=0") + t.expect_output_line("description: /d/" ) + t.expect_output_line("description: /a0/" ) + t.expect_output_line("description: /a1/" , False) + t.expect_output_line("description: /a0-b0/" ) + t.expect_output_line("description: /a0-b1/" , False) + t.expect_output_line("description: /a1-b0/" , False) + t.expect_output_line("description: /a1-b1/" , False) + t.expect_output_line("description: /a0-b0-c0/" ) + t.expect_output_line("description: /a0-b0-c1/", False) + t.expect_output_line("description: /a0-b1-c1/", False) + t.expect_output_line("description: /a1-b0-c1/", False) + t.expect_output_line("description: /a1-b1-c0/", False) + t.expect_output_line("description: /a1-b1-c1/", False) + + t.cleanup() + + +################################################################################ +# +# test_multiple_conditions_with_toolset_version() +# ----------------------------------------------- +# +################################################################################ + +def test_multiple_conditions_with_toolset_version(): + """Regression tests for properties conditioned on the toolset version + subfeature and some additional properties. + """ + + toolset = "testToolset" ; + + t = BoostBuild.Tester("--ignore-regular-config", pass_toolset=False, use_test_config=False) + + t.write( toolset + ".jam", """ +import feature ; +feature.extend toolset : %(toolset)s ; +feature.subfeature toolset %(toolset)s : version : 0 1 ; +rule init ( version ? ) { } +""" % {"toolset": toolset}) + + t.write("jamroot.jam", """ +import feature ; +import notfile ; +import toolset ; + +toolset.using testToolset ; + +feature.feature description : : free incidental ; +feature.feature aaa : 0 1 : incidental ; +feature.feature bbb : 0 1 : incidental ; +feature.feature ccc : 0 1 : incidental ; + +rule buildRule ( name : targets ? : properties * ) +{ + local ttt = [ feature.get-values toolset : $(properties) ] ; + local vvv = [ feature.get-values toolset-testToolset:version : $(properties) ] ; + local aaa = [ feature.get-values aaa : $(properties) ] ; + local bbb = [ feature.get-values bbb : $(properties) ] ; + local ccc = [ feature.get-values ccc : $(properties) ] ; + ECHO "toolset:" /$(ttt)/ "version:" /$(vvv)/ "aaa/bbb/ccc:" /$(aaa)/$(bbb)/$(ccc)/ ; + for local description in [ feature.get-values description : $(properties) ] + { + ECHO "description:" /$(description)/ ; + } +} + +notfile testTarget1 : @buildRule : : + <toolset>testToolset,<aaa>0:<description>t-a0 + <toolset>testToolset,<aaa>1:<description>t-a1 + + <toolset>testToolset-0,<aaa>0:<description>t0-a0 + <toolset>testToolset-0,<aaa>1:<description>t0-a1 + <toolset>testToolset-1,<aaa>0:<description>t1-a0 + <toolset>testToolset-1,<aaa>1:<description>t1-a1 + + <toolset>testToolset,<aaa>0,<bbb>0:<description>t-a0-b0 + <toolset>testToolset,<aaa>0,<bbb>1:<description>t-a0-b1 + <toolset>testToolset,<aaa>1,<bbb>0:<description>t-a1-b0 + <toolset>testToolset,<aaa>1,<bbb>1:<description>t-a1-b1 + + <aaa>0,<toolset>testToolset,<bbb>0:<description>a0-t-b0 + <aaa>0,<toolset>testToolset,<bbb>1:<description>a0-t-b1 + <aaa>1,<toolset>testToolset,<bbb>0:<description>a1-t-b0 + <aaa>1,<toolset>testToolset,<bbb>1:<description>a1-t-b1 + + <aaa>0,<bbb>0,<toolset>testToolset:<description>a0-b0-t + <aaa>0,<bbb>1,<toolset>testToolset:<description>a0-b1-t + <aaa>1,<bbb>0,<toolset>testToolset:<description>a1-b0-t + <aaa>1,<bbb>1,<toolset>testToolset:<description>a1-b1-t + + <toolset>testToolset-0,<aaa>0,<bbb>0:<description>t0-a0-b0 + <toolset>testToolset-0,<aaa>0,<bbb>1:<description>t0-a0-b1 + <toolset>testToolset-0,<aaa>1,<bbb>0:<description>t0-a1-b0 + <toolset>testToolset-0,<aaa>1,<bbb>1:<description>t0-a1-b1 + <toolset>testToolset-1,<aaa>0,<bbb>0:<description>t1-a0-b0 + <toolset>testToolset-1,<aaa>0,<bbb>1:<description>t1-a0-b1 + <toolset>testToolset-1,<aaa>1,<bbb>0:<description>t1-a1-b0 + <toolset>testToolset-1,<aaa>1,<bbb>1:<description>t1-a1-b1 + + <aaa>0,<toolset>testToolset-1,<bbb>0:<description>a0-t1-b0 + <aaa>0,<toolset>testToolset-1,<bbb>1:<description>a0-t1-b1 + <aaa>1,<toolset>testToolset-0,<bbb>0:<description>a1-t0-b0 + <aaa>1,<toolset>testToolset-0,<bbb>1:<description>a1-t0-b1 + + <bbb>0,<aaa>1,<toolset>testToolset-0:<description>b0-a1-t0 + <bbb>0,<aaa>0,<toolset>testToolset-1:<description>b0-a0-t1 + <bbb>0,<aaa>1,<toolset>testToolset-1:<description>b0-a1-t1 + <bbb>1,<aaa>0,<toolset>testToolset-1:<description>b1-a0-t1 + <bbb>1,<aaa>1,<toolset>testToolset-0:<description>b1-a1-t0 + <bbb>1,<aaa>1,<toolset>testToolset-1:<description>b1-a1-t1 ; +""") + + t.run_build_system("aaa=1 bbb=1 ccc=1 toolset=%s-0" % toolset) + t.expect_output_line("description: /t-a0/" , False) + t.expect_output_line("description: /t-a1/" ) + t.expect_output_line("description: /t0-a0/" , False) + t.expect_output_line("description: /t0-a1/" ) + t.expect_output_line("description: /t1-a0/" , False) + t.expect_output_line("description: /t1-a1/" , False) + t.expect_output_line("description: /t-a0-b0/" , False) + t.expect_output_line("description: /t-a0-b1/" , False) + t.expect_output_line("description: /t-a1-b0/" , False) + t.expect_output_line("description: /t-a1-b1/" ) + t.expect_output_line("description: /a0-t-b0/" , False) + t.expect_output_line("description: /a0-t-b1/" , False) + t.expect_output_line("description: /a1-t-b0/" , False) + t.expect_output_line("description: /a1-t-b1/" ) + t.expect_output_line("description: /a0-b0-t/" , False) + t.expect_output_line("description: /a0-b1-t/" , False) + t.expect_output_line("description: /a1-b0-t/" , False) + t.expect_output_line("description: /a1-b1-t/" ) + t.expect_output_line("description: /t0-a0-b0/", False) + t.expect_output_line("description: /t0-a0-b1/", False) + t.expect_output_line("description: /t0-a1-b0/", False) + t.expect_output_line("description: /t0-a1-b1/" ) + t.expect_output_line("description: /t1-a0-b0/", False) + t.expect_output_line("description: /t1-a0-b1/", False) + t.expect_output_line("description: /t1-a1-b0/", False) + t.expect_output_line("description: /t1-a1-b1/", False) + t.expect_output_line("description: /a0-t1-b0/", False) + t.expect_output_line("description: /a0-t1-b1/", False) + t.expect_output_line("description: /a1-t0-b0/", False) + t.expect_output_line("description: /a1-t0-b1/" ) + t.expect_output_line("description: /b0-a1-t0/", False) + t.expect_output_line("description: /b0-a0-t1/", False) + t.expect_output_line("description: /b0-a1-t1/", False) + t.expect_output_line("description: /b1-a0-t1/", False) + t.expect_output_line("description: /b1-a1-t0/" ) + t.expect_output_line("description: /b1-a1-t1/", False) + + t.run_build_system("aaa=1 bbb=1 ccc=1 toolset=%s-1" % toolset) + t.expect_output_line("description: /t-a0/" , False) + t.expect_output_line("description: /t-a1/" ) + t.expect_output_line("description: /t0-a0/" , False) + t.expect_output_line("description: /t0-a1/" , False) + t.expect_output_line("description: /t1-a0/" , False) + t.expect_output_line("description: /t1-a1/" ) + t.expect_output_line("description: /t-a0-b0/" , False) + t.expect_output_line("description: /t-a0-b1/" , False) + t.expect_output_line("description: /t-a1-b0/" , False) + t.expect_output_line("description: /t-a1-b1/" ) + t.expect_output_line("description: /a0-t-b0/" , False) + t.expect_output_line("description: /a0-t-b1/" , False) + t.expect_output_line("description: /a1-t-b0/" , False) + t.expect_output_line("description: /a1-t-b1/" ) + t.expect_output_line("description: /a0-b0-t/" , False) + t.expect_output_line("description: /a0-b1-t/" , False) + t.expect_output_line("description: /a1-b0-t/" , False) + t.expect_output_line("description: /a1-b1-t/" ) + t.expect_output_line("description: /t0-a0-b0/", False) + t.expect_output_line("description: /t0-a0-b1/", False) + t.expect_output_line("description: /t0-a1-b0/", False) + t.expect_output_line("description: /t0-a1-b1/", False) + t.expect_output_line("description: /t1-a0-b0/", False) + t.expect_output_line("description: /t1-a0-b1/", False) + t.expect_output_line("description: /t1-a1-b0/", False) + t.expect_output_line("description: /t1-a1-b1/" ) + t.expect_output_line("description: /a0-t1-b0/", False) + t.expect_output_line("description: /a0-t1-b1/", False) + t.expect_output_line("description: /a1-t0-b0/", False) + t.expect_output_line("description: /a1-t0-b1/", False) + t.expect_output_line("description: /b0-a1-t0/", False) + t.expect_output_line("description: /b0-a0-t1/", False) + t.expect_output_line("description: /b0-a1-t1/", False) + t.expect_output_line("description: /b1-a0-t1/", False) + t.expect_output_line("description: /b1-a1-t0/", False) + t.expect_output_line("description: /b1-a1-t1/" ) + + t.cleanup() + + +################################################################################ +# +# main() +# ------ +# +################################################################################ + +test_multiple_conditions() +test_multiple_conditions_with_toolset_version() |