diff --git a/tests/data/timestamp-bugs.code b/tests/data/timestamp-bugs.code index b1d6e9c4..e2c84cc3 100644 --- a/tests/data/timestamp-bugs.code +++ b/tests/data/timestamp-bugs.code @@ -1,8 +1,8 @@ [ - datetime.datetime(2001, 12, 15, 3, 29, 43, 100000), - datetime.datetime(2001, 12, 14, 16, 29, 43, 100000), - datetime.datetime(2001, 12, 14, 21, 59, 43, 1010), - datetime.datetime(2001, 12, 14, 21, 59, 43, 0, FixedOffset(60, "+1")), - datetime.datetime(2001, 12, 14, 21, 59, 43, 0, FixedOffset(-90, "-1:30")), - datetime.datetime(2005, 7, 8, 17, 35, 4, 517600), + [datetime.datetime(2001, 12, 15, 3, 29, 43, 100000), 'UTC-05:30'], + [datetime.datetime(2001, 12, 14, 16, 29, 43, 100000), 'UTC+05:30'], + [datetime.datetime(2001, 12, 14, 21, 59, 43, 1010), None], + [datetime.datetime(2001, 12, 14, 21, 59, 43, 0, FixedOffset(60, "+1")), 'UTC+01:00'], + [datetime.datetime(2001, 12, 14, 21, 59, 43, 0, FixedOffset(-90, "-1:30")), 'UTC-01:30'], + [datetime.datetime(2005, 7, 8, 17, 35, 4, 517600), None], ] diff --git a/tests/data/timestamp-bugs.data b/tests/data/timestamp-bugs.data index 721d2908..b243d0d2 100644 --- a/tests/data/timestamp-bugs.data +++ b/tests/data/timestamp-bugs.data @@ -1,6 +1,12 @@ -- 2001-12-14 21:59:43.10 -5:30 -- 2001-12-14 21:59:43.10 +5:30 -- 2001-12-14 21:59:43.00101 -- 2001-12-14 21:59:43+1 -- 2001-12-14 21:59:43-1:30 -- 2005-07-08 17:35:04.517600 +- !MyTime + - 2001-12-14 21:59:43.10 -5:30 +- !MyTime + - 2001-12-14 21:59:43.10 +5:30 +- !MyTime + - 2001-12-14 21:59:43.00101 +- !MyTime + - 2001-12-14 21:59:43+1 +- !MyTime + - 2001-12-14 21:59:43-1:30 +- !MyTime + - 2005-07-08 17:35:04.517600 diff --git a/tests/lib/test_constructor.py b/tests/lib/test_constructor.py index 9e6c8564..a337fb47 100644 --- a/tests/lib/test_constructor.py +++ b/tests/lib/test_constructor.py @@ -41,7 +41,20 @@ def construct1(constructor, node): def represent1(representer, native): return representer.represent_mapping("!tag1", native.__dict__) + def my_time_constructor(constructor, node): + seq = constructor.construct_sequence(node) + dt = seq[0] + tz = None + try: + tz = dt.tzinfo.tzname(dt) + tz = 'UTC' + tz + except: + pass + mytime = [dt, tz] + return mytime + yaml.add_constructor("!tag1", construct1, Loader=MyLoader) + yaml.add_constructor("!MyTime", my_time_constructor, Loader=MyLoader) yaml.add_representer(MyTestClass1, represent1, Dumper=MyDumper) class MyTestClass2(MyTestClass1, yaml.YAMLObject): @@ -224,6 +237,9 @@ def tzname(self, dt): def dst(self, dt): return datetime.timedelta(0) + class MyTime(yaml.YAMLObject): + pass + today = datetime.date.today() def _load_code(expression): diff --git a/tests/lib3/test_constructor.py b/tests/lib3/test_constructor.py index 3d696498..63f6eeec 100644 --- a/tests/lib3/test_constructor.py +++ b/tests/lib3/test_constructor.py @@ -38,7 +38,19 @@ def construct1(constructor, node): def represent1(representer, native): return representer.represent_mapping("!tag1", native.__dict__) + def my_time_constructor(constructor, node): + seq = constructor.construct_sequence(node) + dt = seq[0] + tz = None + try: + tz = dt.tzinfo.tzname(dt) + except: + pass + mytime = [dt, tz] + return mytime + yaml.add_constructor("!tag1", construct1, Loader=MyLoader) + yaml.add_constructor("!MyTime", my_time_constructor, Loader=MyLoader) yaml.add_representer(MyTestClass1, represent1, Dumper=MyDumper) class MyTestClass2(MyTestClass1, yaml.YAMLObject): @@ -211,6 +223,9 @@ def tzname(self, dt): def dst(self, dt): return datetime.timedelta(0) + class MyTime(yaml.YAMLObject): + pass + today = datetime.date.today() def _load_code(expression):