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_last_instruction_fails(self):
     recording_media = RecordingMedia()
     instruction_executor = InstructionExecutorThatRecordsInstructionNameAndFailsFor(
         instruction_with_name('Last instruction'),
         recording_media.new_recorder_with_header('instruction executor'),
         PartialInstructionControlledFailureInfo(PartialControlledFailureEnum.FAIL,
                                                 'fail message')
     )
     phase_contents = SectionContents((new_instruction_element(Line(1, '1'),
                                                               TestInstruction('First instruction')),
                                       new_instruction_element(Line(2, '2'),
                                                               TestInstruction('Last instruction'))
                                       ))
     self._standard_test(
         recording_media,
         phase_contents,
         instruction_executor,
         asrt_failure.is_present_with(PartialExeResultStatus.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: Last instruction',
          ])
 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_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(PartialExeResultStatus.IMPLEMENTATION_ERROR,
                                      equals_single_line_source_location_path(Line(1, '1')),
                                      asrt_failure_details.is_exception(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,
                                                 '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(PartialExeResultStatus.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_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'
                 ])