def _apply(self,
               put: unittest.TestCase,
               value,
               message_builder: asrt.MessageBuilder):
        put.assertIsInstance(value, rs.SymbolTable)
        assert isinstance(value, rs.SymbolTable)
        put.assertEqual(self.expected.names_set,
                        value.names_set,
                        message_builder.apply('names in symbol table'))
        for name in self.expected.names_set:
            actual_value = value.lookup(name)

            put.assertIsInstance(actual_value, rs.SymbolContainer,
                                 message_builder.apply('actual container for ' + name))
            assert isinstance(actual_value, rs.SymbolContainer)

            expected_container = self.expected.lookup(name)

            put.assertIsInstance(expected_container, rs.SymbolContainer,
                                 message_builder.apply('expected container for ' + name))
            assert isinstance(expected_container, rs.SymbolContainer)

            equals_container(expected_container).apply(put,
                                                       actual_value,
                                                       message_builder.for_sub_component('Value of symbol ' + name))
Example #2
0
 def is_section_item(self,
                     put: unittest.TestCase,
                     value,
                     message_builder: asrt.MessageBuilder = asrt.MessageBuilder()):
     asrt.IsInstance(doc.SectionItem).apply(put, value, message_builder)
     assert isinstance(value, doc.SectionItem)
     asrt.sub_component('header',
                        doc.SectionItem.header.fget,
                        is_text
                        ).apply(put, value, message_builder)
     asrt.sub_component('tags',
                        doc.SectionItem.tags.fget,
                        asrt.is_instance_with(set,
                                              asrt.on_transformed(list,
                                                                  asrt.is_sequence_of(asrt.is_instance(str)))
                                              )
                        ).apply(put, value, message_builder)
     asrt.sub_component('target',
                        doc.SectionItem.target.fget,
                        asrt.is_instance(core.CrossReferenceTarget)),
     if isinstance(value, doc.Article):
         is_article_contents.apply(put, value.contents,
                                   message_builder.for_sub_component('article_contents'))
     elif isinstance(value, doc.Section):
         is_section_contents.apply(put, value.contents,
                                   message_builder.for_sub_component('section_contents'))
     else:
         asrt.fail('Not a {}: {}'.format(str(doc.SectionItem), str(value)))
Example #3
0
    def _apply(self,
               put: unittest.TestCase,
               value: MatcherWTrace[MODEL],
               message_builder: asrt.MessageBuilder):
        put.assertIsInstance(value, MatcherWTrace)
        assert isinstance(value, MatcherWTrace)  # Type info for IDE

        # Check description

        actual_structure = value.structure().render()
        expected_structure = self.expected_equivalent.structure().render()

        put.assertEqual(expected_structure.header,
                        actual_structure.header,
                        message_builder.apply('header'))

        # Check applications

        application_assertions = asrt.and_([
            MatcherEquivalenceOfCaseAssertion(self.expected_equivalent,
                                              model_info)
            for model_info in self._model_infos
        ])

        application_assertions.apply(put, value, message_builder.for_sub_component('application'))
Example #4
0
    def _apply(self,
               put: unittest.TestCase,
               value: SetupSettingsHandler,
               message_builder: MessageBuilder,
               ):
        settings_builder_model = asrt_settings_builder.SettingsBuilderAssertionModel(
            value.builder,
            self.ENVIRONMENT,
            self.OS_SERVICES,
        )

        self._settings_builder.apply(
            put,
            settings_builder_model,
            message_builder.for_sub_component('settings builder'),
        )

        aei_model = AdvWvAssertionModel(
            ApplicationEnvironment(self.OS_SERVICES,
                                   self.ENVIRONMENT.proc_exe_settings,
                                   self.ENVIRONMENT.tmp_dir__path_access.paths_access,
                                   self.ENVIRONMENT.mem_buff_size,
                                   ),
            value.as_atc_execution_input(),
        )

        self._atc_exe_input.apply(
            put,
            aei_model,
            message_builder.for_sub_component('act execution info'),
        )
