def config_defaults(self, fixture): """To facilitate dependency injection, the Configuration of one Egg can set the 'automatic' ConfigSettings of another egg on which it depends.""" egg_needing_injection = EasterEgg('test-inject') fixture.set_config_spec( egg_needing_injection, 'reahl.component_dev.test_config:ConfigWithInjectedSetting') pkg_resources.working_set.add(egg_needing_injection) fixture.set_config_spec( easter_egg, 'reahl.component_dev.test_config:ConfigWhichInjectsSetting') easter_egg.add_dependency( egg_needing_injection.as_requirement_string()) # Usually this happens inside other infrastructure, such as the implementation of reahl serve (see reahl-dev) config = StoredConfiguration(fixture.config_dir.name) config.configure() # The default value is still used vassert(config.some_key.injected_setting == 123)
class EasterFixture: group_name = 'abc' stub_egg = EasterEgg()
from __future__ import print_function, unicode_literals, absolute_import, division import pkg_resources from reahl.stubble import EasterEgg #first we need some stub classes which in real life would be provided # by another egg as entry points: class StubClass1(object): pass class StubClass2(object): pass #then, we initialise the EasterEgg: stub_egg = EasterEgg() pkg_resources.working_set.add(stub_egg) #then, use 1 of two methods to add the stubbed entry point classes: group_name = 'xxx' stub_egg.add_entry_point_from_line(group_name, 'test1 = examples.setuptools:StubClass1') stub_egg.add_entry_point(group_name, 'test2', StubClass2) #now, the actual code (which is presumably being tested) # (we just print out each class it finds...) for i in pkg_resources.iter_entry_points(group_name): print(i.load())
def new_containing_egg(self): egg = EasterEgg(name='example_egg', location=self.egg_directory.name) yield egg egg.deactivate()
def setUp(self): self.group_name = 'abc' self.stub_egg = EasterEgg() self.saved_working_set = pkg_resources.working_set pkg_resources.working_set = pkg_resources.WorkingSet() pkg_resources.working_set.add(self.stub_egg)
class EasterEggTests(object): class TestClass1(object): pass def setUp(self): self.group_name = 'abc' self.stub_egg = EasterEgg() self.saved_working_set = pkg_resources.working_set pkg_resources.working_set = pkg_resources.WorkingSet() pkg_resources.working_set.add(self.stub_egg) def tearDown(self): pkg_resources.working_set = self.saved_working_set @istest def test_adding_entry_points_affect_entry_point_map(self): self.stub_egg.add_entry_point_from_line( self.group_name, 'test1 = reahl.stubble_dev.test_easteregg:EasterEggTests.TestClass1' ) self.stub_egg.add_entry_point(self.group_name, 'test2', TestClass2) epmap = self.stub_egg.get_entry_map() assert list(epmap.keys()) == [self.group_name] name_to_entry_point = list(epmap.values())[0] assert len(list(name_to_entry_point.keys())) == 2 assert isinstance(name_to_entry_point['test1'], pkg_resources.EntryPoint) assert name_to_entry_point['test1'].load() is EasterEggTests.TestClass1 assert isinstance(name_to_entry_point['test2'], pkg_resources.EntryPoint) assert name_to_entry_point['test2'].load() is TestClass2 self.stub_egg.clear() assert not self.stub_egg.get_entry_map() @istest def test_resource_api(self): test_file = NamedTemporaryFile(mode='wb+') dirname, file_name = os.path.split(test_file.name) self.stub_egg.location = dirname self.stub_egg.activate() assert pkg_resources.resource_exists(self.stub_egg.as_requirement(), file_name) assert not pkg_resources.resource_exists( self.stub_egg.as_requirement(), 'IDoNotExist') contents = b'asdd ' test_file.write(contents) test_file.flush() as_string = pkg_resources.resource_string( self.stub_egg.as_requirement(), file_name) assert as_string == contents as_file = pkg_resources.resource_stream(self.stub_egg.as_requirement(), file_name) assert as_file.read() == contents @istest def test_resource_api_from_module_name(self): test_file = NamedTemporaryFile(mode='wb+', suffix='.py') dirname, file_name = os.path.split(test_file.name) self.stub_egg.location = dirname self.stub_egg.activate() module_name = file_name.split('.')[0] assert pkg_resources.resource_exists(module_name, '') assert pkg_resources.resource_filename(module_name, '') == dirname
def new_containing_egg(self): return EasterEgg(name='example_egg', location=self.egg_directory.name)