Author: Matti Picus <matti.pi...@gmail.com>
Branch: 
Changeset: r93691:0dc02a769dab
Date: 2018-01-20 23:45 +0200
http://bitbucket.org/pypy/pypy/changeset/0dc02a769dab/

Log:    lib_pypy.datetime is now an AppTest, depends on __pypy__._datetime

diff --git a/pypy/module/test_lib_pypy/test_datetime.py 
b/pypy/module/test_lib_pypy/test_datetime.py
--- a/pypy/module/test_lib_pypy/test_datetime.py
+++ b/pypy/module/test_lib_pypy/test_datetime.py
@@ -2,10 +2,12 @@
 
 from __future__ import absolute_import
 import py
+from pypy.module.test_lib_pypy.support import import_lib_pypy
 
 
 class BaseTestDatetime:
     def test_repr(self):
+        import datetime
         checks = (
             (datetime.date(2015, 6, 8), "datetime.date(2015, 6, 8)"),
             (datetime.datetime(2015, 6, 8, 12, 34, 56), 
"datetime.datetime(2015, 6, 8, 12, 34, 56)"),
@@ -18,6 +20,7 @@
             assert repr(obj) == expected
 
     def test_repr_overridden(self):
+        import datetime
         class date_safe(datetime.date):
             pass
 
@@ -42,6 +45,7 @@
             assert repr(obj) == expected
 
     def test_attributes(self):
+        import datetime
         for x in [datetime.date.today(),
                   datetime.time(),
                   datetime.datetime.utcnow(),
@@ -50,6 +54,7 @@
             raises(AttributeError, 'x.abc = 1')
 
     def test_timedelta_init_long(self):
+        import datetime
         td = datetime.timedelta(microseconds=20000000000000000000)
         assert td.days == 231481481
         assert td.seconds == 41600
@@ -58,6 +63,7 @@
         assert td.seconds == 41600
 
     def test_unpickle(self):
+        import datetime
         e = raises(TypeError, datetime.date, '123')
         assert e.value.args[0] == 'an integer is required'
         e = raises(TypeError, datetime.time, '123')
@@ -66,17 +72,16 @@
         assert e.value.args[0] == 'an integer is required'
 
         datetime.time('\x01' * 6, None)
-        with raises(TypeError) as e:
-            datetime.time('\x01' * 6, 123)
-        assert str(e.value) == "bad tzinfo state arg"
+        exc = raises(TypeError, datetime.time, '\x01' * 6, 123)
+        assert str(exc.value) == "bad tzinfo state arg"
 
         datetime.datetime('\x01' * 10, None)
-        with raises(TypeError) as e:
-            datetime.datetime('\x01' * 10, 123)
-        assert str(e.value) == "bad tzinfo state arg"
+        exc = raises(TypeError, datetime.datetime, '\x01' * 10, 123)
+        assert str(exc.value) == "bad tzinfo state arg"
 
     def test_strptime(self):
         import time, sys
+        import datetime
         if sys.version_info < (2, 6):
             py.test.skip("needs the _strptime module")
 
@@ -87,6 +92,7 @@
         assert expected == got
 
     def test_datetime_rounding(self):
+        import datetime
         b = 0.0000001
         a = 0.9999994
 
@@ -100,6 +106,7 @@
         assert datetime.datetime.utcfromtimestamp(a).second == 1
 
     def test_more_datetime_rounding(self):
+        import datetime
         # this test verified on top of CPython 2.7 (using a plain
         # "import datetime" above)
         expected_results = {
@@ -126,6 +133,7 @@
             assert repr(dt) == expected_results[t]
 
     def test_utcfromtimestamp(self):
+        import datetime
         """Confirm that utcfromtimestamp and fromtimestamp give consistent 
results.
 
         Based on danchr's test script in https://bugs.pypy.org/issue986
@@ -151,19 +159,19 @@
             time.tzset()
 
     def test_utcfromtimestamp_microsecond(self):
+        import datetime
         dt = datetime.datetime.utcfromtimestamp(0)
         assert isinstance(dt.microsecond, int)
 
     def test_default_args(self):
-        with py.test.raises(TypeError):
-            datetime.datetime()
-        with py.test.raises(TypeError):
-            datetime.datetime(10)
-        with py.test.raises(TypeError):
-            datetime.datetime(10, 10)
+        import datetime
+        raises(TypeError, datetime.datetime)
+        raises(TypeError, datetime.datetime, 10)
+        raises(TypeError, datetime.datetime, 10, 10)
         datetime.datetime(10, 10, 10)
 
     def test_check_arg_types(self):
+        import datetime
         import decimal
         class Number:
             def __init__(self, value):
@@ -188,38 +196,29 @@
             assert type(dtxx.month) is int
             assert type(dtxx.second) is int
 
-        with py.test.raises(TypeError) as e:
-            datetime.datetime(10, 10, '10')
-        assert str(e.value) == 'an integer is required'
+        exc = raises(TypeError, datetime.datetime,10, 10, '10')
+        assert str(exc.value) == 'an integer is required'
 
         f10 = Number(10.9)
-        with py.test.raises(TypeError) as e:
-            datetime.datetime(10, 10, f10)
-        assert str(e.value) == '__int__ method should return an integer'
+        exc = raises(TypeError, datetime.datetime, 10, 10, f10)
+        assert str(exc.value) == '__int__ method should return an integer'
 
         class Float(float):
             pass
         s10 = Float(10.9)
-        with py.test.raises(TypeError) as e:
-            datetime.datetime(10, 10, s10)
-        assert str(e.value) == 'integer argument expected, got float'
+        exc = raises(TypeError, datetime.datetime, 10, 10, s10)
+        assert str(exc.value) == 'integer argument expected, got float'
 
-        with py.test.raises(TypeError):
-            datetime.datetime(10., 10, 10)
-        with py.test.raises(TypeError):
-            datetime.datetime(10, 10., 10)
-        with py.test.raises(TypeError):
-            datetime.datetime(10, 10, 10.)
-        with py.test.raises(TypeError):
-            datetime.datetime(10, 10, 10, 10.)
-        with py.test.raises(TypeError):
-            datetime.datetime(10, 10, 10, 10, 10.)
-        with py.test.raises(TypeError):
-            datetime.datetime(10, 10, 10, 10, 10, 10.)
-        with py.test.raises(TypeError):
-            datetime.datetime(10, 10, 10, 10, 10, 10, 10.)
+        raises(TypeError, datetime.datetime, 10., 10, 10)
+        raises(TypeError, datetime.datetime, 10, 10., 10)
+        raises(TypeError, datetime.datetime, 10, 10, 10.)
+        raises(TypeError, datetime.datetime, 10, 10, 10, 10.)
+        raises(TypeError, datetime.datetime, 10, 10, 10, 10, 10.)
+        raises(TypeError, datetime.datetime, 10, 10, 10, 10, 10, 10.)
+        raises(TypeError, datetime.datetime, 10, 10, 10, 10, 10, 10, 10.)
 
     def test_utcnow_microsecond(self):
+        import datetime
         import copy
 
         dt = datetime.datetime.utcnow()
@@ -228,34 +227,34 @@
         copy.copy(dt)
 
     def test_radd(self):
+        import datetime
         class X(object):
             def __radd__(self, other):
                 return "radd"
         assert datetime.date(10, 10, 10) + X() == "radd"
 
     def 
test_raises_if_passed_naive_datetime_and_start_or_end_time_defined(self):
+        import datetime
         class Foo(datetime.tzinfo):
             def utcoffset(self, dt):
                 return datetime.timedelta(0.1)
         naive = datetime.datetime(2014, 9, 22)
         aware = datetime.datetime(2014, 9, 22, tzinfo=Foo())
-        with py.test.raises(TypeError) as e:
-            naive == aware
-        assert str(e.value) == "can't compare offset-naive and offset-aware 
datetimes"
-        with py.test.raises(TypeError) as e:
-            naive - aware
-        assert str(e.value) == "can't subtract offset-naive and offset-aware 
datetimes"
+        exc = raises(TypeError, naive.__eq__, aware)
+        assert str(exc.value) == "can't compare offset-naive and offset-aware 
datetimes"
+        exc = raises(TypeError, naive.__sub__, aware)
+        assert str(exc.value) == "can't subtract offset-naive and offset-aware 
datetimes"
         naive = datetime.time(7, 32, 12)
         aware = datetime.time(7, 32, 12, tzinfo=Foo())
-        with py.test.raises(TypeError) as e:
-            naive == aware
-        assert str(e.value) == "can't compare offset-naive and offset-aware 
times"
+        exc = raises(TypeError, naive.__eq__, aware)
+        assert str(exc.value) == "can't compare offset-naive and offset-aware 
times"
 
     def test_future_types_newint(self):
+        import datetime
         try:
             from future.types.newint import newint
         except ImportError:
-            py.test.skip('requires future')
+            skip('requires future')
 
         dt_from_ints = datetime.datetime(2015, 12, 31, 12, 34, 56)
         dt_from_newints = datetime.datetime(newint(2015), newint(12), 
newint(31), newint(12), newint(34), newint(56))
@@ -310,12 +309,14 @@
         assert td_div_newint_int == td_div_newint_newint
 
     def test_return_types(self):
+        import datetime
         td = datetime.timedelta(5)
         assert type(td.total_seconds()) is float
         class sub(datetime.timedelta): pass
         assert type(+sub()) is datetime.timedelta
 
     def test_subclass_date(self):
+        import datetime
         # replace() should return a subclass but not call __new__ or __init__.
         class MyDate(datetime.date):
             forbidden = False
@@ -331,6 +332,7 @@
         assert d2 == datetime.date(2016, 2, 5)
 
     def test_subclass_time(self):
+        import datetime
         # replace() should return a subclass but not call __new__ or __init__.
         class MyTime(datetime.time):
             forbidden = False
@@ -346,6 +348,7 @@
         assert d2 == datetime.time(5, 2, 3)
 
     def test_subclass_datetime(self):
+        import datetime
         # replace() should return a subclass but not call __new__ or __init__.
         class MyDatetime(datetime.datetime):
             forbidden = False
@@ -362,12 +365,12 @@
 
 
 class TestDatetimeHost(BaseTestDatetime):
+    pass
+
+
+class AppTestDatetimePyPy(BaseTestDatetime):
+    spaceconfig = dict(usemodules=['__pypy__', 'struct'])
     def setup_class(cls):
-        global datetime
-        import datetime
-
-
-class TestDatetimePyPy(BaseTestDatetime):
-    def setup_class(cls):
-        global datetime
-        from lib_pypy import datetime
+        space = cls.space
+        #cls.w___pypy__ = import_lib_pypy(space, '__pypy__')
+        cls.w_datetime = import_lib_pypy(space, 'datetime')
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to