Example #5
0
    def _check_sub_class_properties(self, put: unittest.TestCase,
                                    actual: DependenciesAwareDdv,
                                    tcds: TestCaseDs,
                                    message_builder: asrt.MessageBuilder):
        put.assertIsInstance(actual, Max1DependencyDdv,
                             message_builder.apply('class'))
        assert isinstance(actual, Max1DependencyDdv)  # Type info for IDE

        put.assertEqual(self._resolving_dependency,
                        actual.resolving_dependency(),
                        message_builder.apply('resolving_dependency'))

        assertion_on_resolved_value = self.resolved_value(tcds)

        if not self._resolving_dependency or self._resolving_dependency == DirectoryStructurePartition.HDS:
            resolved_value_pre_sds = actual.value_pre_sds(tcds.hds)
            assertion_on_resolved_value.apply(
                put, resolved_value_pre_sds,
                message_builder.for_sub_component('value_pre_sds'))

        if not self._resolving_dependency or self._resolving_dependency == DirectoryStructurePartition.NON_HDS:
            resolved_value_post_sds = actual.value_post_sds(tcds.sds)
            assertion_on_resolved_value.apply(
                put, resolved_value_post_sds,
                message_builder.for_sub_component('value_post_sds'))
Example #6
0
    def _check_primitive(
        self,
        primitive: PRIMITIVE,
        resolving_env: FullResolvingEnvironment,
        message_builder: MessageBuilder,
    ) -> _ValueAssertionApplier:
        self.common_properties.check_primitive(
            self.put,
            primitive,
            message_builder,
        )
        assertion_on_primitive = self.primitive(
            AssertionResolvingEnvironment(
                resolving_env.tcds, resolving_env.application_environment))
        assertion_on_primitive.apply(self.put, primitive, message_builder)

        try:
            result = self.applier.apply(self.put, message_builder, primitive,
                                        resolving_env, self.model_constructor)

            if self.execution.is_hard_error is not None:
                self.put.fail(
                    message_builder.apply('HARD_ERROR not reported (raised)'))

            self.common_properties.check_application_output(
                self.put, result,
                message_builder.for_sub_component(
                    'common properties of output'))
            return _ValueAssertionApplier(
                self.execution.main_result,
                result,
                message_builder.for_sub_component('output'),
            )
        except HardErrorException as ex:
            return self._check_hard_error(ex, message_builder)
Example #7
0
    def _apply(self,
               put: unittest.TestCase,
               value: SymbolDependentValue,
               message_builder: asrt.MessageBuilder):
        put.assertIsInstance(value, SymbolDependentValue,
                             message_builder.apply("SDV type"))

        self.sdv_type.apply(put, value, message_builder)

        references__actual = value.references
        references__message_builder = message_builder.for_sub_component('references')

        asrt.is_sequence_of(asrt.is_instance(SymbolReference)).apply(
            put,
            references__actual,
            references__message_builder
        )
        self.references.apply(put, references__actual,
                              references__message_builder)

        self.custom.apply(put, value, message_builder)

        ddv = value.resolve(self.symbols)

        self.ddv.apply(put, ddv,
                       message_builder.for_sub_component('ddv'))
    def _check_sub_class_properties(self,
                                    put: unittest.TestCase,
                                    actual: DirDependentValue,
                                    tcds: HomeAndSds,
                                    message_builder: asrt.MessageBuilder):
        put.assertIsInstance(actual,
                             SingleDirDependentValue,
                             message_builder.apply('class'))
        assert isinstance(actual, SingleDirDependentValue)  # Type info for IDE

        put.assertEqual(self._resolving_dependency,
                        actual.resolving_dependency(),
                        message_builder.apply('resolving_dependency'))

        assertion_on_resolved_value = self.resolved_value(tcds)

        if not self._resolving_dependency or self._resolving_dependency == DirectoryStructurePartition.HOME:
            resolved_value_post_sds = actual.value_pre_sds(tcds.hds)
            assertion_on_resolved_value.apply(put,
                                              resolved_value_post_sds,
                                              message_builder.for_sub_component('value_pre_sds'))

        if not self._resolving_dependency or self._resolving_dependency == DirectoryStructurePartition.NON_HOME:
            resolved_value_post_sds = actual.value_post_sds(tcds.sds)
            assertion_on_resolved_value.apply(put,
                                              resolved_value_post_sds,
                                              message_builder.for_sub_component('value_pre_sds'))
