1#!/usr/local/bin/python3.8 2 3# Copyright 2012. Jurko Gospodnetic 4# Distributed under the Boost Software License, Version 1.0. 5# (See accompanying file LICENSE_1_0.txt or copy at 6# http://www.boost.org/LICENSE_1_0.txt) 7 8# This tests the SPLIT_BY_CHARACTERS rule. 9 10import BoostBuild 11 12def test_invalid(params, expected_error_line): 13 t = BoostBuild.Tester(pass_toolset=0) 14 t.write("file.jam", "SPLIT_BY_CHARACTERS %s ;" % params) 15 t.run_build_system(["-ffile.jam"], status=1) 16 t.expect_output_lines("[*] %s" % expected_error_line) 17 t.cleanup() 18 19def test_valid(): 20 t = BoostBuild.Tester(pass_toolset=0) 21 t.write("jamroot.jam", """\ 22import assert ; 23 24assert.result FooBarBaz : SPLIT_BY_CHARACTERS FooBarBaz : "" ; 25assert.result FooBarBaz : SPLIT_BY_CHARACTERS FooBarBaz : x ; 26assert.result FooBa Baz : SPLIT_BY_CHARACTERS FooBarBaz : r ; 27assert.result FooBa Baz : SPLIT_BY_CHARACTERS FooBarBaz : rr ; 28assert.result FooBa Baz : SPLIT_BY_CHARACTERS FooBarBaz : rrr ; 29assert.result FooB rB z : SPLIT_BY_CHARACTERS FooBarBaz : a ; 30assert.result FooB B z : SPLIT_BY_CHARACTERS FooBarBaz : ar ; 31assert.result ooBarBaz : SPLIT_BY_CHARACTERS FooBarBaz : F ; 32assert.result FooBarBa : SPLIT_BY_CHARACTERS FooBarBaz : z ; 33assert.result ooBarBa : SPLIT_BY_CHARACTERS FooBarBaz : Fz ; 34assert.result F B rB z : SPLIT_BY_CHARACTERS FooBarBaz : oa ; 35assert.result Alib b : SPLIT_BY_CHARACTERS Alibaba : oa ; 36assert.result libaba : SPLIT_BY_CHARACTERS Alibaba : oA ; 37assert.result : SPLIT_BY_CHARACTERS FooBarBaz : FooBarBaz ; 38assert.result : SPLIT_BY_CHARACTERS FooBarBaz : FoBarz ; 39 40# Questionable results - should they return an empty string or an empty list? 41assert.result : SPLIT_BY_CHARACTERS "" : "" ; 42assert.result : SPLIT_BY_CHARACTERS "" : x ; 43assert.result : SPLIT_BY_CHARACTERS "" : r ; 44assert.result : SPLIT_BY_CHARACTERS "" : rr ; 45assert.result : SPLIT_BY_CHARACTERS "" : rrr ; 46assert.result : SPLIT_BY_CHARACTERS "" : oa ; 47""") 48 t.run_build_system() 49 t.cleanup() 50 51test_invalid("", "missing argument string") 52test_invalid("Foo", "missing argument delimiters") 53test_invalid(": Bar", "missing argument string") 54test_invalid("a : b : c", "extra argument c") 55test_invalid("a b : c", "extra argument b") 56test_invalid("a : b c", "extra argument c") 57test_valid() 58