Пример #1
0
    def test_with_header_and_columns_accessor(self):
        with noexit(), stdout() as so:

            @with_defaults
            def main(argument_namespace_callback, **kwargs):
                argument_namespace_callback.output_mode = 'table'

                def gen():
                    yield 'blah'
                    yield 'blah'

                it = gen()

                class Iterable(object):
                    header = ['FIELD']
                    columns = [lambda x: x[:1]]

                    def __next__(self):
                        return next(it)

                    next = __next__

                    def __iter__(self):
                        return iter(it)

                return Iterable()

            self.ccw().main.side_effect = main
            PCLI.main()
            self.assertRegexpMatches(so.getvalue(),
                                     re.compile('^b *$', flags=re.MULTILINE))
Пример #2
0
    def test_with_header_name(self):
        with noexit(), stdout() as so:

            @with_defaults
            def main(argument_namespace_callback, **kwargs):
                argument_namespace_callback.output_mode = 'table'

                def gen():
                    yield 'blah'
                    yield 'blah'

                it = gen()

                class Iterable(object):
                    header = ['FIELD']

                    def __next__(self):
                        return next(it)

                    next = __next__

                    def __iter__(self):
                        return iter(it)

                return Iterable()

            self.ccw().main.side_effect = main
            PCLI.main()
            self.assertRegexpMatches(so.getvalue(), 'FIELD')
Пример #3
0
    def test_text_dict(self):
        with noexit(), stdout() as so:

            @with_defaults
            def main(argument_namespace_callback, **kwargs):
                argument_namespace_callback.output_mode = 'text'
                return dict(a='b')

            self.ccw().main.side_effect = main
            PCLI.main()
        self.assertEqual(so.getvalue(), 'a\tb\n')
Пример #4
0
    def test_text_set(self):
        with noexit(), stdout() as so:

            @with_defaults
            def main(argument_namespace_callback, **kwargs):
                argument_namespace_callback.output_mode = 'text'
                return set('ab')

            self.ccw().main.side_effect = main
            PCLI.main()
        self.assertTrue(so.getvalue() == 'b\na\n' or so.getvalue() == 'a\nb\n')
Пример #5
0
    def test_json_list(self):
        with patch('PyOpenWorm.cli.CLICommandWrapper') as ccw, \
                noexit(), stdout() as so:

            @with_defaults
            def main(argument_namespace_callback, **kwargs):
                argument_namespace_callback.output_mode = 'json'
                return ['a']
            ccw().main.side_effect = main
            PCLI.main()
        self.assertEqual(json.loads(so.getvalue()), ['a'])
Пример #6
0
    def test_json_list(self):
        with noexit(), stdout() as so:

            @with_defaults
            def main(argument_namespace_callback, **kwargs):
                argument_namespace_callback.output_mode = 'json'
                return ['a']

            self.ccw().main.side_effect = main
            PCLI.main()
        self.assertEqual(json.loads(so.getvalue()), ['a'])
Пример #7
0
    def test_text_dict(self):
        with patch('PyOpenWorm.cli.CLICommandWrapper') as ccw, \
                noexit(), stdout() as so:

            @with_defaults
            def main(argument_namespace_callback, **kwargs):
                argument_namespace_callback.output_mode = 'text'
                return dict(a='b')
            ccw().main.side_effect = main
            PCLI.main()
        self.assertEqual(so.getvalue(), 'a\tb\n')
Пример #8
0
    def test_text_uniterable(self):
        target = object()
        with patch('PyOpenWorm.cli.CLICommandWrapper') as ccw, \
                noexit(), stdout() as so:

            @with_defaults
            def main(argument_namespace_callback, **kwargs):
                argument_namespace_callback.output_mode = 'text'
                return target
            ccw().main.side_effect = main
            PCLI.main()
        self.assertEqual(so.getvalue(), str(target) + '\n')