Example #9
0
    def _execute(
        self,
        atc: ActionToCheck,
        env: InstructionEnvironmentForPostSdsStep,
    ):
        process_executor = ProcessExecutorForProgramExecutorWoStdinThatRaisesIfResultIsNotExitCode(
            env, self._arrangement.process_execution.os_services, atc,
            self._atc_exe_input(env))
        error_msg_extra_info = ''
        sub_process_result = None
        try:
            sub_process_result = capture_process_executor_result__wo_stdin(
                process_executor, env.sds.result.root_dir)
            step_result = new_eh_exit_code(sub_process_result.exitcode)
        except HardErrorResultError as ex:
            step_result = ex.result
            error_msg_extra_info = os.linesep + str(
                ex.failure_details) + os.linesep

        self._expectation.execute.apply(
            self._put, step_result,
            MessageBuilder('Result of execute' + error_msg_extra_info))
        if sub_process_result:
            msg_builder = MessageBuilder('Sub process output from execute ' +
                                         error_msg_extra_info)
            self._expectation_post_sds.sub_process_result_from_execute.apply(
                self._put, sub_process_result, msg_builder)

        self._expectation_post_sds.side_effects_on_files_after_execute.apply(
            self._put, env.sds)
        self._check_symbols_after(atc, phase_step.STEP__ACT__EXECUTE)
        self._expectation.after_execution.apply_with_message(
            self._put, env.tcds, 'after execution')
Example #10
0
 def _check_common_dependencies(self, put: unittest.TestCase,
                                actual: DependenciesAwareDdv,
                                message_builder: asrt.MessageBuilder):
     put.assertEqual(self._expected.has_dir_dependency(),
                     actual.has_dir_dependency(),
                     message_builder.apply('has_dir_dependency'))
     put.assertEqual(self._expected.resolving_dependencies(),
                     actual.resolving_dependencies(),
                     message_builder.apply('resolving_dependencies'))
 def _apply(self, put: unittest.TestCase, value: AdvWvAssertionModel[T],
            message_builder: MessageBuilder):
     result_of_validation = value.adv.validate()
     put.assertIsNone(result_of_validation,
                      message_builder.apply('validation result'))
     resolved_value = value.adv.resolve(value.environment)
     self._resolved_value.apply(
         put, resolved_value,
         message_builder.for_sub_component('resolved value'))
Example #12
0
    def _apply(self, put: unittest.TestCase, value: T,
               message_builder: MessageBuilder):
        file_path = pathlib.Path(self.path_name)

        put.assertTrue(file_path.exists(),
                       message_builder.apply('Path should exist'))

        put.assertTrue(file_path.is_dir(),
                       message_builder.apply('Path should be a directory'))
Example #13
0
 def _check_common_dependencies(self,
                                put: unittest.TestCase,
                                actual: DirDependentValue,
                                message_builder: asrt.MessageBuilder):
     put.assertEqual(self._expected.has_dir_dependency(),
                     actual.has_dir_dependency(),
                     message_builder.apply('has_dir_dependency'))
     put.assertEqual(self._expected.resolving_dependencies(),
                     actual.resolving_dependencies(),
                     message_builder.apply('resolving_dependencies'))
Example #14
0
    def _apply(self, put: unittest.TestCase, value: DetailsRenderer,
               message_builder: MessageBuilder):
        put.assertIsInstance(value, DetailsRenderer,
                             message_builder.apply('object type'))

        rendered_details = value.render()

        self._rendered_details.apply(
            put, rendered_details,
            message_builder.for_sub_component('rendered details'))
Example #15
0
    def _apply(self, put: unittest.TestCase, value: NodeRenderer,
               message_builder: MessageBuilder):
        put.assertIsInstance(value, NodeRenderer,
                             message_builder.apply('object type'))

        rendered_node = value.render()

        self._rendered_node.apply(
            put, rendered_node,
            message_builder.for_sub_component('rendered node'))
Example #16
0
    def _apply(self,
               put: unittest.TestCase,
               value: T,
               message_builder: MessageBuilder):
        file_path = pathlib.Path(self.path_name)

        put.assertTrue(file_path.exists(),
                       message_builder.apply('Path should exist'))

        put.assertTrue(file_path.is_dir(),
                       message_builder.apply('Path should be a directory'))
Example #17
0
 def _apply(
     self,
     put: unittest.TestCase,
     value: Either[SymbolName, StringSdv],
     message_builder: MessageBuilder,
 ):
     put.assertTrue(value.is_right(),
                    message_builder.apply('form of Either'))
     assertion_on_sdv = assert_equals_string_sdv(self._expected_fragments)
     assertion_on_sdv.apply(put, value.right(),
                            message_builder.for_sub_component('sdv'))
Example #18
0
 def _apply(
     self,
     put: unittest.TestCase,
     value: Either[SymbolName, StringSdv],
     message_builder: MessageBuilder,
 ):
     put.assertTrue(value.is_left(),
                    message_builder.apply('form of Either'))
     put.assertEqual(
         self._expected_symbol_name, value.left(),
         message_builder.apply('value of Either (left SymbolName)'))
