f951fb1559
[SVN r79701]
75 lines
2.1 KiB
Python
Executable File
75 lines
2.1 KiB
Python
Executable File
#!/usr/bin/python
|
|
|
|
# Copyright 2012. Jurko Gospodnetic
|
|
# 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)
|
|
|
|
# Test Boost Jam parser's source line tracking & reporting.
|
|
|
|
import BoostBuild
|
|
|
|
|
|
def test_eof_in_string():
|
|
t = BoostBuild.Tester(pass_toolset=False)
|
|
t.write("file.jam", '\n\n\naaa = "\n\n\n\n\n\n')
|
|
t.run_build_system(["-ffile.jam"], status=1)
|
|
t.expect_output_lines('file.jam:4: unmatched " in string at keyword =')
|
|
t.expect_output_lines("file.jam:4: syntax error at EOF")
|
|
t.cleanup()
|
|
|
|
|
|
def test_error_missing_argument(eof):
|
|
"""
|
|
This use case used to cause a missing argument error to be reported in
|
|
module '(builtin)' in line -1 when the input file did not contain a
|
|
trailing newline.
|
|
|
|
"""
|
|
t = BoostBuild.Tester(pass_toolset=False)
|
|
t.write("file.jam", """\
|
|
rule f ( param ) { }
|
|
f ;%s""" % __trailing_newline(eof))
|
|
t.run_build_system(["-ffile.jam"], status=1)
|
|
t.expect_output_lines("file.jam:2: in module scope")
|
|
t.expect_output_lines("file.jam:1:see definition of rule 'f' being called")
|
|
t.cleanup()
|
|
|
|
|
|
def test_error_syntax(eof):
|
|
t = BoostBuild.Tester(pass_toolset=False)
|
|
t.write("file.jam", "ECHO%s" % __trailing_newline(eof))
|
|
t.run_build_system(["-ffile.jam"], status=1)
|
|
t.expect_output_lines("file.jam:1: syntax error at EOF")
|
|
t.cleanup()
|
|
|
|
|
|
def test_traceback():
|
|
t = BoostBuild.Tester(pass_toolset=False)
|
|
t.write("file.jam", """\
|
|
NOTFILE all ;
|
|
ECHO [ BACKTRACE ] ;""")
|
|
t.run_build_system(["-ffile.jam"])
|
|
t.expect_output_lines("file.jam 2 module scope")
|
|
t.cleanup()
|
|
|
|
|
|
def __trailing_newline(eof):
|
|
"""
|
|
Helper function returning an empty string or a newling character to
|
|
append to the current output line depending on whether we want that line to
|
|
be the last line in the file (eof == True) or not (eof == False).
|
|
|
|
"""
|
|
if eof:
|
|
return ""
|
|
return "\n"
|
|
|
|
|
|
test_error_missing_argument(eof=False)
|
|
test_error_missing_argument(eof=True)
|
|
test_error_syntax(eof=False)
|
|
test_error_syntax(eof=True)
|
|
test_traceback()
|
|
test_eof_in_string()
|