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')
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))
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')
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')
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'])
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'))
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')
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')
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')
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, [])
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'))
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')
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')