Example #19
0
 def _apply(self,
            put: unittest.TestCase,
            value,
            message_builder: MessageBuilder,
            ):
     put.assertIsInstance(value, SetupSettingsBuilder,
                          message_builder.apply('object should be instance of ' + str(type(SetupSettingsBuilder)))
                          )
     assert isinstance(value, SetupSettingsBuilder)  # Type info for IDE
     put.assertIsNone(value.stdin, message_builder.apply('stdin'))
     self._environ.apply(put, value.environ, message_builder.for_sub_component('environ'))
Example #20
0
 def _apply(
     self,
     put: unittest.TestCase,
     value: SourceConstructor,
     message_builder: MessageBuilder,
 ):
     self._non_contents_related(
         put, value,
         message_builder.for_sub_component('non-contents-related'))
     self._contents_related(
         put, value, message_builder.for_sub_component('contents-related'))
Example #21
0
 def _apply(self, put: unittest.TestCase, value: DdvValidator,
            message_builder: MessageBuilder):
     validation_result = value.validate_pre_sds_if_applicable(self.tcds.hds)
     self.expectation.pre_sds.apply_with_message(
         put, validation_result,
         message_builder.apply('pre sds validation'))
     if validation_result is None:
         validation_result = value.validate_post_sds_if_applicable(
             self.tcds)
         self.expectation.post_sds.apply_with_message(
             put, validation_result,
             message_builder.apply('post sds validation'))
 def _apply(
     self,
     put: unittest.TestCase,
     value: ValueRestriction,
     message_builder: MessageBuilder,
 ):
     put.assertIsInstance(value, ArbitraryValueWStrRenderingRestriction,
                          message_builder.apply('object type'))
     assert isinstance(
         value, ArbitraryValueWStrRenderingRestriction)  # Type info for IDE
     put.assertEqual(self._accepted, value.accepted,
                     message_builder.apply('accepted types'))
Example #23
0
 def _apply(
     self,
     put: unittest.TestCase,
     value: StringSourceContents,
     message_builder: asrt.MessageBuilder,
 ):
     self._check_actual_contents(
         put, value, message_builder.for_sub_component('actual contents'))
     self._check_external_dependencies(
         put, value,
         message_builder.for_sub_component(
             'may_depend_on_external_resources'))
Example #24
0
    def _check_sub_class_properties(self, put: unittest.TestCase,
                                    actual: DependenciesAwareDdv,
                                    tcds: TestCaseDs,
                                    message_builder: asrt.MessageBuilder):
        put.assertIsInstance(actual, MultiDependenciesDdv,
                             message_builder.apply('class'))
        assert isinstance(actual, MultiDependenciesDdv)  # Type info for IDE

        actual_dir_dependencies = actual.dir_dependencies()
        asrt.equals(self._dir_dependencies).apply(
            put, actual_dir_dependencies,
            message_builder.for_sub_component('dir_dependencies'))
Example #25
0
    def _apply(self,
               put: unittest.TestCase,
               value: Program,
               message_builder: MessageBuilder):
        asrt.is_instance(Program).apply(put, value, message_builder.for_sub_component('class'))

        assert isinstance(value, Program)

        self.command.apply(put, value.command, message_builder.for_sub_component('command'))

        self.stdin.apply(put, value.stdin, message_builder.for_sub_component('stdin'))

        self.transformer.apply(put, value.transformation, message_builder.for_sub_component('transformation'))
Example #26
0
 def _apply(self,
            put: unittest.TestCase,
            value,
            message_builder: asrt.MessageBuilder):
     model = value
     assert isinstance(model, SettingsBuilderAssertionModel)  # Type info for IDE
     put.assertIsNone(model.actual.stdin.contents,
                      message_builder.apply('contents should not be set when using file'))
     expected_file_name = self._expected_file_reference.value_of_any_dependency(
         model.environment.path_resolving_environment_pre_or_post_sds.home_and_sds)
     put.assertEqual(expected_file_name,
                     model.actual.stdin.file_name,
                     message_builder.apply('Name of stdin file in Setup Settings'))
