Ejemplo n.º 1
0
    def runTest(self):
        # ARRANGE #

        name_of_referenced_symbol = 'FILE_MATCHER_WITH_VALIDATION_FAILURE'

        selection_is_empty_arguments = fsm_args.Selection(
            fm_args2.SymbolReference(name_of_referenced_symbol), args.Empty())

        for case in validation_cases.failing_validation_cases(
                name_of_referenced_symbol):
            symbol_context = case.value.symbol_context

            selection_is_empty_source = selection_is_empty_arguments.as_remaining_source

            # ACT & ASSERT #
            with self.subTest(case.name):
                integration_check.CHECKER__PARSE_FULL.check(
                    self,
                    selection_is_empty_source,
                    model.arbitrary_model(),
                    arrangement_w_tcds(symbols=symbol_context.symbol_table, ),
                    Expectation(
                        ParseExpectation(symbol_references=symbol_context.
                                         references_assertion, ),
                        ExecutionExpectation(
                            validation=case.value.expectation, ),
                    ),
                )
Ejemplo n.º 2
0
 def arguments(self) -> FileMatcherArg:
     return _as_arguments(
         RecWLimArguments(
             fms_args.Selection(fm_args.Type(FileType.REGULAR),
                                self.num_files_setup.num_files_arg()),
             self.min_depth,
             self.max_depth,
         ))
Ejemplo n.º 3
0
    def runTest(self):
        # ARRANGE #
        model_contents = DirContents(
            [File.empty('a file making the model non-empty')])

        file_matcher = FileMatcherSymbolContextOfPrimitiveConstant(
            'FILE_MATCHER_SYMBOL',
            True,
        )
        files_matcher__parsed = FilesMatcherSymbolContext.of_primitive(
            'FILES_MATCHER_1',
            files_matcher_test_impl.FilesMatcherNumFilesTestImpl(
                len(model_contents.file_system_elements)))
        symbols = [file_matcher, files_matcher__parsed]

        files_matcher_bin_op_expr = args.conjunction([
            fm_args2.SymbolReferenceWReferenceSyntax(
                files_matcher__parsed.name),
            args.Custom('after bin op'),
        ])

        arguments = fsm_args.Selection(
            fm_args2.SymbolReferenceWReferenceSyntax(file_matcher.name),
            files_matcher_bin_op_expr,
        )
        model_rel_opt_conf = rel_opt_confs.conf_rel_any(RelOptionType.REL_ACT)
        # ACT & ASSERT #
        integration_check.CHECKER__PARSE_SIMPLE.check(
            self,
            arguments.as_remaining_source,
            model.model_with_rel_root_as_source_path(model_rel_opt_conf),
            arrangement_w_tcds(
                symbols=SymbolContext.symbol_table_of_contexts(symbols),
                tcds_contents=model_rel_opt_conf.
                populator_for_relativity_option_root(model_contents)),
            Expectation(
                ParseExpectation(
                    source=asrt_source.is_at_line(
                        current_line_number=1,
                        remaining_part_of_current_line=' '.join([
                            files_matcher_bin_op_expr.operator,
                            files_matcher_bin_op_expr.operands[1].as_str,
                        ])),
                    symbol_references=SymbolContext.
                    references_assertion_of_contexts(symbols),
                ),
                ExecutionExpectation(
                    main_result=matcher_assertions.is_matching_success(), ),
            ),
        )
Ejemplo n.º 4
0
    def runTest(self):
        # ARRANGE #
        file_matcher_argument = fm_args2.conjunction([
            fm_args2.SymbolReferenceWReferenceSyntax('FILE_MATCHER_SYMBOL_1'),
            fm_args2.SymbolReferenceWReferenceSyntax('FILE_MATCHER_SYMBOL_2'),
        ], )
        files_matcher_argument = args.Empty()

        arguments = args.Selection(file_matcher_argument,
                                   files_matcher_argument)
        for top_level_parser_case in TOP_LEVEL_PARSER_CASES:
            with self.subTest(top_level_parser_case.name):
                # ACT & ASSERT #
                with self.assertRaises(
                        SingleInstructionInvalidArgumentException):
                    top_level_parser_case.value.parse(
                        arguments.as_remaining_source)
Ejemplo n.º 5
0
    def runTest(self):
        # ARRANGE #

        helper = IntegrationCheckHelper()

        argument_cases = [
            NIE(
                'prune followed by selection',
                input_value=fsm_args.Prune(
                    fm_args.SymbolReference(NAME_STARTS_WITH__P1.name),
                    fsm_args.Selection(
                        fm_args.SymbolReference(NAME_STARTS_WITH__S1.name),
                        helper.files_matcher_sym_ref_arg(),
                    ),
                ),
                expected_value=asrt.matches_sequence([
                    NAME_STARTS_WITH__P1.reference_assertion,
                    NAME_STARTS_WITH__S1.reference_assertion,
                    helper.symbol_reference_assertion,
                ]),
            ),
            NIE(
                'selection followed by prune',
                input_value=fsm_args.Selection(
                    fm_args.SymbolReference(NAME_STARTS_WITH__S1.name),
                    fsm_args.Prune(
                        fm_args.SymbolReference(NAME_STARTS_WITH__P1.name),
                        helper.files_matcher_sym_ref_arg(),
                    ),
                ),
                expected_value=asrt.matches_sequence([
                    NAME_STARTS_WITH__S1.reference_assertion,
                    NAME_STARTS_WITH__P1.reference_assertion,
                    helper.symbol_reference_assertion,
                ]),
            ),
        ]

        contents_case = COMBINATION_OF_PRUNE_AND_SELECTION

        # ACT & ASSERT #

        for argument_case in argument_cases:
            with self.subTest(argument_case.name):
                integration_check.CHECKER__PARSE_FULL.check__w_source_variants(
                    self,
                    arguments=argument_case.input_value.as_arguments,
                    input_=helper.model_constructor_for_checked_dir__recursive(
                    ),
                    arrangement=helper.arrangement_for_contents_of_model(
                        checked_dir_contents=contents_case.actual,
                        files_matcher_symbol_value=model_checker.matcher(
                            self,
                            helper.dir_arg.path_sdv,
                            contents_case.expected,
                        ),
                        additional_symbols=[
                            NAME_STARTS_WITH__P1,
                            NAME_STARTS_WITH__S1,
                        ],
                    ),
                    expectation=Expectation(
                        ParseExpectation(
                            symbol_references=argument_case.expected_value, )),
                )
Ejemplo n.º 6
0
 def arguments(self) -> FileMatcherArg:
     return self._mk_arguments_from_selection(
         fms_args.Selection(fm_args.Type(self._type_to_detect),
                            self._helper.files_matcher_sym_ref_arg()))
 def arg__non_recursive(self) -> FileMatcherArg:
     return fm_args.DirContents(
         fms_args.Selection(fm_args.Type(FileType.REGULAR),
                            self.setup.num_files_arg()))