def test_symbol_references(self): file_to_interpret = fs.File( 'python-logic_symbol_utils.py', python_program_that_exits_with_code_given_as_first_cl_arg) file_to_interpret_symbol = StringConstantSymbolContext( 'file_to_interpret_symbol', file_to_interpret.file_name) python_interpreter_symbol = StringConstantSymbolContext( 'python_interpreter_symbol', sys.executable) exit_code_symbol = StringIntConstantSymbolContext( 'exit_code_symbol', 72) argument = ' {python_interpreter} {interpret_option} {file_to_interpret} "{exit_code}"'.format( python_interpreter=python_interpreter_symbol.name__sym_ref_syntax, interpret_option=args.option( syntax_elements.EXISTING_FILE_OPTION_NAME).as_str, file_to_interpret=file_to_interpret_symbol.name__sym_ref_syntax, exit_code=exit_code_symbol.name__sym_ref_syntax, ) following_line = 'following line' source = remaining_source(argument, [following_line]) arrangement = Arrangement.phase_agnostic( tcds=TcdsArrangement(tcds_contents=TcdsPopulatorForRelOptionType( path_relativities.ALL_REL_OPTIONS_ARG_CONFIG.options. default_option, fs.DirContents([file_to_interpret])), ), symbols=SymbolContext.symbol_table_of_contexts([ python_interpreter_symbol, file_to_interpret_symbol, exit_code_symbol, ]), ) expectation = Expectation.phase_agnostic( source=assert_source(current_line_number=asrt.equals(2), column_index=asrt.equals(0)), symbol_usages=asrt.matches_sequence([ python_interpreter_symbol.usage_assertion__path_or_string( syntax_elements.EXE_FILE_REL_OPTION_ARG_CONF.options. accepted_relativity_variants), file_to_interpret_symbol.usage_assertion__path_or_string( path_relativities.ALL_REL_OPTIONS_ARG_CONFIG.options. accepted_relativity_variants), exit_code_symbol.usage_assertion__w_str_rendering, ]), main_result=result_assertions.equals(exit_code_symbol.int_value, ''), ) parser = sut.embryo_parser('instruction-name') embryo_check.check(self, parser, source, arrangement, expectation)
def test_symbol_references(self): python_interpreter_symbol = StringConstantSymbolContext( 'python_interpreter_symbol', sys.executable) execute_program_option_symbol = StringConstantSymbolContext( 'execute_program_option', '-c') exit_code_symbol = StringIntConstantSymbolContext( 'exit_code_symbol', 87) argument = ' {python_interpreter} {execute_program_option} {source_option} exit({exit_code}) '.format( python_interpreter=python_interpreter_symbol.name__sym_ref_syntax, execute_program_option=execute_program_option_symbol. name__sym_ref_syntax, source_option=syntax_elements. REMAINING_PART_OF_CURRENT_LINE_AS_LITERAL_MARKER, exit_code=exit_code_symbol.name__sym_ref_syntax, ) arrangement = Arrangement.phase_agnostic( symbols=SymbolContext.symbol_table_of_contexts([ python_interpreter_symbol, execute_program_option_symbol, exit_code_symbol, ]), tcds=TcdsArrangement(), ) source = remaining_source(argument, ['following line']) expectation = Expectation.phase_agnostic( source=assert_source(current_line_number=asrt.equals(2), column_index=asrt.equals(0)), symbol_usages=asrt.matches_sequence([ python_interpreter_symbol.usage_assertion__path_or_string( syntax_elements.EXE_FILE_REL_OPTION_ARG_CONF.options. accepted_relativity_variants), execute_program_option_symbol.usage_assertion__w_str_rendering, exit_code_symbol.usage_assertion__w_str_rendering, ]), main_result=result_assertions.equals(exit_code_symbol.int_value, ''), ) parser = sut.embryo_parser('instruction-name') embryo_check.check(self, parser, source, arrangement, expectation)
def test_symbol_references(self): expected_exit_status = 72 file_to_interpret = fs.File('python-logic_symbol_utils.py', py_script_that_exists_with_status(expected_exit_status)) file_to_interpret_symbol = StringConstantSymbolContext('file_to_interpret_symbol', file_to_interpret.file_name) python_interpreter_symbol = StringConstantSymbolContext('python_interpreter_symbol', sys.executable) argument = ' "{python_interpreter}" {file_to_interpret}'.format( python_interpreter=python_interpreter_symbol.name__sym_ref_syntax, file_to_interpret=file_to_interpret_symbol.name__sym_ref_syntax, ) following_line = 'following line' source = remaining_source(argument, [following_line]) arrangement = Arrangement.phase_agnostic( tcds=TcdsArrangement( tcds_contents=TcdsPopulatorForRelOptionType( RelOptionType.REL_ACT, fs.DirContents([file_to_interpret])), ), symbols=SymbolContext.symbol_table_of_contexts([ python_interpreter_symbol, file_to_interpret_symbol, ]), ) expectation = Expectation.phase_agnostic( source=assert_source(current_line_number=asrt.equals(2), column_index=asrt.equals(0)), symbol_usages=asrt.matches_sequence([ python_interpreter_symbol.usage_assertion__w_str_rendering, file_to_interpret_symbol.usage_assertion__w_str_rendering, ]), main_result=result_assertions.equals(expected_exit_status, ''), ) parser = sut.embryo_parser('instruction-name') embryo_check.check(self, parser, source, arrangement, expectation)
def _check(self, parser: embryo.InstructionEmbryoParser, source: ParseSource, arrangement: Arrangement, expectation: Expectation): sut.check(self.tc, parser, source, arrangement, expectation)