Example #27
0
 def _apply(self,
            put: unittest.TestCase,
            value,
            message_builder: asrt.MessageBuilder):
     model = value
     assert isinstance(model, SettingsBuilderAssertionModel)  # Type info for IDE
     put.assertIsNone(model.actual.stdin.file_name,
                      message_builder.apply('file name should not be set when using here doc'))
     expected_contents_str = self.expected_contents_resolver.resolve_value_of_any_dependency(
         model.environment.path_resolving_environment_pre_or_post_sds)
     put.assertEqual(expected_contents_str,
                     model.actual.stdin.contents,
                     message_builder.apply('stdin as contents'))
    def _apply(self,
               put: unittest.TestCase,
               value,
               message_builder: asrt.MessageBuilder):
        put.assertIsInstance(value, ConstantStringFragmentResolver)
        assert isinstance(value, ConstantStringFragmentResolver)  # Type info for IDE

        put.assertTrue(value.is_string_constant,
                       message_builder.apply('is_string_constant'))

        put.assertEqual(self.expected.string_constant,
                        value.string_constant,
                        message_builder.apply('string_constant'))
 def _apply(self,
            put: unittest.TestCase,
            value: PreOrPostSdsValueValidator,
            message_builder: MessageBuilder):
     validation_result = value.validate_pre_sds_if_applicable(self.tcds.hds)
     self.expectation.pre_sds.apply_with_message(put,
                                                 validation_result,
                                                 message_builder.apply('pre sds validation'))
     if validation_result is None:
         validation_result = value.validate_post_sds_if_applicable(self.tcds)
         self.expectation.post_sds.apply_with_message(put,
                                                      validation_result,
                                                      message_builder.apply('post sds validation'))
Example #30
0
 def _check_custom(self, put: unittest.TestCase, actual: Max1DependencyDdv,
                   tcds: TestCaseDs, message_builder: asrt.MessageBuilder):
     if self._expected.exists_pre_sds():
         put.assertEqual(
             self._expected_single_dep_value.value_pre_sds(tcds.hds),
             actual.value_pre_sds(tcds.hds),
             message_builder.apply('value_pre_sds'))
     else:
         put.assertEqual(
             self._expected_single_dep_value.value_post_sds(tcds.sds),
             actual.value_post_sds(tcds.sds),
             message_builder.apply('value_post_sds'))
     self._check_custom_single(put, actual, tcds, message_builder)
Example #31
0
    def _apply(self,
               put: unittest.TestCase,
               value,
               message_builder: asrt.MessageBuilder):
        put.assertIsInstance(value, SymbolStringFragmentSdv)
        assert isinstance(value, SymbolStringFragmentSdv)  # Type info for IDE

        put.assertFalse(value.is_string_constant,
                        message_builder.apply('is_string_constant'))

        put.assertEqual(self.expected.symbol_name,
                        value.symbol_name,
                        message_builder.apply('symbol_name'))
 def _apply(self, put: unittest.TestCase, value: SubProcessResult,
            message_builder: asrt.MessageBuilder):
     put.assertIsInstance(
         value, SubProcessResult,
         message_builder.for_sub_component('class of result object').apply(
             'Expects ' + str(SubProcessResult)))
     msg_info = _err_msg_info(value)
     put.assertEqual(
         self.expected.exit_code, value.exitcode,
         message_builder.for_sub_component('exitcode').apply(msg_info))
     put.assertEqual(
         self.expected.exit_identifier + '\n', value.stdout,
         message_builder.for_sub_component('exit identifier').apply(
             msg_info))
Example #33
0
    def _apply(
        self,
        put: unittest.TestCase,
        value: List[str],
        message_builder: MessageBuilder,
    ):
        key_msg = message_builder.apply('key')
        val_msg = message_builder.apply('value')

        actual_as_dict = self._dict_from_lines(value)

        for ek, ev in self.expected_sub_set.items():
            put.assertIn(ek, actual_as_dict, key_msg)
            put.assertEqual(ev, actual_as_dict[ek], val_msg)
    def _check_sub_class_properties(self,
                                    put: unittest.TestCase,
                                    actual: DirDependentValue,
                                    tcds: HomeAndSds,
                                    message_builder: asrt.MessageBuilder):
        put.assertIsInstance(actual,
                             MultiDirDependentValue,
                             message_builder.apply('class'))
        assert isinstance(actual, MultiDirDependentValue)  # Type info for IDE

        actual_dir_dependencies = actual.dir_dependencies()
        asrt.equals(self._dir_dependencies).apply(put,
                                                  actual_dir_dependencies,
                                                  message_builder.for_sub_component('dir_dependencies'))
Example #35
0
 def _check_custom(self,
                   put: unittest.TestCase,
                   actual: SingleDirDependentValue,
                   home_and_sds: HomeAndSds,
                   message_builder: asrt.MessageBuilder):
     if self._expected.exists_pre_sds():
         put.assertEqual(self._expected_single_dep_value.value_pre_sds(home_and_sds.hds),
                         actual.value_pre_sds(home_and_sds.hds),
                         message_builder.apply('value_pre_sds'))
     else:
         put.assertEqual(self._expected_single_dep_value.value_post_sds(home_and_sds.sds),
                         actual.value_post_sds(home_and_sds.sds),
                         message_builder.apply('value_post_sds'))
     self._check_custom_single(put, actual, home_and_sds, message_builder)
