Ejemplo n.º 1
0
 def _invokation_variants_parentheses(self) -> List[InvokationVariant]:
     arguments = [
         a.Single(a.Multiplicity.MANDATORY, a.Constant('(')),
         self.concept_argument,
         a.Single(a.Multiplicity.MANDATORY, a.Constant(')')),
     ]
     iv = invokation_variant_from_args(arguments)
     return [iv]
Ejemplo n.º 2
0
def _constant_sed(name: str) -> SyntaxElementDescription:
    return SyntaxElementDescription(name, _TP.fnap(_LITERAL__HEADER), [
        invokation_variant_from_args([
            a.Single(a.Multiplicity.MANDATORY, a.Constant(
                syntax.LITERAL_BEGIN)),
            a.Single(a.Multiplicity.ONE_OR_MORE, a.Named(_FILE_CONDITION)),
            a.Single(a.Multiplicity.MANDATORY, a.Constant(syntax.LITERAL_END)),
        ], _TP.fnap(_LITERAL__DESCRIPTION_REST)),
    ])
Ejemplo n.º 3
0
def _common_initial_args__suite() -> List[arg.ArgumentUsage]:
    return [
        arg.Single(arg.Multiplicity.MANDATORY,
                   arg.Constant(common_opts.SYMBOL_COMMAND)),
        arg.Single(arg.Multiplicity.MANDATORY,
                   arg.Constant(common_opts.SUITE_COMMAND)),
        arg.Single(arg.Multiplicity.ZERO_OR_MORE, SUITE_OPTION_ARGUMENT),
        arg.Single(arg.Multiplicity.MANDATORY,
                   instruction_arguments.FILE_ARGUMENT),
    ]
Ejemplo n.º 4
0
def _here_doc() -> InvokationVariant:
    return invokation_variant_from_args([
        a.Single(
            a.Multiplicity.MANDATORY,
            a.Constant(string.HERE_DOCUMENT_MARKER_PREFIX +
                       _HERE_DOC_SYNTAX_MARKER)),
        a.Single(a.Multiplicity.ZERO_OR_MORE, a.Named(_HERE_DOC_LINE)),
        a.Single(a.Multiplicity.MANDATORY,
                 a.Constant(_HERE_DOC_SYNTAX_MARKER)),
    ], _TEXT_PARSER.fnap(_DESCRIPTION__HERE_DOC))
Ejemplo n.º 5
0
 def invokation_variants(self) -> List[InvokationVariant]:
     primitive_arg = a.single_mandatory(a.Named(self._primitive_name))
     return [
         invokation_variant_from_args([primitive_arg]),
         invokation_variant_from_args([
             a.single_mandatory(a.Constant('(')),
             primitive_arg,
             a.single_mandatory(a.Constant(')')),
         ]),
     ]
Ejemplo n.º 6
0
 def argument_usage_list(self) -> Sequence[a.ArgumentUsage]:
     element_arg = a.Single(a.Multiplicity.MANDATORY,
                            a.Constant(self._element_name)
                            )
     separator_arg = a.Single(a.Multiplicity.MANDATORY,
                              a.Constant(logic.QUANTIFICATION_SEPARATOR_ARGUMENT)
                              )
     return (element_arg,
             separator_arg,
             self._element_matcher_syntax_info.single_mandatory,
             )
Ejemplo n.º 7
0
def _file_list_sed(name: str) -> SyntaxElementDescription:
    return SyntaxElementDescription(name, (), [
        invokation_variant_from_args([
            a.Single(a.Multiplicity.MANDATORY,
                     a.Constant(syntax.FILE_LIST_BEGIN)),
            a.Single(a.Multiplicity.ONE_OR_MORE,
                     a.Named(syntax.FILE_SPEC__SE_STR)),
            a.Single(a.Multiplicity.MANDATORY, a.Constant(
                syntax.FILE_LIST_END)),
        ], _TP.fnap(_FILE_LIST__DESCRIPTION_REST)),
    ])
