def test_copying_in_on_modified_block( action_block_factory, create_temp_files, module_factory, ): """Module should copy properly.""" file1, file2, file3, file4 = create_temp_files(4) file2.write_text('original') file4.write_text('some other content') action_block = action_block_factory(copy=[ { 'content': str(file1), 'target': str(file2) }, { 'content': str(file3), 'target': str(file4) }, ], ) module = module_factory(on_modified=action_block, path=Path('/a/b/c')) module_manager = ModuleManager() module_manager.modules = {'test': module} module_manager.on_modified(Path('/a/b/c')) # Check if content has been copied assert file2.read_text() == file1.read_text() assert file4.read_text() == file3.read_text()
def test_symlinking_in_on_startup_block( action_block_factory, module_factory, create_temp_files, ): """ModuleManager should symlink properly.""" file1, file2, file3, file4 = create_temp_files(4) file2.write_text('original') action_block = action_block_factory(symlink=[ { 'content': str(file1), 'target': str(file2) }, { 'content': str(file3), 'target': str(file4) }, ], ) module = module_factory(on_startup=action_block) module_manager = ModuleManager() module_manager.modules = {'test': module} module_manager.finish_tasks() assert file2.is_symlink() assert file2.resolve() == file1 assert file4.is_symlink() assert file4.resolve() == file3
def test_stowing( action_block_factory, create_temp_files, module_factory, ): """ModuleManager should stow properly.""" template, target = create_temp_files(2) template.write_text('{{ env.EXAMPLE_ENV_VARIABLE }}') symlink_target = template.parent / 'symlink_me' symlink_target.touch() action_block = action_block_factory(stow={ 'content': str(template.parent), 'target': str(target.parent), 'templates': r'file(0).temp', 'non_templates': 'symlink', }, ) module = module_factory(on_exit=action_block, ) module_manager = ModuleManager() module_manager.modules = {'test': module} module_manager.exit() # Check if template has been compiled assert Path(target.parent / '0').read_text() == 'test_value' # Check if non_template has been symlinked assert (template.parent / 'symlink_me').resolve() == symlink_target
def _module_manager_factory( *modules, context=Context(), ) -> ModuleManager: """Return ModuleManager object with given modules and context.""" module_manager = ModuleManager(context=context, ) module_manager.modules = {module.name: module for module in modules} # Insert correct context for all actions for module in modules: for block in module.all_action_blocks(): for action_type in ActionBlock.action_types: for actions in getattr(block, f'_{action_type}_actions'): actions.context_store = context return module_manager