Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:seife:Factory
python-pprintpp
python-pprintpp-remove-nose.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File python-pprintpp-remove-nose.patch of Package python-pprintpp
Index: pprintpp-0.4.0/test.py =================================================================== --- pprintpp-0.4.0.orig/test.py 2021-10-26 13:15:18.391876167 +0200 +++ pprintpp-0.4.0/test.py 2021-10-26 13:15:23.059902356 +0200 @@ -1,46 +1,100 @@ from __future__ import print_function import sys -import ctypes -import textwrap - -from nose.tools import assert_equal -from parameterized import parameterized, param +from contextlib import redirect_stdout +import io +import pytest sys.path.append("pp/") import pp import pprintpp as p from pprintpp import Counter, defaultdict, OrderedDict -class PPrintppTestBase(object): - def assertStdout(self, expected, trim=True): - if trim: - expected = textwrap.dedent(expected.rstrip().lstrip("\n")) - # Assumes that nose's capture plugin is active - assert_equal(sys.stdout.getvalue().rstrip(), expected) - - -class TestPP(PPrintppTestBase): - def test_pp(self): +def test_pp(): + expected = "['hello', 'world']" + f = io.StringIO() + with redirect_stdout(f): pp(["hello", "world"]) - self.assertStdout("['hello', 'world']") + actual = f.getvalue().rstrip("\n") + assert actual == expected - def test_pp_pprint(self): +def test_pp_print(): + expected = "'stuff'" + f = io.StringIO() + with redirect_stdout(f): pp.pprint("stuff") - self.assertStdout("'stuff'") + actual = f.getvalue().rstrip("\n") + assert actual == expected - def test_fmt(self): +def test_fmt(): + expected = "'asdf'\n'stuff'" + f = io.StringIO() + with redirect_stdout(f): print(pp.pformat("asdf")) print(pp.fmt("stuff")) - self.assertStdout(""" - 'asdf' - 'stuff' - """) - - def test_module_like(self): - print(dir(pp)) - print(repr(pp)) + actual = f.getvalue().rstrip("\n") + assert actual == expected +def test_module_like(): + print(dir(pp)) + print(repr(pp)) + +uni_safe = "\xe9 \u6f02 \u0e4f \u2661" +uni_unsafe = "\u200a \u0302 \n" +slashed = lambda s: u"%s'%s'" %( + p.u_prefix, + s.encode("ascii", "backslashreplace").decode("ascii").replace("\n", "\\n") +) + +test_unicode_data = [ + (uni_safe, "%s'%s'" %(p.u_prefix, uni_safe), "utf-8"), + (uni_unsafe, slashed(uni_unsafe), "utf-8"), + (uni_unsafe, slashed(uni_unsafe), "ascii"), + ("\U0002F9B2", slashed("\U0002F9B2"), "ascii") +] + +@pytest.mark.parametrize("input,expected,encoding", test_unicode_data) +def test_unicode(input, expected, encoding): + stream = p.TextIO(encoding=encoding) + p.pprint(input, stream=stream) + assert stream.getvalue().rstrip("\n") == expected + +test_back_and_forth_data = [ + "'\\'\"'", + '"\'"', + "'\"'", + "frozenset(['a', 'b', 'c'])", + "set([None, 1, 'a'])", + "[]", + "[1]", + "{}", + "{1: 1}", + "set()", + "set([1])", + "frozenset()", + "frozenset([1])", + "()", + "(1, )", + "MyDict({})", + "MyDict({1: 1})", + "MyList([])", + "MyList([1])", + "MyTuple(())", + "MyTuple((1, ))", + "MySet()", + "MySet([1])", + "MyFrozenSet()", + "MyFrozenSet([1])", + "Counter()", + "Counter({1: 1})", + "OrderedDict()", + "OrderedDict([(1, 1), (5, 5), (2, 2)])", + "MyOrderedDict()", + "MyOrderedDict([(1, 1)])", + "MyCounter()", + "MyCounter({1: 1})", + "MyCounterWithRepr('dummy')", +] class MyDict(dict): pass @@ -70,104 +124,46 @@ class MyCounterWithRepr(p.Counter): def __repr__(self): return "MyCounterWithRepr('dummy')" -class TestPPrint(PPrintppTestBase): - uni_safe = u"\xe9 \u6f02 \u0e4f \u2661" - uni_unsafe = u"\u200a \u0302 \n" - slashed = lambda s: u"%s'%s'" %( - p.u_prefix, - s.encode("ascii", "backslashreplace").decode("ascii").replace("\n", "\\n") - ) - - @parameterized([ - param("safe", uni_safe, "%s'%s'" %(p.u_prefix, uni_safe)), - param("unsafe", uni_unsafe, slashed(uni_unsafe)), - param("encoding-aware", uni_safe, slashed(uni_safe), encoding="ascii"), - param("high-end-chars", u"\U0002F9B2", slashed(u"\U0002F9B2"), encoding="ascii"), - ]) - def test_unicode(self, name, input, expected, encoding="utf-8"): - stream = p.TextIO(encoding=encoding) - p.pprint(input, stream=stream) - assert_equal(stream.getvalue().rstrip("\n"), expected) - - @parameterized([ - param(u"'\\'\"'"), - param(u'"\'"'), - param(u"'\"'"), - param("frozenset(['a', 'b', 'c'])"), - param("set([None, 1, 'a'])"), - - param("[]"), - param("[1]"), - param("{}"), - param("{1: 1}"), - param("set()"), - param("set([1])"), - param("frozenset()"), - param("frozenset([1])"), - param("()"), - param("(1, )"), - - param("MyDict({})"), - param("MyDict({1: 1})"), - param("MyList([])"), - param("MyList([1])"), - param("MyTuple(())"), - param("MyTuple((1, ))"), - param("MySet()"), - param("MySet([1])"), - param("MyFrozenSet()"), - param("MyFrozenSet([1])"), - - ] + ([] if not p._test_has_collections else [ - param("Counter()"), - param("Counter({1: 1})"), - param("OrderedDict()"), - param("OrderedDict([(1, 1), (5, 5), (2, 2)])"), - param("MyOrderedDict()"), - param("MyOrderedDict([(1, 1)])"), - param("MyCounter()"), - param("MyCounter({1: 1})"), - param("MyCounterWithRepr('dummy')"), - ])) - def test_back_and_forth(self, expected): - input = eval(expected) - stream = p.TextIO() - p.pprint(input, stream=stream) - assert_equal(stream.getvalue().rstrip("\n"), expected) - - if p._test_has_collections: - @parameterized([ - param("defaultdict(%r, {})" %(int, ), defaultdict(int)), - param("defaultdict(%r, {1: 1})" %(int, ), defaultdict(int, [(1, 1)])), - param("MyDefaultDict(%r, {})" %(int, ), MyDefaultDict(int)), - param("MyDefaultDict(%r, {1: 1})" %(int, ), MyDefaultDict(int, [(1, 1)])), - ]) - def test_expected_input(self, expected, input): - stream = p.TextIO() - p.pprint(input, stream=stream) - assert_equal(stream.getvalue().rstrip("\n"), expected) - - def test_unhashable_repr(self): - # In Python 3, C extensions can define a __repr__ method which is an - # instance of `instancemethod`, which is unhashable. It turns out to be - # spectacularly difficult to create an `instancemethod` and attach it to - # a type without using C... so we'll simulate it using a more explicitly - # unhashable type. - # See also: http://stackoverflow.com/q/40876368/71522 - - class UnhashableCallable(object): - __hash__ = None - - def __call__(self): - return "some-repr" - - class MyCls(object): - __repr__ = UnhashableCallable() - - obj = MyCls() - assert_equal(p.pformat(obj), "some-repr") - - -if __name__ == "__main__": - import nose - nose.main() +@pytest.mark.parametrize("expected", test_back_and_forth_data) +def test_back_and_forth(expected): + input = eval(expected) + stream = p.TextIO() + p.pprint(input, stream=stream) + assert stream.getvalue().rstrip("\n") == expected + +test_expected_input_data = [ + ("defaultdict(%r, {})" %(int, ), defaultdict(int)), + ("defaultdict(%r, {1: 1})" %(int, ), defaultdict(int, [(1, 1)])), + ("MyDefaultDict(%r, {})" %(int, ), MyDefaultDict(int)), + ("MyDefaultDict(%r, {1: 1})" %(int, ), MyDefaultDict(int, [(1, 1)])), +] + +@pytest.mark.parametrize("expected,input", test_expected_input_data) +def test_expected_input(expected, input): + stream = p.TextIO() + p.pprint(input, stream=stream) + assert stream.getvalue().rstrip("\n") == expected + + +def test_unhashable_repr(): + # In Python 3, C extensions can define a __repr__ method which is an + # instance of `instancemethod`, which is unhashable. It turns out to be + # spectacularly difficult to create an `instancemethod` and attach it to + # a type without using C... so we'll simulate it using a more explicitly + # unhashable type. + # See also: http://stackoverflow.com/q/40876368/71522 + + class UnhashableCallable(object): + __hash__ = None + + def __call__(self): + return "some-repr" + + class MyCls(object): + __repr__ = UnhashableCallable() + + obj = MyCls() + assert p.pformat(obj) == "some-repr" + + + Index: pprintpp-0.4.0/test-requires.txt =================================================================== --- pprintpp-0.4.0.orig/test-requires.txt 2021-10-26 13:15:18.391876167 +0200 +++ pprintpp-0.4.0/test-requires.txt 2021-10-26 13:15:18.395876190 +0200 @@ -1,2 +1,2 @@ -nose==1.3.0 +pytest parameterized==0.6.1
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor