#!/usr/bin/env python

import datetime
import doctest
import unittest
import os.path
import sys
import time
from glob import glob

class FakeDatetime(datetime.datetime):
    @classmethod
    def utcnow(cls):
        return cls(2015, 12, 14, 15, 42, 14)

FakeDatetime.__name__ = 'datetime.datetime'

def load_tests(loader, tests, pattern):

    # Since tzset does not work under Windows, just give up.
    if os.name == 'nt':
        return unittest.TestSuite(tests)

    # Force time zone to EST/EDT to make localtime tests work.
    os.environ['TZ'] = 'EST+05EDT,M4.1.0,M10.5.0'
    time.tzset()

    # The different floating-point formatting rules in 2.6 and prior
    # ruin our doctests.

    tests = []

    datetime.datetime = FakeDatetime

    if sys.version_info >= (3, 9):
        tests.extend([
            doctest.DocFileSuite('../doc/%s' % os.path.basename(path))
            for path in glob(os.path.dirname(__file__) + '/../doc/*.rst')
            if os.path.split(path)[-1] != 'index.rst'
            # skips time-dependent doctest in index.rst
            ])

    return unittest.TestSuite(tests)