Пример #9
0
    def test_text_list_record_separator(self):
        with noexit(), stdout() as so:

            @with_defaults
            def main(argument_namespace_callback, **kwargs):
                argument_namespace_callback.output_mode = 'text'
                argument_namespace_callback.text_record_separator = '\0'
                return ['a', 'b']

            self.ccw().main.side_effect = main
            PCLI.main()
        self.assertEqual(so.getvalue(), 'a\0b\0')
Пример #10
0
    def test_json_set(self):
        with noexit(), stdout() as so:

            @with_defaults
            def main(argument_namespace_callback, **kwargs):
                argument_namespace_callback.output_mode = 'json'
                return set('ab')

            self.ccw().main.side_effect = main
            PCLI.main()
        val = json.loads(so.getvalue())
        self.assertTrue(val == list('ba') or val == list('ab'))
Пример #11
0
    def test_text_dict(self):
        with patch('PyOpenWorm.cli.CLICommandWrapper') as ccw, \
                noexit(), stdout() as so:

            @with_defaults
            def main(argument_namespace_callback, **kwargs):
                argument_namespace_callback.output_mode = 'text'
                return dict(a='b')

            ccw().main.side_effect = main
            PCLI.main()
        self.assertEqual(so.getvalue(), 'a\tb\n')
Пример #12
0
    def test_text_uniterable(self):
        target = object()
        with noexit(), stdout() as so:

            @with_defaults
            def main(argument_namespace_callback, **kwargs):
                argument_namespace_callback.output_mode = 'text'
                return target

            self.ccw().main.side_effect = main
            PCLI.main()
        self.assertEqual(so.getvalue(), str(target) + '\n')
Пример #13
0
    def test_text_list_record_separator(self):
        with patch('PyOpenWorm.cli.CLICommandWrapper') as ccw, \
                noexit(), stdout() as so:

            @with_defaults
            def main(argument_namespace_callback, **kwargs):
                argument_namespace_callback.output_mode = 'text'
                argument_namespace_callback.text_record_separator = '\0'
                return ['a', 'b']
            ccw().main.side_effect = main
            PCLI.main()
        self.assertEqual(so.getvalue(), 'a\0b\0')
Пример #14
0
    def test_json_set(self):
        with patch('PyOpenWorm.cli.CLICommandWrapper') as ccw, \
                noexit(), stdout() as so:

            @with_defaults
            def main(argument_namespace_callback, **kwargs):
                argument_namespace_callback.output_mode = 'json'
                return set('ab')
            ccw().main.side_effect = main
            PCLI.main()
        val = json.loads(so.getvalue())
        self.assertTrue(val == list('ba') or val == list('ab'))
Пример #15
0
    def test_json_list(self):
        with patch('PyOpenWorm.cli.CLICommandWrapper') as ccw, \
                noexit(), stdout() as so:

            @with_defaults
            def main(argument_namespace_callback, **kwargs):
                argument_namespace_callback.output_mode = 'json'
                return ['a']

            ccw().main.side_effect = main
            PCLI.main()
        self.assertEqual(json.loads(so.getvalue()), ['a'])
Пример #16
0
    def test_text_uniterable(self):
        target = object()
        with patch('PyOpenWorm.cli.CLICommandWrapper') as ccw, \
                noexit(), stdout() as so:

            @with_defaults
            def main(argument_namespace_callback, **kwargs):
                argument_namespace_callback.output_mode = 'text'
                return target

            ccw().main.side_effect = main
            PCLI.main()
        self.assertEqual(so.getvalue(), str(target) + '\n')
Пример #17
0
    def test_json_graph(self):
        with patch('PyOpenWorm.cli.CLICommandWrapper') as ccw, \
                noexit(), stdout() as so:

            @with_defaults
            def main(argument_namespace_callback, **kwargs):
                from rdflib.graph import Graph
                argument_namespace_callback.output_mode = 'json'
                return Mock(name='graph', spec=Graph())
            ccw().main.side_effect = main
            PCLI.main()
        val = json.loads(so.getvalue())
        self.assertEqual(val, [])
