示例#1
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'),
        )
示例#2
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'))
示例#3
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)))
    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'))
示例#5
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)
示例#6
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'))
示例#7
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'))
示例#8
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'))
示例#9
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'))
 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: 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))
示例#12
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: 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'))
示例#14
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'))
示例#15
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'))
示例#16
0
 def _contents_related(
     self,
     put: unittest.TestCase,
     constructor: SourceConstructor,
     message_builder: MessageBuilder,
 ):
     for contents_access_sequence_case in self._contents_access_sequence_cases:
         case_message_builder = message_builder.for_sub_component(
             contents_access_sequence_case.name)
         ext_dep_case_message_builder = case_message_builder.for_sub_component(
             'may-dep-on-ext-rsrc-first')
         with constructor.new(
                 put, ext_dep_case_message_builder) as string_source:
             self._contents_related__ext_deps_first(
                 put,
                 contents_access_sequence_case.value,
                 string_source.contents(),
                 ext_dep_case_message_builder,
             )
         ext_dep_case_message_builder = case_message_builder.for_sub_component(
             'may-dep-on-ext-rsrc-last')
         with constructor.new(
                 put, ext_dep_case_message_builder) as string_source:
             self._contents_related__ext_deps_last(
                 put,
                 contents_access_sequence_case.value,
                 string_source.contents(),
                 ext_dep_case_message_builder,
             )
    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))
示例#18
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'))
示例#19
0
 def _apply(self, put: unittest.TestCase, value,
            message_builder: MessageBuilder):
     put.assertIsInstance(value, ResultWithTransformationData,
                          message_builder.apply("result object class"))
     assert isinstance(value,
                       ResultWithTransformationData)  # Type info for IDE
     pr = value.process_result
     self.exitcode.apply(put, pr.exitcode,
                         message_builder.for_sub_component('exitcode'))
     self.stdout_contents.apply(put, pr.stdout,
                                message_builder.for_sub_component('stdout'))
     self.stderr_contents.apply(put, pr.stderr,
                                message_builder.for_sub_component('stderr'))
     self.contents_after_transformation.apply(
         put, value.result_of_transformation,
         message_builder.for_sub_component('contents_after_transformation'))
示例#20
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,
             )
示例#21
0
    def _check_value(self, put: unittest.TestCase,
                     actual: DependenciesAwareDdv, tcds: TestCaseDs,
                     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(tcds)
        assertion = self._value_assertion_from_expected(expected)
        assertion.apply(
            put, actual.value_of_any_dependency(tcds),
            message_builder.for_sub_component('value_of_any_dependency'))
示例#22
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'))
示例#23
0
 def _check_custom_multi(self, put: unittest.TestCase,
                         actual: MultiDependenciesDdv, tcds: TestCaseDs,
                         message_builder: asrt.MessageBuilder):
     assert isinstance(actual, ListDdv)
     elements_assertion = asrt.matches_sequence(
         self._sequence_of_element_assertions)
     elements_assertion.apply(put, actual.string_elements,
                              message_builder.for_sub_component('elements'))
    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))
示例#25
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 _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'))
 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'))
示例#28
0
 def _apply(self,
            put: unittest.TestCase,
            value: str,
            message_builder: MessageBuilder,
            ):
     unquoted = shlex.split(value)
     num_quoted_elements = asrt.len_equals(1)
     num_quoted_elements.apply(
         put,
         unquoted,
         message_builder.for_sub_component('number of quoted elements')
     )
     self._unquoted.apply(
         put,
         unquoted[0],
         message_builder.for_sub_component('unquoted')
     )
示例#29
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'))
示例#30
0
 def _apply(self, put: unittest.TestCase, value: LineMatcher,
            message_builder: MessageBuilder):
     # ACT #
     actual = line_nums_interval.interval_of_matcher(value)
     # ASSERT #
     self._expected.apply(
         put, actual,
         message_builder.for_sub_component('interval_of_matcher'))
