From 243a73deee4ac61fe06602b7ed56b6df01e19f27 Mon Sep 17 00:00:00 2001 From: shireenrao Date: Tue, 13 Aug 2019 17:27:34 -0400 Subject: bpo-25172: Add test for crypt ImportError on Windows (GH-15252) --- Lib/test/test_crypt.py | 35 ++++++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/Lib/test/test_crypt.py b/Lib/test/test_crypt.py index d9189fc..d29e005 100644 --- a/Lib/test/test_crypt.py +++ b/Lib/test/test_crypt.py @@ -1,9 +1,25 @@ import sys -from test import support import unittest -crypt = support.import_module('crypt') +try: + import crypt + IMPORT_ERROR = None +except ImportError as ex: + crypt = None + IMPORT_ERROR = str(ex) + + +@unittest.skipIf(crypt, 'This should only run on windows') +class TestWhyCryptDidNotImport(unittest.TestCase): + def test_failure_only_for_windows(self): + self.assertEqual(sys.platform, 'win32') + + def test_import_failure_message(self): + self.assertIn('not supported', IMPORT_ERROR) + + +@unittest.skipUnless(crypt, 'Not supported on Windows') class CryptTestCase(unittest.TestCase): def test_crypt(self): @@ -39,9 +55,13 @@ class CryptTestCase(unittest.TestCase): else: self.assertEqual(crypt.methods[-1], crypt.METHOD_CRYPT) - @unittest.skipUnless(crypt.METHOD_SHA256 in crypt.methods or - crypt.METHOD_SHA512 in crypt.methods, - 'requires support of SHA-2') + @unittest.skipUnless( + crypt + and ( + crypt.METHOD_SHA256 in crypt.methods or crypt.METHOD_SHA512 in crypt.methods + ), + 'requires support of SHA-2', + ) def test_sha2_rounds(self): for method in (crypt.METHOD_SHA256, crypt.METHOD_SHA512): for rounds in 1000, 10_000, 100_000: @@ -54,8 +74,9 @@ class CryptTestCase(unittest.TestCase): cr2 = crypt.crypt('mypassword', cr) self.assertEqual(cr2, cr) - @unittest.skipUnless(crypt.METHOD_BLOWFISH in crypt.methods, - 'requires support of Blowfish') + @unittest.skipUnless( + crypt and crypt.METHOD_BLOWFISH in crypt.methods, 'requires support of Blowfish' + ) def test_blowfish_rounds(self): for log_rounds in range(4, 11): salt = crypt.mksalt(crypt.METHOD_BLOWFISH, rounds=1 << log_rounds) -- cgit v0.12