Пример #18
0
    def test_json_graph(self):
        with noexit(), stdout() as so:

            @with_defaults
            def main(argument_namespace_callback, **kwargs):
                from rdflib.graph import Graph
                argument_namespace_callback.output_mode = 'json'
                return Mock(name='graph', spec=Graph())

            self.ccw().main.side_effect = main
            PCLI.main()
        val = json.loads(so.getvalue())
        self.assertEqual(val, [])
Пример #19
0
    def test_json_set(self):
        with patch('PyOpenWorm.cli.CLICommandWrapper') as ccw, \
                noexit(), stdout() as so:

            @with_defaults
            def main(argument_namespace_callback, **kwargs):
                argument_namespace_callback.output_mode = 'json'
                return set('ab')

            ccw().main.side_effect = main
            PCLI.main()
        val = json.loads(so.getvalue())
        self.assertTrue(val == list('ba') or val == list('ab'))
Пример #20
0
    def test_json_context(self):
        with patch('PyOpenWorm.cli.CLICommandWrapper') as ccw, \
                noexit(), stdout() as so:

            @with_defaults
            def main(argument_namespace_callback, **kwargs):
                from PyOpenWorm.context import Context
                argument_namespace_callback.output_mode = 'json'
                m = Mock(name='context_result', spec=Context())
                m.identifier = 'ident'
                m.base_namespace = 'base_namespace'
                return m
            ccw().main.side_effect = main
            PCLI.main()
        val = json.loads(so.getvalue())
        self.assertEqual(val, dict(identifier='ident', base_namespace='base_namespace'))
Пример #21
0
    def test_no_headers_or_columns_row_value(self):
        with noexit(), stdout() as so:

            @with_defaults
            def main(argument_namespace_callback, **kwargs):
                argument_namespace_callback.output_mode = 'table'

                def iterable():
                    yield 'blah'
                    yield 'blah'

                return iterable()

            self.ccw().main.side_effect = main
            PCLI.main()
            self.assertRegexpMatches(so.getvalue(), 'blah')
Пример #22
0
    def test_json_context(self):
        with noexit(), stdout() as so:

            @with_defaults
            def main(argument_namespace_callback, **kwargs):
                from PyOpenWorm.context import Context
                argument_namespace_callback.output_mode = 'json'
                m = Mock(name='context_result', spec=Context())
                m.identifier = 'ident'
                m.base_namespace = 'base_namespace'
                return m

            self.ccw().main.side_effect = main
            PCLI.main()
        val = json.loads(so.getvalue())
        self.assertEqual(
            val, dict(identifier='ident', base_namespace='base_namespace'))
Пример #23
0
    def test_text_iterable_type_error(self):
        with patch('PyOpenWorm.cli.CLICommandWrapper') as ccw, \
                noexit(), stdout() as so:

            @with_defaults
            def main(argument_namespace_callback, **kwargs):
                argument_namespace_callback.output_mode = 'text'

                def iterable():
                    yield 'blah'
                    yield 'blah'
                    raise TypeError("blah blah")
                return iterable()
            ccw().main.side_effect = main
            with self.assertRaises(TypeError):
                PCLI.main()
            self.assertEqual(so.getvalue(), 'blah\nblah\n')
Пример #24
0
    def test_text_iterable_type_error(self):
        with noexit(), stdout() as so:

            @with_defaults
            def main(argument_namespace_callback, **kwargs):
                argument_namespace_callback.output_mode = 'text'

                def iterable():
                    yield 'blah'
                    yield 'blah'
                    raise TypeError("blah blah")

                return iterable()

            self.ccw().main.side_effect = main
            with self.assertRaises(TypeError):
                PCLI.main()
            self.assertEqual(so.getvalue(), 'blah\nblah\n')