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
Exemple #3
0
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
Exemple #4
0
    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