def test_line_in_context(file_name): line = line_in_context( line='a simple line of text', context=context(file=file_name, line=45), ) assert line.context.file == file_name assert line.context.line == 45 assert line.line == 'a simple line of text' line = line_in_context('a simple line of text', context(file_name, 45)) assert line.context.file == file_name assert line.context.line == 45 assert line.line == 'a simple line of text'
def test_add_context(file_name): lines = ( 'line1', 'line2', 'line3', ) expected = ( line_in_context(context=context(file=file_name, line=1), line='line1'), line_in_context(context=context(file=file_name, line=2), line='line2'), line_in_context(context=context(file=file_name, line=3), line='line3'), ) result = tuple(add_context(file=file_name, lines=lines)) assert expected == result
def test_statement_to_comment(context_gen): comment_statments = ( line_in_context('# a comment line', context_gen(1)), line_in_context('#', context_gen(2)), line_in_context('', context_gen(3)), ) expected_objects = ( comment(' a comment line', context_gen(1)), comment('', context_gen(2)), comment('', context_gen(3)), ) for sttmt, expected in _it.izip(comment_statments, expected_objects): result = statement_to_comment(sttmt) assert expected == result bad_statements = ( line_in_context(' # indented comment', context_gen(4)), line_in_context('command arg1:arg2', context_gen(5)), line_in_context('command', context_gen(6)), line_in_context('command args # not a comment', context_gen(7)), ) exception_contexts = tuple(context_gen(i) for i in range(4, 8)) for sttmt, exp_ctx in _it.izip(bad_statements, exception_contexts): with pytest.raises(VirtSyntaxError) as err: statement_to_comment(sttmt) assert exp_ctx == err.value.context
def test_add_context_nested(file_name, some_context): lines = ( 'line1', 'line2', 'line3', ) ctx = ( nested_context(file_name, cnt, some_context) for cnt in _it.count(1) ) expected = ( line_in_context(context=next(ctx), line='line1'), line_in_context(context=next(ctx), line='line2'), line_in_context(context=next(ctx), line='line3'), ) result = tuple( add_context(file=file_name, lines=lines, nest_in=some_context) ) assert expected == result
def test_statement_to_command(context_gen): command_statements = ( line_in_context(' # indented comment', context_gen(1)), line_in_context('command arg1:arg2', context_gen(2)), line_in_context('command ', context_gen(3)), line_in_context('command', context_gen(4)), line_in_context('command args # not a comment', context_gen(5)), ) expected_objects = ( command('', '# indented comment', context_gen(1)), command('command', 'arg1:arg2', context_gen(2)), command('command', '', context_gen(3)), command('command', None, context_gen(4)), command('command', ' args # not a comment', context_gen(5)), ) for sttmt, expected in _it.izip(command_statements, expected_objects): result = statement_to_command(sttmt) assert expected == result
def test_lines_to_statements(file_name): lines = add_context(file=file_name, lines=( 'line1\n', ' line2 \n', 'line3 part1\\\n', 'line3 part2\n', 'line \\ number 4\n', 'line5 part1\\\n', ' line5\\ part2\\\n', 'line5 part3\n', 'line6', )) expected = ( line_in_context('line1', context(file_name, 1)), line_in_context(' line2 ', context(file_name, 2)), line_in_context('line3 part1\nline3 part2', context(file_name, 3)), line_in_context('line \\ number 4', context(file_name, 5)), line_in_context( 'line5 part1\n line5\\ part2\nline5 part3', context(file_name, 6) ), line_in_context('line6', context(file_name, 9)), ) result = tuple(lines_to_statements(lines)) assert expected == result