Exemple #1
0
 def test_parse_SHOULD_fail_WHEN_initial_token_is_neither_valid_sym_ref_nor_primitive(
         self):
     source = remaining_source(
         symbol_syntax.
         NOT_A_VALID_SYMBOL_NAME_NOR_PRIMITIVE_GRAMMAR_ELEMENT_NAME)
     with self.assertRaises(SingleInstructionInvalidArgumentException):
         sut.parsers().full.parse(source)
Exemple #2
0
 def _expect_parse_exception(
     self,
     source: str,
     must_be_on_current_line: bool,
 ):
     with self.assertRaises(SingleInstructionInvalidArgumentException):
         sut.parsers(must_be_on_current_line).full.parse(
             remaining_source(source))
Exemple #3
0
 def test_parse_SHOULD_fail_WHEN_syntax_is_invalid(self):
     # ARRANGE #
     case_generator = TestCaseGeneratorForParentheses(
         symbol_syntax.A_VALID_SYMBOL_NAME,
         symbol_syntax.
         NOT_A_VALID_SYMBOL_NAME_NOR_PRIMITIVE_GRAMMAR_ELEMENT_NAME,
     )
     for case in case_generator.parse_should_fail_when_syntax_is_invalid():
         with self.subTest(case.name):
             with self.assertRaises(
                     SingleInstructionInvalidArgumentException):
                 sut.parsers().full.parse(case.value)
Exemple #4
0
 def parse(
     self,
     fs_location_info: FileSystemLocationInfo,
     token_parser: TokenParser,
 ) -> SymbolDependentValue:
     return parse_files_condition.parsers().full.parse_from_token_parser(
         token_parser)
Exemple #5
0
            option_syntax.option_syntax(config.SELECTION_OPTION.name),
            grammar.Primitive(_parse_selection, documentation.SelectionDoc())),
        NameAndValue(option_syntax.option_syntax(config.PRUNE_OPTION.name),
                     grammar.Primitive(_parse_prune,
                                       documentation.PruneDoc())),
    ]
    return ret_val


GRAMMAR = standard_expression_grammar.new_grammar(
    concept=grammar.Concept(
        name=types.FILES_MATCHER_TYPE_INFO.name,
        type_system_type_name=types.FILES_MATCHER_TYPE_INFO.identifier,
        syntax_element_name=syntax_elements.FILES_MATCHER_SYNTAX_ELEMENT.
        argument,
    ),
    model=matcher_model.FILES_MATCHER_MODEL,
    value_type=ValueType.FILES_MATCHER,
    simple_expressions=_simple_expressions(),
    model_freezer=combinator_matchers.no_op_freezer,
)

_PARSERS_FOR_MUST_BE_ON_CURRENT_LINE = ep.parsers_for_must_be_on_current_line(
    GRAMMAR)

_FILES_MATCHER_COMPONENT_PARSER = parsers().simple

_FILE_MATCHER_COMPONENT_PARSER = parse_file_matcher.parsers().simple

_FILES_CONDITION_COMPONENT_PARSER = parse_fc.parsers().full
from exactly_lib.impls.types.files_condition import parse
from exactly_lib_test.impls.types.logic.test_resources import integration_check
from exactly_lib_test.type_val_deps.types.files_condition.test_resources.properties_checker import \
    FilesConditionPropertiesConfiguration

CHECKER = integration_check.IntegrationChecker(
    parse.parsers().full,
    FilesConditionPropertiesConfiguration(),
    check_application_result_with_tcds=False,
)
 def runTest(self):
     # ARRANGE #
     cases = [
         NIE(
             'file name reference',
             [
                 is_sym_ref_to_string__w_all_indirect_refs_are_strings(
                     STRING_SYMBOL_NAME)
             ],
             args.FilesCondition([
                 args.FileCondition(
                     SymbolWithReferenceSyntax(STRING_SYMBOL_NAME)),
             ]),
         ),
         NIE(
             'file name reference (embedded)',
             [
                 is_sym_ref_to_string__w_all_indirect_refs_are_strings(
                     STRING_SYMBOL_NAME)
             ],
             args.FilesCondition([
                 args.FileCondition(
                     'file-name-prefix-' +
                     str(SymbolWithReferenceSyntax(STRING_SYMBOL_NAME)) +
                     '-suffix'),
             ]),
         ),
         NIE(
             'file matcher reference',
             [is_reference_to_file_matcher(FILE_MATCHER_SYMBOL_NAME)],
             args.FilesCondition([
                 args.FileCondition(
                     'constant-file-name',
                     fm_args.SymbolReferenceWReferenceSyntax(
                         FILE_MATCHER_SYMBOL_NAME)),
             ]),
         ),
         NIE(
             'file name and file matcher reference',
             [
                 is_sym_ref_to_string__w_all_indirect_refs_are_strings(
                     STRING_SYMBOL_NAME),
                 is_reference_to_file_matcher(FILE_MATCHER_SYMBOL_NAME),
             ],
             args.FilesCondition([
                 args.FileCondition(
                     SymbolWithReferenceSyntax(STRING_SYMBOL_NAME),
                     fm_args.SymbolReferenceWReferenceSyntax(
                         FILE_MATCHER_SYMBOL_NAME)),
             ]),
         ),
         NIE(
             'multiple file name and file matcher reference',
             [
                 is_sym_ref_to_string__w_all_indirect_refs_are_strings(
                     STRING_SYMBOL_NAME),
                 is_reference_to_file_matcher(FILE_MATCHER_SYMBOL_NAME),
                 is_sym_ref_to_string__w_all_indirect_refs_are_strings(
                     STRING_SYMBOL_NAME_2),
                 is_reference_to_file_matcher(FILE_MATCHER_SYMBOL_NAME_2),
             ],
             args.FilesCondition([
                 args.FileCondition(
                     SymbolWithReferenceSyntax(STRING_SYMBOL_NAME),
                     fm_args.SymbolReferenceWReferenceSyntax(
                         FILE_MATCHER_SYMBOL_NAME),
                 ),
                 args.FileCondition(
                     SymbolWithReferenceSyntax(STRING_SYMBOL_NAME_2),
                     fm_args.SymbolReferenceWReferenceSyntax(
                         FILE_MATCHER_SYMBOL_NAME_2),
                 ),
             ]),
         ),
     ]
     for must_be_on_current_line in [False, True]:
         for case in cases:
             with self.subTest(
                     case=case.name,
                     must_be_on_current_line=must_be_on_current_line):
                 # ACT #
                 actual = sut.parsers(must_be_on_current_line).full.parse(
                     case.input_value.as_remaining_source)
                 # ASSERT #
                 expectation = asrt.matches_sequence(case.expected_value)
                 expectation.apply_without_message(
                     self,
                     actual.references,
                 )