Example #36
0
    def _apply(self, put: unittest.TestCase, value,
               message_builder: MessageBuilder):
        put.assertIsInstance(value, SequenceRenderer,
                             message_builder.apply('object type'))
        assert isinstance(value, SequenceRenderer)

        rendered_objects = value.render_sequence()

        self._type_sanity_object_assertion.apply(
            put, rendered_objects,
            message_builder.for_sub_component('rendered objects'))

        self._custom_assertion.apply(
            put, rendered_objects,
            message_builder.for_sub_component('rendered objects'))
    def _apply(self, put: unittest.TestCase, value: Node,
               message_builder: MessageBuilder):
        self._assert_object_types(put, value, message_builder)

        self._header.apply(put, value.header,
                           message_builder.for_sub_component('header'))

        self._data.apply(put, value.data,
                         message_builder.for_sub_component('data'))

        self._details.apply(put, value.details,
                            message_builder.for_sub_component('details'))

        self._children.apply(put, value.children,
                             message_builder.for_sub_component('children'))
    def _apply(self,
               put: unittest.TestCase,
               value: PreOrPostSdsValidator,
               message_builder: MessageBuilder):
        environment = PathResolvingEnvironmentPreOrPostSds(self.tcds, self.symbols)

        validation_result = value.validate_pre_sds_if_applicable(environment)
        self.expectation.pre_sds.apply_with_message(put,
                                                    validation_result,
                                                    message_builder.apply('pre sds validation'))
        if validation_result is None:
            validation_result = value.validate_post_sds_if_applicable(environment)
            self.expectation.post_sds.apply_with_message(put,
                                                         validation_result,
                                                         message_builder.apply('post sds validation'))
 def _apply(self,
            put: unittest.TestCase,
            value: SubProcessResult,
            message_builder: asrt.MessageBuilder):
     put.assertIsInstance(value,
                          SubProcessResult,
                          message_builder.for_sub_component('class of result object').apply(
                              'Expects ' + str(SubProcessResult)))
     msg_info = _err_msg_info(value)
     put.assertEqual(self.expected.exit_code,
                     value.exitcode,
                     message_builder.for_sub_component('exitcode').apply(msg_info))
     put.assertEqual(self.expected.exit_identifier + '\n',
                     value.stdout,
                     message_builder.for_sub_component('exit identifier').apply(msg_info))
 def _apply(self, put: unittest.TestCase, value,
            message_builder: asrt.MessageBuilder):
     is_target_info.apply(put, value, message_builder)
     assert isinstance(value, TargetInfo)
     put.assertEqual(self.expected.presentation_text.value,
                     value.presentation_text.value,
                     message_builder.apply('presentation_str'))
     put.assertIsInstance(
         value.target, CrossReferenceTarget,
         'Actual value is not a ' + str(CrossReferenceTarget))
     expected_target = self.expected.target
     assert isinstance(expected_target, CrossReferenceTarget)
     assertion = self.mk_equals_cross_ref_id(expected_target)
     assertion.apply(put, value.target,
                     message_builder.for_sub_component('target'))
Example #41
0
    def _check_resolved_value(self, put: unittest.TestCase,
                              actual: DependenciesAwareDdv, tcds: TestCaseDs,
                              message_builder: asrt.MessageBuilder):
        assertion_on_resolved_value = self.resolved_value(tcds)

        if not actual.has_dir_dependency():
            actual_resolved_value = actual.value_when_no_dir_dependencies()
            assertion_on_resolved_value.apply(
                put, actual_resolved_value,
                message_builder.for_sub_component('resolved primitive value'))

        actual_resolved_value = actual.value_of_any_dependency(tcds)
        assertion_on_resolved_value.apply(
            put, actual_resolved_value,
            message_builder.for_sub_component('resolved primitive value'))
 def _apply(self,
            put: unittest.TestCase,
            value: spe.ResultAndStderr,
            message_builder: asrt.MessageBuilder):
     put.assertIsInstance(value, spe.ResultAndStderr)
     put.assertTrue(value.result.is_success,
                    message_builder.apply('Result is expected to indicate success'))
Example #43
0
 def _check_existence(self,
                      put: unittest.TestCase,
                      actual: DirDependentValue,
                      message_builder: asrt.MessageBuilder):
     put.assertEqual(self._expected.exists_pre_sds(),
                     actual.exists_pre_sds(),
                     message_builder.apply('exists_pre_sds'))
