예제 #1
0
 def test_not_matches(self):
     cases = [
         NIE(
             'default assertion/not a renderer',
             input_value=MajorBlock([]),
             expected_value=sut.is_renderer_of_major_blocks(),
         ),
         NIE(
             'default assertion/not a sequence',
             input_value=rend_comb.ConstantR(MajorBlock([])),
             expected_value=sut.is_renderer_of_major_blocks(),
         ),
         NIE(
             'default assertion/not a major block',
             input_value=rend_comb.ConstantSequenceR([MinorBlock([])]),
             expected_value=sut.is_renderer_of_major_blocks(),
         ),
         NIE(
             'default assertion/invalid contents of block',
             input_value=rend_comb.ConstantSequenceR(
                 [MajorBlock(['not a minor block'])]),
             expected_value=sut.is_renderer_of_major_blocks(),
         ),
         NIE(
             'custom assertion/unexpected number of blocks',
             input_value=rend_comb.ConstantSequenceR([]),
             expected_value=sut.is_renderer_of_major_blocks(
                 asrt.len_equals(1)),
         ),
     ]
     for case in cases:
         with self.subTest(case.name):
             assert_that_assertion_fails(case.expected_value,
                                         case.input_value)
예제 #2
0
 def test_not_matches(self):
     cases = [
         NIE(
             'default assertion/not a renderer',
             input_value=self._LINE_ELEMENT,
             expected_value=sut.is_renderer_of_line_elements(),
         ),
         NIE(
             'default assertion/not a sequence',
             input_value=rend_comb.ConstantR(self._LINE_ELEMENT),
             expected_value=sut.is_renderer_of_line_elements(),
         ),
         NIE(
             'default assertion/not a line element',
             input_value=rend_comb.ConstantSequenceR([MajorBlock([])]),
             expected_value=sut.is_renderer_of_line_elements(),
         ),
         NIE(
             'default assertion/invalid contents of line element',
             input_value=rend_comb.ConstantSequenceR([
                 LineElement(StringLineObject('string'), 'not properties')
             ]),
             expected_value=sut.is_renderer_of_line_elements(),
         ),
         NIE(
             'custom assertion/unexpected number of blocks',
             input_value=rend_comb.ConstantSequenceR([]),
             expected_value=sut.is_renderer_of_line_elements(
                 asrt.len_equals(1)),
         ),
     ]
     for case in cases:
         with self.subTest(case.name):
             assert_that_assertion_fails(case.expected_value,
                                         case.input_value)
예제 #3
0
def string_source(
    contents: str,
    tmp_file_space: DirFileSpace,
) -> StringSource:
    return StringSourceWConstantContents(
        FactoryOfStringSourceStructureBuilder(
            rend_comb.ConstantR(contents)).new,
        ContentsOfStr(contents, None, tmp_file_space),
    )
예제 #4
0
 def __init__(self,
              elements: SequenceRenderer[str],
              separator: Renderer[str] = rend_comb.ConstantR(''),
              ):
     """
     :param separator: Result is undefined if rendition differs between invocations
     """
     self._elements = elements
     self._separator = separator
예제 #5
0
 def __error_message(self) -> MinorTextRenderer:
     return blocks.MinorBlocksOfSingleLineObject(
         comb.ConstantR(structure.StringLineObject(
             'Error from preprocessing by: ' + str(self.external_program))
         )
     )
예제 #6
0
        return helper.apply(sdv, model)

    def _file_matcher_for_expectation_type(self) -> FileMatcherSdv:
        return (self.file_matcher if self._is_positive_check() else
                combinator_sdvs.Negation(self.file_matcher))

    def _is_positive_check(self) -> bool:
        return self.expectation_type is ExpectationType.POSITIVE


_ERROR_MESSAGE_HEADER = 'Failure for path:'

_FILE_EXISTS_BUT_INVALID_PROPERTIES_ERR_MSG_HEADER = rend_comb.SingletonSequenceR(
    rend_comb.ConstantR(
        text_struct.LineElement(
            text_struct.StringLineObject('File exists, but:'))))

_EXISTING_PATH_FAILURE_FORMAT_MAP = {
    'PATH': syntax_elements.PATH_SYNTAX_ELEMENT.singular_name,
    'FILE_MATCHER': syntax_elements.FILE_MATCHER_SYNTAX_ELEMENT.singular_name,
}

_PROPERTIES_DESCRIPTION = """\
Applies a {FILE_MATCHER} on {PATH}, if it exists.
"""

_NOTES = """\
Symbolic links are not followed in the test of existence
(so a broken symbolic link is considered to exist).
"""
예제 #7
0
 def describer(self) -> Renderer[str]:
     return strings.JoiningOfElementsRenderer(self._list.describer(),
                                              rend_comb.ConstantR(' '))
예제 #8
0
 def describer(self) -> Renderer[str]:
     return rend_comb.ConstantR(self.string_constant)