예제 #1
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')
예제 #2
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))
예제 #3
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')
예제 #4
0
 def test_text_multiple_element_list(self):
     with noexit(), stdout() as so:
         @with_defaults
         def main(argument_namespace_callback, **kwargs):
             argument_namespace_callback.output_mode = 'text'
             return ['a', 'b']
         self.ccw().main.side_effect = main
         PCLI.main()
     self.assertEqual(so.getvalue(), 'a\nb\n')
예제 #5
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'])
예제 #6
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'))
예제 #7
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')
예제 #8
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_terminator = '\0'
             return ['a', 'b']
         self.ccw().main.side_effect = main
         PCLI.main()
     self.assertEqual(so.getvalue(), 'a\0b\0')
예제 #9
0
 def test_text_dict_field_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_pair_separator = '\0'
             return dict(a='b')
         self.ccw().main.side_effect = main
         PCLI.main()
     self.assertEqual(so.getvalue(), 'a\0b\n')
예제 #10
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, [])
예제 #11
0
 def test_json_context(self):
     with noexit(), stdout() as so:
         @with_defaults
         def main(argument_namespace_callback, **kwargs):
             from owmeta_core.context import Context
             argument_namespace_callback.output_mode = 'json'
             return Context('ident', base_namespace='base_namespace')
         self.ccw().main.side_effect = main
         PCLI.main()
     val = json.loads(so.getvalue())
     self.assertEqual(val, dict(identifier='ident', base_namespace='base_namespace'))
예제 #12
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')
예제 #13
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')