Example #44
0
 def _check_type(self,
                 put: unittest.TestCase,
                 actual,
                 message_builder: asrt.MessageBuilder
                 ):
     put.assertIsInstance(actual, self._expected_type,
                          message_builder.apply('Actual value is expected to be a ' + str(self._expected_type)))
Example #45
0
def check(
    put: unittest.TestCase,
    mk_transformer: Callable[[StringSource], StringSource],
    source_may_depend_on_external_resources: bool,
    num_initial_freeze_invocations: int,
    tmp_file_space: DirFileSpace,
    source_model_method_invocations: Assertion[Sequence[StringSourceMethod]],
    message_builder: asrt.MessageBuilder = asrt.new_message_builder(),
    source_model_contents: str = '1\n2\n3\n',
):
    source_model_invocations_recorder = _new_recording_media()

    source_model = string_sources.of_string(
        source_model_contents, tmp_file_space,
        source_may_depend_on_external_resources)
    source_model_w_invocations_recording = string_sources.StringSourceThatRecordsMethodInvocations(
        source_model,
        source_model_invocations_recorder,
    )
    checked_string_source = mk_transformer(
        source_model_w_invocations_recording)
    # ACT #
    _invoke_freeze(checked_string_source, num_initial_freeze_invocations)
    _invoke_every_contents_method(checked_string_source)
    # ASSERT #
    source_model_method_invocations.apply(
        put, source_model_invocations_recorder.recordings,
        message_builder.for_sub_component(
            'invoked methods of the source model'))
Example #46
0
 def _apply(
     self,
     put: unittest.TestCase,
     value: ApplicationEnvironmentDependentValue[StringTransformer],
     message_builder: MessageBuilder,
 ):
     string_transformer = value.primitive(self._environment.app_env)
     for source_model_may_depend_on_external_resources in [False, True]:
         for num_invocations_of_freeze_before_check in [1, 2]:
             case_msg_builder = (message_builder.for_sub_component(
                 'source_model_may_depend_on_external_resources=' +
                 str(source_model_may_depend_on_external_resources)
             ).for_sub_component(
                 str(num_invocations_of_freeze_before_check) +
                 ' invocations of freeze before check'))
             check(
                 put,
                 string_transformer.transform,
                 source_model_may_depend_on_external_resources,
                 num_invocations_of_freeze_before_check,
                 self._environment.app_env.tmp_files_space,
                 source_model_method_invocations=self.
                 _source_model_method_invocations,
                 message_builder=case_msg_builder,
             )
 def _apply(self,
            put: unittest.TestCase,
            value,
            message_builder: asrt.MessageBuilder):
     put.assertIsInstance(value, type(self.expected), message_builder.apply('type of CrossReferenceId'))
     equality_checker = _CrossReferenceIdEqualsWhenClassIsEqual(self.expected, put, message_builder)
     equality_checker.visit(value)
Example #48
0
 def _check_custom_dependencies(self,
                                put: unittest.TestCase,
                                actual: MultiDirDependentValue,
                                home_and_sds: HomeAndSds,
                                message_builder: asrt.MessageBuilder):
     put.assertEqual(self._expected_multi_dep_value.dir_dependencies(),
                     actual.dir_dependencies(),
                     message_builder.apply('dir_dependency'))
Example #49
0
 def __init__(self,
              put: unittest.TestCase,
              message_builder: asrt.MessageBuilder,
              actual: StringTransformer,
              description: str):
     self.put = put
     self.message_builder = message_builder.with_description(description)
     self.actual = actual
 def _check_custom_multi(self,
                         put: unittest.TestCase,
                         actual: MultiDirDependentValue,
                         home_and_sds: HomeAndSds,
                         message_builder: asrt.MessageBuilder):
     assert isinstance(actual, StringValue)
     fragments_assertion = asrt.matches_sequence(self._sequence_of_fragment_assertions)
     fragments_assertion.apply(put, actual.fragments, message_builder.for_sub_component('fragments'))
Example #51
0
 def _check_relativity(self,
                       put: unittest.TestCase,
                       actual_file_ref: FileRef,
                       message_builder: asrt.MessageBuilder):
     expected = self._expected.relativity()
     actual = actual_file_ref.relativity()
     assertion = equals_path_relativity(expected)
     assertion.apply(put, actual, message_builder.for_sub_component('specific_relativity'))
 def _apply(self,
            put: unittest.TestCase,
            value,
            message_builder: asrt.MessageBuilder):
     put.assertIsInstance(value, spe.ResultAndStderr)
     put.assertEqual(self.stderr_contents,
                     value.stderr_contents,
                     message_builder.apply('Stderr contents'))
 def _apply(self,
            put: unittest.TestCase,
            value,
            message_builder: asrt.MessageBuilder):
     put.assertIsInstance(value, spe.ResultAndStderr)
     put.assertEqual(self.exit_code,
                     value.result.exit_code,
                     message_builder.apply('Exit code'))
