def test_fail_when_pattern_matches_dir_components(self): # ARRANGE # cases = [ NEA( 'pattern that matches path components', False, Actual( arg.Name(arg.NameGlobPatternVariant( 'dir-name/*.txt')).as_arguments, pathlib.Path('dir-name') / 'file.txt', )), NEA( 'pattern with zero-or-more-dirs pattern', False, Actual( arg.Name( arg.NameGlobPatternVariant('**/*.txt')).as_arguments, pathlib.Path('dir-name') / 'file.txt', )), ] # ACT & ASSERT # self._check_cases__with_source_variants(cases)
def runTest(self): any_char_glob_pattern_string_symbol = StringSymbolContext.of_constant( 'glob_pattern_string_symbol', '*') arguments = arg.Name( arg.NameGlobPatternVariant( 'AB' + any_char_glob_pattern_string_symbol.name__sym_ref_syntax)) integration_check.CHECKER__PARSE_FULL.check__w_source_variants( self, arguments=arguments.as_arguments, input_=integration_check.constant_relative_file_name('ABC'), arrangement=arrangement_w_tcds( symbols=any_char_glob_pattern_string_symbol.symbol_table), expectation=Expectation( ParseExpectation(symbol_references=asrt.matches_sequence([ is_reference_to__regex_string_part( any_char_glob_pattern_string_symbol.name), ]), ), ExecutionExpectation( main_result=asrt_matching_result.matches_value(True)), ))
def test_base_name(self): # ARRANGE # cases = [ NEA( 'exact match', True, Actual( arg.Name( arg.NameGlobPatternVariant('pattern')).as_arguments, pathlib.Path('pattern'), )), NEA( 'exact match - with ignored dir component', True, Actual( arg.Name( arg.NameGlobPatternVariant('base-name')).as_arguments, pathlib.Path('dir') / 'base-name', )), NEA( 'any-string pattern matching the whole name', True, Actual( arg.Name( arg.NameGlobPatternVariant('*PATTERN*')).as_arguments, pathlib.Path('before PATTERN after'), )), NEA( 'character set', True, Actual( arg.Name( arg.NameGlobPatternVariant('[123]x')).as_arguments, pathlib.Path('1x'), )), NEA( 'negated character set', True, Actual( arg.Name( arg.NameGlobPatternVariant('[!123]x')).as_arguments, pathlib.Path('ax'), )), NEA( 'character range', True, Actual( arg.Name( arg.NameGlobPatternVariant('[1-3]x')).as_arguments, pathlib.Path('2x'), )), NEA( 'pattern matching the end of the name', False, Actual( arg.Name(arg.NameGlobPatternVariant('end')).as_arguments, pathlib.Path('start middle end'), )), NEA( 'pattern matching the start of the name', False, Actual( arg.Name(arg.NameGlobPatternVariant('start')).as_arguments, pathlib.Path('start middle end'), )), NEA( 'pattern matching the start of the name', False, Actual( arg.Name( arg.NameGlobPatternVariant('middle')).as_arguments, pathlib.Path('start middle end'), )), NEA( 'not match, because pattern is not in base name', False, Actual( arg.Name( arg.NameGlobPatternVariant('expected')).as_arguments, pathlib.Path('actual'), )), ] # ACT & ASSERT # self._check_cases__with_source_variants(cases)
def runTest(self): arguments = arg.Name(arg.NameGlobPatternVariant('')) self._assert_failing_parse(arguments.as_remaining_source)
def runTest(self): # ARRANGE # cases = [ NEA( 'exact match, only base name', True, Actual( arg.Path( arg.NameGlobPatternVariant('base-name')).as_arguments, pathlib.Path('dir') / 'base-name', )), NEA( 'exact match, w dir', True, Actual( arg.Path(arg.NameGlobPatternVariant( 'dir/base-name')).as_arguments, pathlib.Path('dir') / 'base-name', )), NEA( 'glob pattern matching one-and-only component', True, Actual( arg.Path( arg.NameGlobPatternVariant('*PATTERN*')).as_arguments, pathlib.Path('before PATTERN after'), )), NEA( 'any-string pattern should match', True, Actual( arg.Path(arg.NameGlobPatternVariant('*')).as_arguments, pathlib.Path('dir') / 'base-name', )), NEA( 'any-string pattern should not stretch over components', False, Actual( arg.Path( arg.NameGlobPatternVariant('dir*base')).as_arguments, pathlib.Path('dir') / 'base', )), NEA( 'not match, because pattern is neither in dir name nor in base name', False, Actual( arg.Path( arg.NameGlobPatternVariant('expected')).as_arguments, pathlib.Path('dir-name') / 'file.txt', )), NEA( 'multiple dirs pattern - full match', True, Actual( arg.Path(arg.NameGlobPatternVariant( 'dir1/*/*.txt')).as_arguments, pathlib.Path('dir1') / 'dir2' / 'file.txt', )), NEA( 'multiple dirs pattern - suffix match do match', True, Actual( arg.Path( arg.NameGlobPatternVariant('dir2/*.txt')).as_arguments, pathlib.Path('dir1') / 'dir2' / 'file.txt', )), NEA( 'multiple dir pattern - prefix match do not match', False, Actual( arg.Path(arg.NameGlobPatternVariant('dir1')).as_arguments, pathlib.Path('dir1') / 'dir2' / 'file.txt', )), NEA( 'multiple dir pattern - infix match do not match', False, Actual( arg.Path(arg.NameGlobPatternVariant('dir2')).as_arguments, pathlib.Path('dir1') / 'dir2' / 'file.txt', )), NEA( 'pattern with arbitrary dir name', True, Actual( arg.Path(arg.NameGlobPatternVariant( 'dir1/*/file.txt')).as_arguments, pathlib.Path('dir1') / 'dir2' / 'file.txt', )), ] # ACT & ASSERT # self._check_cases__with_source_variants(cases)