def of_str(system_command: str, arguments: Sequence[ArgumentAbsStx] = (), ) -> 'RawSystemCommandLineAbsStx': return RawSystemCommandLineAbsStx( str_abs_stx.StringLiteralAbsStx(system_command), arguments, )
class ValueWSymRefsAndVarRefs: REFERENCED_VAR_1 = NameAndValue('existing_var_1', '<val of existing 1>') REFERENCED_VAR_2 = NameAndValue('existing_var_2', '<val of existing 2>') REFERENCED_VAR__ALL = [REFERENCED_VAR_1, REFERENCED_VAR_2] VALUE_PATTERN = '{}between{}' VALUE_W_VAR_REFS = VALUE_PATTERN.format( env_var_ref_syntax(REFERENCED_VAR_1.name), env_var_ref_syntax(REFERENCED_VAR_2.name), ) VALUE_WO_VAR_REFS = VALUE_PATTERN.format( REFERENCED_VAR_1.value, REFERENCED_VAR_2.value, ) POS_OF_END_OF_VAR_REF_1 = end_of_1st_var_ref(VALUE_W_VAR_REFS) SYM_REF_PART_1 = StringConstantSymbolContext( 'VAL_SYM_1', VALUE_W_VAR_REFS[:4], default_restrictions=asrt_w_str_rend_rest.is__w_str_rendering(), ) CONST_STR_PART_2 = VALUE_W_VAR_REFS[4:(POS_OF_END_OF_VAR_REF_1 + 5)] SYM_REF_PART_3 = StringConstantSymbolContext( 'VAL_SYM_3', VALUE_W_VAR_REFS[(POS_OF_END_OF_VAR_REF_1 + 5):], default_restrictions=asrt_w_str_rend_rest.is__w_str_rendering(), ) SYMBOL_CONTEXTS = (SYM_REF_PART_1, SYM_REF_PART_3) STRING_ABS_STX = str_abs_stx.StringConcatAbsStx([ SYM_REF_PART_1.abstract_syntax, str_abs_stx.StringLiteralAbsStx(CONST_STR_PART_2), SYM_REF_PART_3.abstract_syntax, ])
def of_str( argument: str, quoting: Optional[QuoteType] = None, ) -> 'ArgumentOfRichStringAbsStx': return ArgumentOfRichStringAbsStx( _rs_abs_stx.PlainStringAbsStx( str_abs_stx.StringLiteralAbsStx(argument, quoting)))
def of_str(system_command: str, arguments: Sequence[ArgumentAbsStx] = (), ) -> PgmAndArgsAbsStx: return ProgramOfSystemCommandLineAbsStx( str_abs_stx.StringLiteralAbsStx(system_command), arguments, )
def test_fail_when_missing_end_quote(self): # ARRANGE # string_w_missing_end_quote = StringSourceOfStringAbsStx.of_plain( str_abs_stx.StringLiteralAbsStx(SOFT_QUOTE_CHAR + 'contents')) # ACT & ASSERT # parse_check.checker().check_invalid_syntax__abs_stx( self, string_w_missing_end_quote)
def test_contents_from_string__w_dst_relativity_variants(self): # ARRANGE # string_value = str_abs_stx.StringLiteralAbsStx('the_string_value') expected_file = fs.File('a-file-name.txt', string_value.value) for phase_is_after_act in [False, True]: checker = integration_check.checker(phase_is_after_act) for rel_opt_conf in ALLOWED_DST_FILE_RELATIVITIES: dst_path = rel_opt_conf.path_abs_stx_of_name( expected_file.name) instruction_syntax = instr_abs_stx.create_w_explicit_contents( dst_path, string_source_abs_stx.StringSourceOfStringAbsStx.of_plain( string_value), ) with self.subTest( relativity_option_string=rel_opt_conf.option_string, phase_is_after_act=phase_is_after_act): # ACT & ASSERT # checker.check__abs_stx__std_layouts_and_source_variants( self, instruction_syntax, Arrangement.phase_agnostic(tcds=TcdsArrangement( pre_population_action= SETUP_CWD_INSIDE_SDS_BUT_NOT_A_SDS_DIR__PLAIN, ), ), MultiSourceExpectation.phase_agnostic( main_result=IS_SUCCESS, side_effects_on_hds=f_asrt.dir_is_empty(), symbol_usages=asrt.is_empty_sequence, main_side_effects_on_sds= non_hds_dir_contains_exactly( rel_opt_conf.root_dir__non_hds, fs.DirContents([expected_file])), ))
def stdin_cases() -> Sequence[NameAndValue[StringSourceAbsStx]]: return [ NameAndValue( 'string with missing end quote', StringSourceOfStringAbsStx.of_plain( str_abs_stx.StringLiteralAbsStx( QUOTE_CHAR_FOR_TYPE[QuoteType.SOFT] + 'after quote'))), ]
def test_fail_when_missing_end_end_paren(self): # ARRANGE # valid_string = str_abs_stx.StringLiteralAbsStx('contents') missing_end_paren = CustomAbsStx( TokenSequence.concat([ TokenSequence.singleton('('), valid_string.tokenization(), ])) # ACT & ASSERT # parse_check.checker().check_invalid_syntax__abs_stx( self, OptionallyOnNewLine(missing_end_paren))
def singleton_string__str(element: str, quoting: Optional[QuoteType] = None, ) -> 'NonEmptyListAbsStx': return NonEmptyListAbsStx.singleton_string( str_abs_stx.StringLiteralAbsStx(element, quoting) )
def of_str(value: str, quoting: Optional[QuoteType] = None, ) -> 'ListElementStringAbsStx': return ListElementStringAbsStx( str_abs_stx.StringLiteralAbsStx(value, quoting) )
def symbol_ref_syntax_2_contents_arguments( syntax: str) -> StringSourceAbsStx: string_value = string_value_template.format(symbol=syntax) return StringSourceOfStringAbsStx.of_plain( str_abs_stx.StringLiteralAbsStx(string_value, QuoteType.SOFT))
def of_plain_string(command_line: str) -> 'ProgramOfShellCommandLineAbsStx': return ProgramOfShellCommandLineAbsStx(str_abs_stx.StringLiteralAbsStx(command_line))
def of_str( s: str, quoting: Optional[QuoteType] = None ) -> 'StringSourceOfStringAbsStx': return StringSourceOfStringAbsStx.of_plain( str_abs_stx.StringLiteralAbsStx(s, quoting))