Example #54
0
 def _apply(self,
            put: unittest.TestCase,
            value: HomeAndSds,
            message_builder: asrt.MessageBuilder):
     relativity_root = REL_OPTIONS_MAP[self.relativity].root_resolver.from_home_and_sds(value)
     put.assertEqual(relativity_root / self.expected_sub_dir_of_act_dir,
                     pathlib.Path.cwd(),
                     message_builder.apply('CWD expected to be sub-dir of ' + str(self.relativity)))
    def _check_resolved_value(self,
                              put: unittest.TestCase,
                              actual: DirDependentValue,
                              tcds: HomeAndSds,
                              message_builder: asrt.MessageBuilder):
        assertion_on_resolved_value = self.resolved_value(tcds)

        if not actual.has_dir_dependency():
            actual_resolved_value = actual.value_when_no_dir_dependencies()
            assertion_on_resolved_value.apply(put,
                                              actual_resolved_value,
                                              message_builder.for_sub_component('resolved primitive value'))

        actual_resolved_value = actual.value_of_any_dependency(tcds)
        assertion_on_resolved_value.apply(put,
                                          actual_resolved_value,
                                          message_builder.for_sub_component('resolved primitive value'))
Example #56
0
 def __init__(self,
              put: unittest.TestCase,
              message_builder: asrt.MessageBuilder,
              actual: LineMatcher,
              description: str):
     self.put = put
     self.actual = actual
     self.message_builder = message_builder.with_description(description)
 def _apply(self,
            put: unittest.TestCase,
            value,
            message_builder: asrt.MessageBuilder):
     is_target_info.apply(put, value, message_builder)
     assert isinstance(value, TargetInfo)
     put.assertEqual(self.expected.presentation_text.value,
                     value.presentation_text.value,
                     message_builder.apply('presentation_str'))
     put.assertIsInstance(value.target, CrossReferenceTarget,
                          'Actual value is not a ' + str(CrossReferenceTarget))
     expected_target = self.expected.target
     assert isinstance(expected_target, CrossReferenceTarget)
     assertion = self.mk_equals_cross_ref_id(expected_target)
     assertion.apply(put,
                     value.target,
                     message_builder.for_sub_component('target'))
Example #58
0
 def _check_custom_dependencies(self,
                                put: unittest.TestCase,
                                actual: SingleDirDependentValue,
                                home_and_sds: HomeAndSds,
                                message_builder: asrt.MessageBuilder):
     put.assertEqual(self._expected_single_dep_value.resolving_dependency(),
                     actual.resolving_dependency(),
                     message_builder.apply('resolving_dependency'))
Example #59
0
    def _check_value(self,
                     put: unittest.TestCase,
                     actual: DirDependentValue,
                     home_and_sds: HomeAndSds,
                     message_builder: asrt.MessageBuilder):
        if not self._expected.has_dir_dependency():
            expected = self._expected.value_when_no_dir_dependencies()
            assertion = self._value_assertion_from_expected(expected)
            assertion.apply(put,
                            actual.value_when_no_dir_dependencies(),
                            message_builder.for_sub_component('value_when_no_dir_dependencies'))

        expected = self._expected.value_of_any_dependency(home_and_sds)
        assertion = self._value_assertion_from_expected(expected)
        assertion.apply(put,
                        actual.value_of_any_dependency(home_and_sds),
                        message_builder.for_sub_component('value_of_any_dependency'))
    def _apply(self,
               put: unittest.TestCase,
               value: SubProcessResult,
               message_builder: asrt.MessageBuilder):
        put.assertIsInstance(value,
                             SubProcessResult,
                             message_builder.for_sub_component('class of result object').apply(
                                 'Expects ' + str(SubProcessResult)))
        msg_info = _err_msg_info(value)
        self._exitcode.apply(put, value.exitcode,
                             message_builder.for_sub_component('exitcode' + msg_info))

        self._stdout.apply(put, value.stdout,
                           message_builder.for_sub_component('stdout' + msg_info))

        self._stderr.apply(put, value.stderr,
                           message_builder.for_sub_component('stderr' + msg_info))