Ejemplo n.º 8
0
 def test_choice(self):
     test_cases = [
         sut.Choice.of_single_argument_choices(sut.Multiplicity.OPTIONAL,
                                               [sut.Constant('constant')]),
         sut.Choice.of_single_argument_choices(
             sut.Multiplicity.OPTIONAL,
             [sut.Constant('constant'),
              sut.Named('name')]),
     ]
     for value in test_cases:
         with self.subTest():
             str(value)
Ejemplo n.º 9
0
 def def_instruction_arguments(self) -> List[a.ArgumentUsage]:
     before_value = [
         a.Single(a.Multiplicity.MANDATORY, a.Constant(self.identifier)),
         _SYMBOL_NAME,
         _EQUALS,
     ]
     return before_value + self.value_arguments
Ejemplo n.º 10
0
 def _sym_ref() -> InvokationVariant:
     return invokation_variant_from_args([
         a.Single(a.Multiplicity.MANDATORY,
                  a.Constant(pgm_syntax_elements.SYMBOL_REF_PROGRAM_TOKEN)),
         a.Single(a.Multiplicity.MANDATORY,
                  syntax_elements.SYMBOL_NAME_SYNTAX_ELEMENT.argument),
     ], _TEXT_PARSER.fnap(_SYM_REF_PROGRAM_DESCRIPTION))
Ejemplo n.º 11
0
 def syntax(self) -> Sequence[a.ArgumentUsage]:
     return [
         a.single_mandatory(
             a.Constant(instruction_names.SHELL_INSTRUCTION_NAME)),
         a.single_mandatory(
             syntax_elements.SHELL_COMMAND_LINE_SYNTAX_ELEMENT.argument)
     ]
Ejemplo n.º 12
0
def def_instruction_argument_syntax() -> List[a.ArgumentUsage]:
    return [
        a.Single(a.Multiplicity.MANDATORY, a.Named(TYPE_SYNTAX_ELEMENT)),
        a.Single(a.Multiplicity.MANDATORY,
                 syntax_elements.SYMBOL_NAME_SYNTAX_ELEMENT.argument),
        a.Single(a.Multiplicity.MANDATORY, a.Constant(ASSIGNMENT_ARGUMENT)),
        a.Single(a.Multiplicity.MANDATORY, a.Named(VALUE_SYNTAX_ELEMENT)),
    ]
Ejemplo n.º 13
0
def text_until_end_of_line() -> InvokationVariant:
    return invokation_variant_from_args([
        a.Single(
            a.Multiplicity.MANDATORY,
            a.Constant(pgm_syntax_elements.
                       REMAINING_PART_OF_CURRENT_LINE_AS_LITERAL_MARKER)),
        a.Single(a.Multiplicity.MANDATORY, TEXT_UNTIL_END_OF_LINE_ARGUMENT)
    ], _TEXT_PARSER.fnap(_TEXT_UNTIL_END_OF_LINE_DESCRIPTION))
Ejemplo n.º 14
0
 def invokation_variant_of(
         operator_name: str,
         syntax: OperatorDescription) -> InvokationVariant:
     operator_argument = a.Single(a.Multiplicity.MANDATORY,
                                  a.Constant(operator_name))
     all_arguments = [operator_argument, self.concept_argument]
     return invokation_variant_from_args(all_arguments,
                                         syntax.description_rest)
Ejemplo n.º 15
0
 def test_constant_argument_should_produce_constant_string(self):
     # ARRANGE #
     renderer = sut.ArgumentOnCommandLineRenderer()
     argument_usage = arg.Constant('the_constant')
     # ACT #
     actual = renderer.visit(argument_usage)
     # ASSERT #
     self.assertEqual('the_constant', actual)
Ejemplo n.º 16
0
 def invokation_variants(self) -> Sequence[InvokationVariant]:
     return [
         invokation_variant_from_args([
             a.Single(a.Multiplicity.MANDATORY,
                      a.Constant(
                          instruction_arguments.ASSIGNMENT_OPERATOR)),
             syntax_elements.STRING_SOURCE_SYNTAX_ELEMENT.single_mandatory,
         ]),
     ]
