예제 #1
0
 def _add_pkg_dir(self, pkg_dir, namespace=False):
     os.mkdir(pkg_dir)
     if namespace:
         return None
     pkg_fname = os.path.join(pkg_dir, "__init__.py")
     create_empty_file(pkg_fname)
     return pkg_fname
예제 #2
0
 def setUp(self):
     self.test_dir = tempfile.mkdtemp()
     sys.path.append(self.test_dir)
     self.package_dir = os.path.join(self.test_dir, self.package_name)
     os.mkdir(self.package_dir)
     create_empty_file(os.path.join(self.package_dir, '__init__.py'))
     self.module_path = os.path.join(self.package_dir, 'foo.py')
예제 #3
0
 def test_module(self):
     self.maxDiff = None
     self._check_path_limitations(self.pkgname)
     create_empty_file(os.path.join(self.subpkgname, self.pkgname + '.py'))
     importlib.invalidate_caches()
     from areallylongpackageandmodulenametotestreprtruncation.areallylongpackageandmodulenametotestreprtruncation import areallylongpackageandmodulenametotestreprtruncation
     module = areallylongpackageandmodulenametotestreprtruncation
     self.assertEqual(repr(module), "<module %r from %r>" % (module.__name__, module.__file__))
     self.assertEqual(repr(sys), "<module 'sys' (built-in)>")
예제 #4
0
 def test_non_local_discovery(self):
     """
     When findall is called with another path, the full
     path name should be returned.
     """
     with os_helper.temp_dir() as temp_dir:
         file1 = os.path.join(temp_dir, 'file1.txt')
         os_helper.create_empty_file(file1)
         expected = [file1]
         self.assertEqual(filelist.findall(temp_dir), expected)
예제 #5
0
    def test_reload_location_changed(self):
        name = 'spam'
        with os_helper.temp_cwd(None) as cwd:
            with test_util.uncache('spam'):
                with import_helper.DirsOnSysPath(cwd):
                    # Start as a plain module.
                    self.init.invalidate_caches()
                    path = os.path.join(cwd, name + '.py')
                    cached = self.util.cache_from_source(path)
                    expected = {
                        '__name__': name,
                        '__package__': '',
                        '__file__': path,
                        '__cached__': cached,
                        '__doc__': None,
                    }
                    os_helper.create_empty_file(path)
                    module = self.init.import_module(name)
                    ns = vars(module).copy()
                    loader = ns.pop('__loader__')
                    spec = ns.pop('__spec__')
                    ns.pop('__builtins__', None)  # An implementation detail.
                    self.assertEqual(spec.name, name)
                    self.assertEqual(spec.loader, loader)
                    self.assertEqual(loader.path, path)
                    self.assertEqual(ns, expected)

                    # Change to a package.
                    self.init.invalidate_caches()
                    init_path = os.path.join(cwd, name, '__init__.py')
                    cached = self.util.cache_from_source(init_path)
                    expected = {
                        '__name__': name,
                        '__package__': name,
                        '__file__': init_path,
                        '__cached__': cached,
                        '__path__': [os.path.dirname(init_path)],
                        '__doc__': None,
                    }
                    os.mkdir(name)
                    os.rename(path, init_path)
                    reloaded = self.init.reload(module)
                    ns = vars(reloaded).copy()
                    loader = ns.pop('__loader__')
                    spec = ns.pop('__spec__')
                    ns.pop('__builtins__', None)  # An implementation detail.
                    self.assertEqual(spec.name, name)
                    self.assertEqual(spec.loader, loader)
                    self.assertIs(reloaded, module)
                    self.assertEqual(loader.path, init_path)
                    self.maxDiff = None
                    self.assertEqual(ns, expected)
예제 #6
0
 def _test_single(self, filename):
     remove_if_exists(filename)
     create_empty_file(filename)
     try:
         self._do_single(filename)
     finally:
         os.unlink(filename)
     self.assertTrue(not os.path.exists(filename))
     # and again with os.open.
     f = os.open(filename, os.O_CREAT)
     os.close(f)
     try:
         self._do_single(filename)
     finally:
         os.unlink(filename)
