#!/usr/bin/env python3 import unittest import tempfile import os.path import importlib import os import sys import imp class TestBadReload(unittest.TestCase): def test_module_to_package(self): with tempfile.TemporaryDirectory() as d: sys.path[0:0] = [d] try: mod_name = "to_be_reloaded" # Create and import a module filename = os.path.join(d, mod_name + ".py") with open(filename, "w"): pass mod = importlib.import_module(mod_name) self.assertEqual(mod.__file__, filename) # Turn it into a package instead, make sure reloading finds it dirname = os.path.join(d, mod_name) initname = os.path.join(dirname, "__init__.py") os.mkdir(dirname) os.rename(filename, initname) imp.reload(mod) self.assertEqual(mod.__file__, initname) finally: del sys.path[0] if __name__ == "__main__": unittest.main()