Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #978 from jpurviance/utils-pytest
Migrate away from unittest and adopt pytest
- Loading branch information
Showing
3 changed files
with
160 additions
and
149 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
Move test suite towards pytest and away from unittest. | ||
Reported and fixed by @jpurviance (gh pr #978) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,166 +1,176 @@ | ||
import sys | ||
import unittest | ||
import pytest | ||
|
||
class ImportVersionTest(unittest.TestCase): | ||
|
||
HOST_IS_WINDOWS = sys.platform.startswith('win') | ||
|
||
|
||
def test_import_version_str(): | ||
""" Test that dateutil.__version__ can be imported""" | ||
from dateutil import __version__ | ||
|
||
|
||
def test_import_version_root(): | ||
import dateutil | ||
assert hasattr(dateutil, '__version__') | ||
|
||
|
||
# Test that dateutil.easter-related imports work properly | ||
def test_import_easter_direct(): | ||
import dateutil.easter | ||
|
||
|
||
def test_import_easter_from(): | ||
from dateutil import easter | ||
|
||
|
||
def test_import_easter_start(): | ||
from dateutil.easter import easter | ||
|
||
|
||
# Test that dateutil.parser-related imports work properly | ||
def test_import_parser_direct(): | ||
import dateutil.parser | ||
|
||
|
||
def testImportVersionStr(self): | ||
from dateutil import __version__ | ||
def test_import_parser_from(): | ||
from dateutil import parser | ||
|
||
def testImportRoot(self): | ||
import dateutil | ||
|
||
self.assertTrue(hasattr(dateutil, '__version__')) | ||
def test_import_parser_all(): | ||
# All interface | ||
from dateutil.parser import parse | ||
from dateutil.parser import parserinfo | ||
|
||
# Other public classes | ||
from dateutil.parser import parser | ||
|
||
class ImportEasterTest(unittest.TestCase): | ||
""" Test that dateutil.easter-related imports work properly """ | ||
for var in (parse, parserinfo, parser): | ||
assert var is not None | ||
|
||
def testEasterDirect(self): | ||
import dateutil.easter | ||
|
||
def testEasterFrom(self): | ||
from dateutil import easter | ||
# Test that dateutil.relativedelta-related imports work properly | ||
def test_import_relative_delta_direct(): | ||
import dateutil.relativedelta | ||
|
||
def testEasterStar(self): | ||
from dateutil.easter import easter | ||
|
||
def test_import_relative_delta_from(): | ||
from dateutil import relativedelta | ||
|
||
class ImportParserTest(unittest.TestCase): | ||
""" Test that dateutil.parser-related imports work properly """ | ||
def testParserDirect(self): | ||
import dateutil.parser | ||
def test_import_relative_delta_all(): | ||
from dateutil.relativedelta import relativedelta | ||
from dateutil.relativedelta import MO, TU, WE, TH, FR, SA, SU | ||
|
||
def testParserFrom(self): | ||
from dateutil import parser | ||
for var in (relativedelta, MO, TU, WE, TH, FR, SA, SU): | ||
assert var is not None | ||
|
||
def testParserAll(self): | ||
# All interface | ||
from dateutil.parser import parse | ||
from dateutil.parser import parserinfo | ||
# In the public interface but not in all | ||
from dateutil.relativedelta import weekday | ||
assert weekday is not None | ||
|
||
# Other public classes | ||
from dateutil.parser import parser | ||
|
||
for var in (parse, parserinfo, parser): | ||
self.assertIsNot(var, None) | ||
# Test that dateutil.rrule related imports work properly | ||
def test_import_rrule_direct(): | ||
import dateutil.rrule | ||
|
||
|
||
class ImportRelativeDeltaTest(unittest.TestCase): | ||
""" Test that dateutil.relativedelta-related imports work properly """ | ||
def testRelativeDeltaDirect(self): | ||
import dateutil.relativedelta | ||
def test_import_rrule_from(): | ||
from dateutil import rrule | ||
|
||
def testRelativeDeltaFrom(self): | ||
from dateutil import relativedelta | ||
|
||
def testRelativeDeltaAll(self): | ||
from dateutil.relativedelta import relativedelta | ||
from dateutil.relativedelta import MO, TU, WE, TH, FR, SA, SU | ||
def test_import_rrule_all(): | ||
from dateutil.rrule import rrule | ||
from dateutil.rrule import rruleset | ||
from dateutil.rrule import rrulestr | ||
from dateutil.rrule import YEARLY, MONTHLY, WEEKLY, DAILY | ||
from dateutil.rrule import HOURLY, MINUTELY, SECONDLY | ||
from dateutil.rrule import MO, TU, WE, TH, FR, SA, SU | ||
|
||
for var in (relativedelta, MO, TU, WE, TH, FR, SA, SU): | ||
self.assertIsNot(var, None) | ||
rr_all = (rrule, rruleset, rrulestr, | ||
YEARLY, MONTHLY, WEEKLY, DAILY, | ||
HOURLY, MINUTELY, SECONDLY, | ||
MO, TU, WE, TH, FR, SA, SU) | ||
|
||
# In the public interface but not in all | ||
from dateutil.relativedelta import weekday | ||
self.assertIsNot(weekday, None) | ||
for var in rr_all: | ||
assert var is not None | ||
|
||
# In the public interface but not in all | ||
from dateutil.rrule import weekday | ||
assert weekday is not None | ||
|
||
class ImportRRuleTest(unittest.TestCase): | ||
""" Test that dateutil.rrule related imports work properly """ | ||
def testRRuleDirect(self): | ||
import dateutil.rrule | ||
|
||
def testRRuleFrom(self): | ||
from dateutil import rrule | ||
# Test that dateutil.tz related imports work properly | ||
def test_import_tztest_direct(): | ||
import dateutil.tz | ||
|
||
def testRRuleAll(self): | ||
from dateutil.rrule import rrule | ||
from dateutil.rrule import rruleset | ||
from dateutil.rrule import rrulestr | ||
from dateutil.rrule import YEARLY, MONTHLY, WEEKLY, DAILY | ||
from dateutil.rrule import HOURLY, MINUTELY, SECONDLY | ||
from dateutil.rrule import MO, TU, WE, TH, FR, SA, SU | ||
|
||
rr_all = (rrule, rruleset, rrulestr, | ||
YEARLY, MONTHLY, WEEKLY, DAILY, | ||
HOURLY, MINUTELY, SECONDLY, | ||
MO, TU, WE, TH, FR, SA, SU) | ||
def test_import_tz_from(): | ||
from dateutil import tz | ||
|
||
for var in rr_all: | ||
self.assertIsNot(var, None) | ||
|
||
# In the public interface but not in all | ||
from dateutil.rrule import weekday | ||
self.assertIsNot(weekday, None) | ||
def test_import_tz_all(): | ||
from dateutil.tz import tzutc | ||
from dateutil.tz import tzoffset | ||
from dateutil.tz import tzlocal | ||
from dateutil.tz import tzfile | ||
from dateutil.tz import tzrange | ||
from dateutil.tz import tzstr | ||
from dateutil.tz import tzical | ||
from dateutil.tz import gettz | ||
from dateutil.tz import tzwin | ||
from dateutil.tz import tzwinlocal | ||
from dateutil.tz import UTC | ||
from dateutil.tz import datetime_ambiguous | ||
from dateutil.tz import datetime_exists | ||
from dateutil.tz import resolve_imaginary | ||
|
||
tz_all = ["tzutc", "tzoffset", "tzlocal", "tzfile", "tzrange", | ||
"tzstr", "tzical", "gettz", "datetime_ambiguous", | ||
"datetime_exists", "resolve_imaginary", "UTC"] | ||
|
||
class ImportTZTest(unittest.TestCase): | ||
""" Test that dateutil.tz related imports work properly """ | ||
def testTzDirect(self): | ||
import dateutil.tz | ||
tz_all += ["tzwin", "tzwinlocal"] if sys.platform.startswith("win") else [] | ||
lvars = locals() | ||
|
||
def testTzFrom(self): | ||
from dateutil import tz | ||
for var in tz_all: | ||
assert lvars[var] is not None | ||
|
||
def testTzAll(self): | ||
from dateutil.tz import tzutc | ||
from dateutil.tz import tzoffset | ||
from dateutil.tz import tzlocal | ||
from dateutil.tz import tzfile | ||
from dateutil.tz import tzrange | ||
from dateutil.tz import tzstr | ||
from dateutil.tz import tzical | ||
from dateutil.tz import gettz | ||
from dateutil.tz import tzwin | ||
from dateutil.tz import tzwinlocal | ||
from dateutil.tz import UTC | ||
from dateutil.tz import datetime_ambiguous | ||
from dateutil.tz import datetime_exists | ||
from dateutil.tz import resolve_imaginary | ||
# Test that dateutil.tzwin related imports work properly | ||
@pytest.mark.skipif(not HOST_IS_WINDOWS, reason="Requires Windows") | ||
def test_import_tz_windows_direct(): | ||
import dateutil.tzwin | ||
|
||
tz_all = ["tzutc", "tzoffset", "tzlocal", "tzfile", "tzrange", | ||
"tzstr", "tzical", "gettz", "datetime_ambiguous", | ||
"datetime_exists", "resolve_imaginary", "UTC"] | ||
|
||
tz_all += ["tzwin", "tzwinlocal"] if sys.platform.startswith("win") else [] | ||
lvars = locals() | ||
@pytest.mark.skipif(not HOST_IS_WINDOWS, reason="Requires Windows") | ||
def test_import_tz_windows_from(): | ||
from dateutil import tzwin | ||
|
||
for var in tz_all: | ||
self.assertIsNot(lvars[var], None) | ||
|
||
@unittest.skipUnless(sys.platform.startswith('win'), "Requires Windows") | ||
class ImportTZWinTest(unittest.TestCase): | ||
""" Test that dateutil.tzwin related imports work properly """ | ||
def testTzwinDirect(self): | ||
import dateutil.tzwin | ||
@pytest.mark.skipif(not HOST_IS_WINDOWS, reason="Requires Windows") | ||
def test_import_tz_windows_star(): | ||
from dateutil.tzwin import tzwin | ||
from dateutil.tzwin import tzwinlocal | ||
|
||
def testTzwinFrom(self): | ||
from dateutil import tzwin | ||
tzwin_all = [tzwin, tzwinlocal] | ||
|
||
def testTzwinStar(self): | ||
from dateutil.tzwin import tzwin | ||
from dateutil.tzwin import tzwinlocal | ||
for var in tzwin_all: | ||
assert var is not None | ||
|
||
tzwin_all = [tzwin, tzwinlocal] | ||
|
||
for var in tzwin_all: | ||
self.assertIsNot(var, None) | ||
# Test imports of Zone Info | ||
def test_import_zone_info_direct(): | ||
import dateutil.zoneinfo | ||
|
||
|
||
class ImportZoneInfoTest(unittest.TestCase): | ||
def testZoneinfoDirect(self): | ||
import dateutil.zoneinfo | ||
def test_import_zone_info_from(): | ||
from dateutil import zoneinfo | ||
|
||
def testZoneinfoFrom(self): | ||
from dateutil import zoneinfo | ||
|
||
def testZoneinfoStar(self): | ||
from dateutil.zoneinfo import gettz | ||
from dateutil.zoneinfo import gettz_db_metadata | ||
from dateutil.zoneinfo import rebuild | ||
def test_import_zone_info_star(): | ||
from dateutil.zoneinfo import gettz | ||
from dateutil.zoneinfo import gettz_db_metadata | ||
from dateutil.zoneinfo import rebuild | ||
|
||
zi_all = (gettz, gettz_db_metadata, rebuild) | ||
zi_all = (gettz, gettz_db_metadata, rebuild) | ||
|
||
for var in zi_all: | ||
self.assertIsNot(var, None) | ||
for var in zi_all: | ||
assert var is not None |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters