Skip to content

Commit 19815ed

Browse files
committed
Using pyfakefs, capture failure when an item on sys.path is inaccessible. Ref #94.
1 parent 054749e commit 19815ed

File tree

2 files changed

+8
-14
lines changed

2 files changed

+8
-14
lines changed

importlib_metadata/tests/test_main.py

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
# coding: utf-8
22
from __future__ import unicode_literals
33

4-
import os
54
import re
65
import json
76
import pickle
87
import textwrap
8+
import unittest
99
import importlib
10-
import unittest.mock
1110
import importlib_metadata
1211

12+
import pyfakefs.fake_filesystem_unittest as ffs
13+
1314
from . import fixtures
1415
from .. import (
1516
Distribution, EntryPoint, MetadataPathFinder,
@@ -205,28 +206,20 @@ def test_discovery(self):
205206
importlib_metadata.distributions()
206207

207208

208-
class InaccessibleSysPath(fixtures.OnSysPath, unittest.TestCase):
209+
class InaccessibleSysPath(fixtures.OnSysPath, ffs.TestCase):
209210
site_dir = '/access-denied'
210211

211-
def listdir(self, target, orig=os.listdir):
212-
"""
213-
Fake listdir raising an exception when access is denied.
214-
"""
215-
if target == self.site_dir:
216-
raise OSError(13, 'Permission denied')
217-
return orig(target)
218-
219212
def setUp(self):
220213
super(InaccessibleSysPath, self).setUp()
221-
self.fixtures.enter_context(
222-
unittest.mock.patch('os.listdir', self.listdir))
214+
self.setUpPyfakefs()
215+
self.fs.create_dir(self.site_dir, perm_bits=000)
223216

224217
def test_discovery(self):
225218
"""
226219
Discovering distributions should succeed even if
227220
there is an invalid path on sys.path.
228221
"""
229-
importlib_metadata.distributions()
222+
list(importlib_metadata.distributions())
230223

231224

232225
class TestEntryPoints(unittest.TestCase):

tox.ini

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ passenv =
2828
deps =
2929
cov,diffcov: coverage>=4.5
3030
diffcov: diff_cover
31+
pyfakefs
3132
setenv =
3233
cov: COVERAGE_PROCESS_START={[coverage]rcfile}
3334
cov: COVERAGE_OPTIONS="-p"

0 commit comments

Comments
 (0)