示例#31
0
    def _apply(self, put: unittest.TestCase, value: FailureDetails,
               message_builder: MessageBuilder):
        put.assertIsNotNone(value, message_builder.apply('must not be none'))
        put.assertIsInstance(value, FailureDetails,
                             message_builder.apply('type of object'))

        if self._error_message_or_none is not None:
            message_comp_builder = message_builder.for_sub_component(
                'failure message')
            put.assertIsNotNone(value.failure_message, message_comp_builder)

            self._error_message_or_none.apply(
                put, value.failure_message,
                message_comp_builder.for_sub_component('text-doc'))

        self._exception_or_none.apply(
            put, value.exception,
            message_builder.for_sub_component('exception'))
示例#32
0
 def _apply(self, put: unittest.TestCase, value: T,
            message_builder: MessageBuilder):
     with put.assertRaises(HardErrorException) as cx:
         self._method_that_should_raise(value)
     asrt_text_doc.is_any_text().apply(
         put,
         cx.exception.error,
         message_builder.for_sub_component('error message'),
     )
示例#33
0
def check(put: unittest.TestCase,
          actual: PreOrPostSdsValidator,
          arrangement: Arrangement,
          expectation: Expectation,
          message_builder: asrt.MessageBuilder = asrt.MessageBuilder()):
    with home_and_sds_with_act_as_curr_dir(
            home_or_sds_contents=arrangement.dir_contents,
            symbols=arrangement.symbols) as path_resolving_environment:
        actual_validation_result = actual.validate_pre_sds_if_applicable(path_resolving_environment)
        expectation.pre_sds.apply(put,
                                  actual_validation_result,
                                  message_builder.for_sub_component('validation pre sds'))
        if actual_validation_result is not None:
            return
        actual_validation_result = actual.validate_post_sds_if_applicable(path_resolving_environment)
        expectation.post_sds.apply(put,
                                   actual_validation_result,
                                   message_builder.for_sub_component('validation post sds'))
 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'))
示例#35
0
    def _apply(self,
               put: unittest.TestCase,
               value: rs.SymbolValueResolver,
               message_builder: asrt.MessageBuilder):
        put.assertIsInstance(value, rs.SymbolValueResolver,
                             message_builder.apply("resolver type"))

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

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

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

        resolved_value = value.resolve(self.symbols)

        self.resolved_value.apply(put, resolved_value,
                                  message_builder.for_sub_component('resolved value'))
示例#36
0
def check(put: unittest.TestCase,
          actual: DdvValidator,
          arrangement: Arrangement,
          expectation: Expectation,
          message_builder: asrt.MessageBuilder = asrt.MessageBuilder()):
    with tcds_with_act_as_curr_dir_2(
            tcds_contents=arrangement.dir_contents) as tcds:
        actual_validation_result = actual.validate_pre_sds_if_applicable(
            tcds.hds)
        expectation.pre_sds.apply(
            put, actual_validation_result,
            message_builder.for_sub_component('validation pre sds'))
        if actual_validation_result is not None:
            return
        actual_validation_result = actual.validate_post_sds_if_applicable(tcds)
        expectation.post_sds.apply(
            put, actual_validation_result,
            message_builder.for_sub_component('validation post sds'))
    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))
示例#38
0
    def _check_resolved_value(self, put: unittest.TestCase,
                              actual: DirDependentValue, tcds: TestCaseDs,
                              message_builder: asrt.MessageBuilder):
        assertion_on_resolved_value = self.resolved_value(tcds)

        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'))
示例#39
0
 def _apply(
     self,
     put: unittest.TestCase,
     value: FileMatcher,
     message_builder: MessageBuilder,
 ):
     actual = value.matches_w_trace(self.MODEL)
     asrt_matching_result.matches_value(self.expected).apply(
         put, actual,
         message_builder.for_sub_component('application result'))