예제 #7
0
 def test_basic_discovery(self):
     """
     When findall is called with no parameters or with
     '.' as the parameter, the dot should be omitted from
     the results.
     """
     with os_helper.temp_cwd():
         os.mkdir('foo')
         file1 = os.path.join('foo', 'file1.txt')
         os_helper.create_empty_file(file1)
         os.mkdir('bar')
         file2 = os.path.join('bar', 'file2.txt')
         os_helper.create_empty_file(file2)
         expected = [file2, file1]
         self.assertEqual(sorted(filelist.findall()), expected)
예제 #8
0
 def setUp(self):
     self.pkgname = os.path.join(self.longname)
     self.subpkgname = os.path.join(self.longname, self.longname)
     # Make the package and subpackage
     shutil.rmtree(self.pkgname, ignore_errors=True)
     os.mkdir(self.pkgname)
     create_empty_file(os.path.join(self.pkgname, '__init__.py'))
     shutil.rmtree(self.subpkgname, ignore_errors=True)
     os.mkdir(self.subpkgname)
     create_empty_file(os.path.join(self.subpkgname, '__init__.py'))
     # Remember where we are
     self.here = os.getcwd()
     sys.path.insert(0, self.here)
     # When regrtest is run with its -j option, this command alone is not
     # enough.
     importlib.invalidate_caches()
예제 #9
0
    def test_selflink(self):
        tempdir = TESTFN + "_dir"
        os.makedirs(tempdir)
        self.addCleanup(shutil.rmtree, tempdir)
        with change_cwd(tempdir):
            os.makedirs('dir')
            create_empty_file(os.path.join('dir', 'file'))
            os.symlink(os.curdir, os.path.join('dir', 'link'))

            results = glob.glob('**', recursive=True)
            self.assertEqual(len(results), len(set(results)))
            results = set(results)
            depth = 0
            while results:
                path = os.path.join(*(['dir'] + ['link'] * depth))
                self.assertIn(path, results)
                results.remove(path)
                if not results:
                    break
                path = os.path.join(path, 'file')
                self.assertIn(path, results)
                results.remove(path)
                depth += 1

            results = glob.glob(os.path.join('**', 'file'), recursive=True)
            self.assertEqual(len(results), len(set(results)))
            results = set(results)
            depth = 0
            while results:
                path = os.path.join(*(['dir'] + ['link'] * depth + ['file']))
                self.assertIn(path, results)
                results.remove(path)
                depth += 1

            results = glob.glob(os.path.join('**', ''), recursive=True)
            self.assertEqual(len(results), len(set(results)))
            results = set(results)
            depth = 0
            while results:
                path = os.path.join(*(['dir'] + ['link'] * depth + ['']))
                self.assertIn(path, results)
                results.remove(path)
                depth += 1
예제 #10
0
 def _add_relative_modules(self, base_dir, source, depth):
     if depth <= 1:
         raise ValueError("Relative module test needs depth > 1")
     pkg_name = "__runpy_pkg__"
     module_dir = base_dir
     for i in range(depth):
         parent_dir = module_dir
         module_dir = os.path.join(module_dir, pkg_name)
     # Add sibling module
     sibling_fname = os.path.join(module_dir, "sibling.py")
     create_empty_file(sibling_fname)
     if verbose > 1: print("  Added sibling module:", sibling_fname)
     # Add nephew module
     uncle_dir = os.path.join(parent_dir, "uncle")
     self._add_pkg_dir(uncle_dir)
     if verbose > 1: print("  Added uncle package:", uncle_dir)
     cousin_dir = os.path.join(uncle_dir, "cousin")
     self._add_pkg_dir(cousin_dir)
     if verbose > 1: print("  Added cousin package:", cousin_dir)
     nephew_fname = os.path.join(cousin_dir, "nephew.py")
     create_empty_file(nephew_fname)
     if verbose > 1: print("  Added nephew module:", nephew_fname)
예제 #11
0
 def test_anydbm_creation_n_file_exists_with_invalid_contents(self):
     # create an empty file
     os_helper.create_empty_file(_fname)
     with dbm.open(_fname, 'n') as f:
         self.assertEqual(len(f), 0)
예제 #12
0
 def testEmptyFile(self):
     os_helper.unlink(TESTMOD)
     os_helper.create_empty_file(TESTMOD)
     self.assertZipFailure(TESTMOD)
예제 #13
0
 def mktemp(self, *parts):
     filename = self.norm(*parts)
     base, file = os.path.split(filename)
     if not os.path.exists(base):
         os.makedirs(base)
     create_empty_file(filename)