コード例 #1
0
ファイル: glob_pattern.py プロジェクト: emilkarlen/exactly
    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)
コード例 #2
0
ファイル: glob_pattern.py プロジェクト: emilkarlen/exactly
    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)),
            ))
コード例 #3
0
ファイル: glob_pattern.py プロジェクト: emilkarlen/exactly
    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)
コード例 #4
0
ファイル: glob_pattern.py プロジェクト: emilkarlen/exactly
 def runTest(self):
     arguments = arg.Name(arg.NameGlobPatternVariant(''))
     self._assert_failing_parse(arguments.as_remaining_source)
コード例 #5
0
ファイル: glob_pattern.py プロジェクト: emilkarlen/exactly
    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)