test_custom.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import unittest
  2. import contextlib
  3. import pathlib
  4. import importlib_resources as resources
  5. from ..abc import TraversableResources, ResourceReader
  6. from . import util
  7. from ._compat import os_helper
  8. class SimpleLoader:
  9. """
  10. A simple loader that only implements a resource reader.
  11. """
  12. def __init__(self, reader: ResourceReader):
  13. self.reader = reader
  14. def get_resource_reader(self, package):
  15. return self.reader
  16. class MagicResources(TraversableResources):
  17. """
  18. Magically returns the resources at path.
  19. """
  20. def __init__(self, path: pathlib.Path):
  21. self.path = path
  22. def files(self):
  23. return self.path
  24. class CustomTraversableResourcesTests(unittest.TestCase):
  25. def setUp(self):
  26. self.fixtures = contextlib.ExitStack()
  27. self.addCleanup(self.fixtures.close)
  28. def test_custom_loader(self):
  29. temp_dir = self.fixtures.enter_context(os_helper.temp_dir())
  30. loader = SimpleLoader(MagicResources(temp_dir))
  31. pkg = util.create_package_from_loader(loader)
  32. files = resources.files(pkg)
  33. assert files is temp_dir