def test_successful_sequence(self): phase_contents = SectionContents(( new_instruction_element(Line(1, '1'), TestInstruction('First instruction')), new_comment_element(Line(2, '2')), new_instruction_element(Line(3, '3'), TestInstruction('Second instruction')), new_comment_element(Line(4, '4')), new_comment_element(Line(50, '50')), new_instruction_element(Line(60, '60'), TestInstruction('Third instruction')), new_instruction_element(Line(70, '70'), TestInstruction('Fourth instruction')), new_comment_element(Line(80, '80')), )) self._standard_test_with_successful_instruction_executor( phase_contents, asrt_failure.is_not_present(), [ 'instruction header for source line number: 1', 'instruction executor: First instruction', 'comment header for source line number: 2', 'instruction header for source line number: 3', 'instruction executor: Second instruction', 'comment header for source line number: 4', 'comment header for source line number: 50', 'instruction header for source line number: 60', 'instruction executor: Third instruction', 'instruction header for source line number: 70', 'instruction executor: Fourth instruction', 'comment header for source line number: 80', ])
def test_middle_instruction_fails(self): recording_media = RecordingMedia() instruction_executor = InstructionExecutorThatRecordsInstructionNameAndFailsFor( instruction_with_name('Middle instruction'), recording_media.new_recorder_with_header('instruction executor'), PartialInstructionControlledFailureInfo( PartialControlledFailureEnum.FAIL, asrt_text_doc.new_single_string_text_for_test('fail message'))) phase_contents = SectionContents(( new_instruction_element(Line(1, '1'), TestInstruction('First instruction')), new_instruction_element(Line(2, '2'), TestInstruction('Middle instruction')), new_instruction_element(Line(3, '3'), TestInstruction('Last instruction')), )) self._standard_test( recording_media, phase_contents, instruction_executor, asrt_failure.is_present_with( ExecutionFailureStatus.FAIL, equals_single_line_source_location_path(Line(2, '2')), asrt_failure_details.is_failure_message_of('fail message')), [ 'instruction header for source line number: 1', 'instruction executor: First instruction', 'instruction header for source line number: 2', 'instruction executor: Middle instruction', ])
def test_when_there_are_only_comment_elements_than_the_result_should_be_pass(self): phase_contents = SectionContents((new_comment_element(Line(1, '1')), new_comment_element(Line(2, '2')))) self._standard_test_with_successful_instruction_executor( phase_contents, asrt_failure.is_not_present(), ['comment header for source line number: 1', 'comment header for source line number: 2'])
def test_successful_execution_of_single_instruction(self): phase_contents = SectionContents( (new_instruction_element(Line(1, '1'), TestInstruction('The instruction')), )) self._standard_test_with_successful_instruction_executor( phase_contents, asrt_failure.is_not_present(), [ 'instruction header for source line number: 1', 'instruction executor: The instruction' ])
def _separate_configuration_elements( section_contents: SectionContents ) -> Tuple[SectionContents, SectionContents]: suite_elements = [] case_elements = [] for element in section_contents.elements: if element.element_type is ElementType.INSTRUCTION: if isinstance(element.instruction_info.instruction, ConfigurationSectionInstruction): suite_elements.append(element) else: case_elements.append(element) else: suite_elements.append(element) return SectionContents(tuple(suite_elements)), SectionContents( tuple(case_elements))
def test_single_exception_raising_instruction_executor(self): recording_media = RecordingMedia() instruction_executor = InstructionExecutorThatRecordsInstructionNameAndRaisesExceptionFor( any_instruction, recording_media.new_recorder_with_header('instruction executor'), TestException()) phase_contents = SectionContents( (new_instruction_element(Line(1, '1'), TestInstruction('The instruction')), )) self._standard_test( recording_media, phase_contents, instruction_executor, asrt_failure.is_present_with( ExecutionFailureStatus.INTERNAL_ERROR, equals_single_line_source_location_path(Line(1, '1')), asrt_failure_details.is_exception_of_type(TestException)), [ 'instruction header for source line number: 1', 'instruction executor: The instruction' ])
def test_single_failing_instruction_executor__status_hard_error(self): recording_media = RecordingMedia() instruction_executor = InstructionExecutorThatRecordsInstructionNameAndFailsFor( any_instruction, recording_media.new_recorder_with_header('instruction executor'), PartialInstructionControlledFailureInfo( PartialControlledFailureEnum.HARD_ERROR, asrt_text_doc.new_single_string_text_for_test( 'hard error message'))) phase_contents = SectionContents( (new_instruction_element(Line(1, '1'), TestInstruction('The instruction')), )) self._standard_test( recording_media, phase_contents, instruction_executor, asrt_failure.is_present_with( ExecutionFailureStatus.HARD_ERROR, equals_single_line_source_location_path(Line(1, '1')), asrt_failure_details.is_failure_message_of( 'hard error message')), [ 'instruction header for source line number: 1', 'instruction executor: The instruction' ])
def test_when_there_are_no_elements_no_executor_should_be_invoked_and_the_result_should_be_pass( self): phase_contents = SectionContents(()) self._standard_test_with_successful_instruction_executor( phase_contents, asrt_failure.is_not_present(), [])
def append(fst: SectionContents, snd: SectionContents) -> SectionContents: return SectionContents( tuple(list(fst.elements) + list(snd.elements)))
def section_contents(instructions: list) -> SectionContents: return SectionContents(tuple(map(instruction_line_con, instructions)))