Ejemplo n.º 17
0
 def __init__(self, name: str):
     self.negation_argument = a.Constant(NEGATION_OPERATOR)
     super().__init__(
         name, {
             'PATH': _PATH_ARGUMENT.name,
             'FILE_MATCHER':
             syntax_elements.FILE_MATCHER_SYNTAX_ELEMENT.singular_name,
             'NEGATION_OPERATOR': NEGATION_OPERATOR,
             'PASS': exit_values.EXECUTION__PASS.exit_identifier,
         })
Ejemplo n.º 18
0
 def _modification_args(self) -> List[a.ArgumentUsage]:
     if self.modification is None:
         return []
     else:
         return [
             a.Single(
                 a.Multiplicity.MANDATORY,
                 a.Constant(
                     syntax.MODIFICATION_VARIANT_TOKENS[self.modification]))
         ]
Ejemplo n.º 19
0
def synopsis() -> cli_syntax.Synopsis:
    command_line = arg.CommandLine([
        arg.Single(arg.Multiplicity.MANDATORY,
                   arg.Constant(common_opts.SUITE_COMMAND)),
        arg.Single(arg.Multiplicity.OPTIONAL, _REPORTER_OPTION),
        arg.Single(arg.Multiplicity.OPTIONAL, _ACTOR_OPTION),
        arg.Single(arg.Multiplicity.MANDATORY, _FILE_ARGUMENT),
    ],
                                   prefix=program_info.PROGRAM_NAME)
    return cli_syntax.Synopsis(command_line, _TP.text(_DESCRIPTION_PARAGRAPH))
Ejemplo n.º 20
0
 def invokation_variants(self) -> Sequence[InvokationVariant]:
     phase_spec_args = self._phase_spec_args()
     name = a.Single(a.Multiplicity.MANDATORY,
                     a.Named(defs.VAR_NAME_ELEMENT))
     value = a.Single(a.Multiplicity.MANDATORY,
                      a.Named(defs.VAR_VALUE_ELEMENT))
     assignment = a.Single(a.Multiplicity.MANDATORY,
                           a.Constant(defs.ASSIGNMENT_IDENTIFIER))
     unset_kw = a.Single(a.Multiplicity.MANDATORY,
                         a.Constant(defs.UNSET_IDENTIFIER))
     return [
         invokation_variant_from_args(
             phase_spec_args + [name, assignment, value],
             self._tp.fnap(_DESCRIPTION_OF_SET),
         ),
         invokation_variant_from_args(
             phase_spec_args + [unset_kw, name],
             self._tp.fnap(_DESCRIPTION_OF_UNSET),
         ),
     ]
Ejemplo n.º 21
0
def system_program(arguments: List[a.ArgumentUsage]) -> InvokationVariant:
    return invokation_variant_from_args(
        [
            a.Single(a.Multiplicity.MANDATORY,
                     a.Constant(pgm_syntax_elements.SYSTEM_PROGRAM_TOKEN)
                     ),
            a.Single(a.Multiplicity.MANDATORY,
                     syntax_elements.STRING_SYNTAX_ELEMENT.argument
                     ),
        ] + arguments,
        _TEXT_PARSER.paras(misc_texts.SYSTEM_PROGRAM_DESCRIPTION)
    )
Ejemplo n.º 22
0
def _file_condition_sed() -> SyntaxElementDescription:
    return SyntaxElementDescription(
        _FILE_CONDITION, _TP.fnap(_FILE_CONDITION_DESCRIPTION_REST), [
            invokation_variant_from_args([
                syntax.FILE_NAME__ARG,
            ]),
            invokation_variant_from_args([
                syntax.FILE_NAME__ARG,
                a.Single(a.Multiplicity.MANDATORY,
                         a.Constant(syntax.FILE_MATCHER_SEPARATOR)),
                syntax_elements.FILE_MATCHER_SYNTAX_ELEMENT.single_mandatory,
            ], _TP.fnap(_FILE_NAME_WITH_MATCHER_DESCRIPTION_REST)),
        ])