示例#40
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'))
示例#41
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'))
    def _check_resolving_dependencies(self,
                                      put: unittest.TestCase,
                                      actual: DirDependentValue,
                                      message_builder: asrt.MessageBuilder):
        self.resolving_dependencies.apply(put,
                                          actual.resolving_dependencies(),
                                          message_builder.for_sub_component('resolving_dependencies'))
        actual_resolving_dependencies = actual.resolving_dependencies()

        as_dir_dependency_assertion = asrt.equals(bool(actual_resolving_dependencies))
        as_dir_dependency_assertion.apply(put,
                                          actual.has_dir_dependency(),
                                          message_builder.for_sub_component('has_dir_dependency'))

        should_exist_pre_sds = (not actual_resolving_dependencies
                                or
                                actual_resolving_dependencies == {DirectoryStructurePartition.HOME})
        asrt.equals(should_exist_pre_sds).apply(put,
                                                actual.exists_pre_sds(),
                                                message_builder.for_sub_component('exists_pre_sds'))
 def _apply(self,
            put: unittest.TestCase,
            value,
            message_builder: MessageBuilder):
     put.assertIsInstance(value, ResultWithTransformationData,
                          message_builder.apply("result object class"))
     assert isinstance(value, ResultWithTransformationData)  # Type info for IDE
     pr = value.process_result
     self.exitcode.apply(put,
                         pr.exitcode,
                         message_builder.for_sub_component('exitcode'))
     self.stdout_contents.apply(put,
                                pr.stdout,
                                message_builder.for_sub_component('stdout'))
     self.stderr_contents.apply(put,
                                pr.stderr,
                                message_builder.for_sub_component('stderr'))
     self.contents_after_transformation.apply(put,
                                              value.result_of_transformation,
                                              message_builder.for_sub_component('contents_after_transformation'))
 def _apply(self,
            put: unittest.TestCase,
            value,
            message_builder: asrt.MessageBuilder):
     assertion_on_shallow = _equals_target_info_node__shallow(self.expected,
                                                              self.mk_equals_cross_ref_id)
     assertion_on_shallow.apply(put, value, message_builder)
     assert isinstance(value, TargetInfoNode)
     for idx, child in enumerate(self.expected.children):
         assertion = equals_target_info_node(child, self.mk_equals_cross_ref_id)
         assertion.apply(put,
                         value.children[idx],
                         message_builder.for_sub_component('children[%d]' % idx))
    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))

        stderr_lines = value.stderr.split('\n')
        first_line_of_stderr = '' if not stderr_lines else stderr_lines[0]
        put.assertEqual(self.expected.exit_identifier,
                        first_line_of_stderr,
                        message_builder.for_sub_component('exit identifier on stderr').apply(msg_info))

        put.assertEqual('',
                        value.stdout,
                        message_builder.for_sub_component('stdout').apply(msg_info))
示例#46
0
    def _check_custom(self,
                      put: unittest.TestCase,
                      actual: SingleDirDependentValue,
                      home_and_sds: HomeAndSds,
                      message_builder: asrt.MessageBuilder):
        super()._check_custom(put, actual, home_and_sds, message_builder)
        assert isinstance(actual, FileRef)

        self._check_path_suffix(put,
                                actual,
                                message_builder.for_sub_component('path_suffix'))

        self._check_relativity(put, actual, message_builder)
    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'))
 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'))
 def _apply(self,
            put: unittest.TestCase,
            value,
            message_builder: asrt.MessageBuilder):
     put.assertIsInstance(value, Sequence,
                          'Expects a Sequence of symbol references')
     put.assertEqual(len(self._expected),
                     len(value),
                     message_builder.apply('Number of symbol references'))
     for idx, expected_ref in enumerate(self._expected):
         actual_ref = value[idx]
         put.assertIsInstance(actual_ref, su.SymbolReference)
         assert isinstance(actual_ref, su.SymbolReference)
         assert isinstance(expected_ref, su.SymbolReference)
         element_assertion = equals_symbol_reference(expected_ref)
         element_assertion.apply(put,
                                 actual_ref,
                                 message_builder.for_sub_component('[%d]' % idx))