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))
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 _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'))
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'), )
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'))
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)
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'))
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')
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'))
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'))
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'))
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 _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'))
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'))
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'))
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)'))
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'))
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'))
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'))
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'))
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'))
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, 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'))
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'))
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)
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))
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'))
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)
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'))
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'))
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'))
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)))
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'))
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)
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'))
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'))
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'))
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'))
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'))
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'))
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))