Ejemplo n.º 23
0
def optional_negation_argument_usage() -> a.ArgumentUsage:
    return a.Single(a.Multiplicity.OPTIONAL,
                    a.Constant(logic.NOT_OPERATOR_NAME))
Ejemplo n.º 24
0
 def _file_type_arg(self) -> a.ArgumentUsage:
     return a.Single(a.Multiplicity.MANDATORY,
                     a.Constant(syntax.FILE_TYPE_TOKENS[self.file_type]))
Ejemplo n.º 25
0
from exactly_lib.definitions.test_case import reserved_words
from exactly_lib.util.cli_syntax.elements import argument as a

RESERVED_WORD__COLON = a.Single(a.Multiplicity.MANDATORY,
                                a.Constant(reserved_words.COLON))
Ejemplo n.º 26
0
        return before_value + self.value_arguments


def _standard_type_value_args(
    type_info: TypeNameAndCrossReferenceId,
    value_multiplicity: a.Multiplicity = a.Multiplicity.MANDATORY
) -> List[a.ArgumentUsage]:
    return [
        a.Single(value_multiplicity, a.Named(type_info.syntax_element_name))
    ]


_SYMBOL_NAME = a.Single(a.Multiplicity.MANDATORY,
                        syntax_elements.SYMBOL_NAME_SYNTAX_ELEMENT.argument)

_EQUALS = a.Single(a.Multiplicity.MANDATORY, a.Constant(ASSIGNMENT_ARGUMENT))

TYPE_W_STR_RENDERING_INFO_DICT: Mapping[
    WithStrRenderingType, TypeInfo] = MappingProxyType({
        WithStrRenderingType.STRING:
        TypeInfo(
            types.STRING_TYPE_INFO,
            _standard_type_value_args(types.STRING_TYPE_INFO,
                                      a.Multiplicity.MANDATORY)),
        WithStrRenderingType.PATH:
        TypeInfo(
            types.PATH_TYPE_INFO,
            path_syntax.mandatory_path_with_optional_relativity(
                a.Named(types.PATH_TYPE_INFO.syntax_element_name),
                PATH_SUFFIX_IS_REQUIRED)),
        WithStrRenderingType.LIST:
Ejemplo n.º 27
0
FILE_TYPE_SE_STR = 'FILE-TYPE'
FILE_SPEC__SE_STR = 'FILE-SPEC'

REGULAR_FILE_TOKEN = instruction_names.NEW_FILE_INSTRUCTION_NAME
DIRECTORY_TOKEN = instruction_names.NEW_DIR_INSTRUCTION_NAME

FILE_TYPE_TOKENS = {
    FileType.REGULAR: REGULAR_FILE_TOKEN,
    FileType.DIR: DIRECTORY_TOKEN,
}

EXPLICIT_CREATE = instruction_arguments.ASSIGNMENT_OPERATOR
EXPLICIT_APPEND = instruction_arguments.APPEND_OPERATOR

MODIFICATION_VARIANT_TOKENS: Mapping[ModificationType, str] = {
    ModificationType.CREATE: EXPLICIT_CREATE,
    ModificationType.APPEND: EXPLICIT_APPEND,
}

EXPLICIT_CONTENTS_CONFIG: Mapping[str, ModificationType] = {
    item[1]: item[0]
    for item in MODIFICATION_VARIANT_TOKENS.items()
}

MODIFICATION_ARGUMENT__ASSIGN = a.Single(a.Multiplicity.MANDATORY,
                                         a.Constant(EXPLICIT_CREATE))

MODIFICATION_ARGUMENT__APPEND = a.Single(a.Multiplicity.MANDATORY,
                                         a.Constant(EXPLICIT_APPEND))
Ejemplo n.º 28
0
 def test_constant(self):
     self._check(sut.Constant('name'), sut.Constant)
Ejemplo n.º 29
0
 def test_constant(self):
     value = sut.Constant('name')
     str(value)
Ejemplo n.º 30
0
 def test_single(self):
     value = sut.Single(sut.Multiplicity.OPTIONAL, sut.Constant('constant'))
     str(value)