Browse Source

make cache writing happen...

main
John-Mark Gurney 4 years ago
parent
commit
46e0978548
1 changed files with 23 additions and 1 deletions
  1. +23
    -1
      casimport/__init__.py

+ 23
- 1
casimport/__init__.py View File

@@ -398,6 +398,11 @@ class CASFinder(MetaPathFinder, Loader):
else: else:
raise ValueError('unable to find loader for url %s' % repr(urllib.parse.urlunparse(url))) raise ValueError('unable to find loader for url %s' % repr(urllib.parse.urlunparse(url)))


hash = hashlib.sha256(data).hexdigest()
wrtr = self._writer
if wrtr is not None:
wrtr.write_cache(hash, data)

exec(data, module.__dict__) exec(data, module.__dict__)


# we were successful, add the aliases # we were successful, add the aliases
@@ -767,7 +772,7 @@ class Test(unittest.TestCase):
sys.path.append(fixdir) sys.path.append(fixdir)


# that a fake ipfsloader # that a fake ipfsloader
with open(self.fixtures / 'hello.py') as fp:
with open(self.fixtures / 'hello.py', 'rb') as fp:
# that returns the correct data # that returns the correct data
fakedata = fp.read() fakedata = fp.read()


@@ -784,9 +789,20 @@ class Test(unittest.TestCase):
with CASFinder() as f, \ with CASFinder() as f, \
tempattrset(sys.modules[__name__], tempattrset(sys.modules[__name__],
'load_mod_aliases', f.load_mod_aliases): 'load_mod_aliases', f.load_mod_aliases):
# that a cache dir
cachedir = self.tempdir / 'cache'
fd = FileDirCAS(cachedir)


# when registered
f.register(fd)

# as a writer
f.register_write(fd)

# and the fake ipfs module
f.register(fakeipfsloader) f.register(fakeipfsloader)


# and the pkg we are about to load, isn't
self.assertNotIn('randpkg', sys.modules) self.assertNotIn('randpkg', sys.modules)


# that the import is successful # that the import is successful
@@ -795,6 +811,12 @@ class Test(unittest.TestCase):
# and pulled in the method # and pulled in the method
self.assertTrue(hasattr(randpkg, 'hello')) self.assertTrue(hasattr(randpkg, 'hello'))


# that the cache was written to, and matches
hash = hashlib.sha256(fakedata).hexdigest()
filecmp.cmp(cachedir / '3' / (hash + '.py'),
self.fixtures / 'hello.py')

# clean up
del sys.modules['randpkg'] del sys.modules['randpkg']
finally: finally:
sys.path.remove(fixdir) sys.path.remove(fixdir)


Loading…
Cancel
Save