예제 #1
0
    def test_enabling_just_one_module_in_diretory(
        self,
        test_config_directory,
    ):
        enabling_statement = {'name': 'south_america::brazil'}
        directory_module = DirectoryModuleSource(
            enabling_statement=enabling_statement,
            modules_directory=test_config_directory / 'freezed_modules',
        )
        assert directory_module.modules({}) == {
            'south_america::brazil': {
                'on_startup': {
                    'run': 'echo Greetings from Brazil!',
                },
            },
        }

        assert directory_module.context({}) == {
            'geography': {
                'brazil': {
                    'capitol': 'Brasilia',
                },
                'argentina': {
                    'capitol': 'Buenos Aires',
                },
            },
        }
예제 #2
0
 def test_error_on_enabling_non_existent_module(
     self,
     test_config_directory,
 ):
     enabling_statement = {'name': 'north_america::colombia'}
     with pytest.raises(NonExistentEnabledModule):
         directory_module = DirectoryModuleSource(
             enabling_statement=enabling_statement,
             modules_directory=test_config_directory / 'freezed_modules',
         )
         directory_module.modules({})
예제 #3
0
def test_retrieval_of_external_module_config(test_config_directory):
    external_module_source_config = {'name': 'burma::*'}
    external_module_source = DirectoryModuleSource(
        enabling_statement=external_module_source_config,
        modules_directory=test_config_directory / 'test_modules',
    )

    assert external_module_source.modules({}) == {
        'burma::burma': {
            'enabled': True,
            'safe': False,
        },
    }
예제 #4
0
    def test_checking_if_directory_modules_contain_module_name(
        self,
        test_config_directory,
    ):
        enabling_statement = {'name': 'south_america::brazil'}
        directory_module = DirectoryModuleSource(
            enabling_statement=enabling_statement,
            modules_directory=test_config_directory / 'freezed_modules',
        )
        directory_module.modules({})

        assert 'south_america::brazil' in directory_module

        assert 'south_america::argentina' not in directory_module
        assert 'brazil' not in directory_module
        assert 'argentina' not in directory_module
예제 #5
0
 def test_recursive_module_directory(
     self,
     test_config_directory,
 ):
     enabling_statement = {'name': 'recursive/directory::bulgaria'}
     directory_module = DirectoryModuleSource(
         enabling_statement=enabling_statement,
         modules_directory=test_config_directory / 'test_modules',
     )
     assert directory_module.modules({}) == {
         'recursive/directory::bulgaria': {
             'on_startup': {
                 'run': "echo 'Greetings from Bulgaria!'",
             },
         },
     }
예제 #6
0
def test_enabled_modules(test_config_directory):
    modules_config = GlobalModulesConfig(
        {
            'modules_directory':
            'test_modules',
            'enabled_modules': [
                {
                    'name': 'oslo::*',
                    'safe': True
                },
                {
                    'name': 'trondheim::*'
                },
            ],
        },
        config_directory=test_config_directory)

    # Test that all ExternalModuleSource objects are created
    modules_directory_path = test_config_directory / 'test_modules'
    oslo_path = modules_directory_path / 'oslo'
    trondheim_path = modules_directory_path / 'trondheim'

    oslo = DirectoryModuleSource(
        enabling_statement={
            'name': 'oslo::*',
            'trusted': True
        },
        modules_directory=modules_directory_path,
    )
    trondheim = DirectoryModuleSource(
        enabling_statement={
            'name': 'trondheim::*',
            'trusted': False
        },
        modules_directory=modules_directory_path,
    )

    assert len(tuple(modules_config.external_module_sources)) == 2

    assert oslo in tuple(modules_config.external_module_sources)
    assert trondheim in tuple(modules_config.external_module_sources)

    # Test that all module config files are correctly set
    assert oslo_path / 'config.yml' in modules_config.external_module_config_files
    assert trondheim_path / 'config.yml' in modules_config.external_module_config_files
예제 #7
0
def test_external_module(test_config_directory):
    modules_directory_path = test_config_directory / 'test_modules'
    oslo = DirectoryModuleSource(
        enabling_statement={'name': 'oslo::*'},
        modules_directory=modules_directory_path,
    )

    oslo_path = test_config_directory / 'test_modules' / 'oslo'
    assert oslo.directory == oslo_path
    assert oslo.trusted is True
    assert oslo.relative_directory_path == Path('oslo')
    assert oslo.modules_file == oslo_path / 'modules.yml'
예제 #8
0
 def test_getting_config_dict_from_directory_module(
     self,
     test_config_directory,
 ):
     enabling_statement = {'name': 'north_america::USA'}
     directory_module = DirectoryModuleSource(
         enabling_statement=enabling_statement,
         modules_directory=test_config_directory / 'freezed_modules',
     )
     assert directory_module.config({}) == {
         'module/north_america::USA': {
             'on_startup': {
                 'run': 'echo Greetings from the USA!',
             },
         },
         'context/geography': {
             'USA': {
                 'capitol': 'Washington D.C.',
             },
         },
     }
예제 #9
0
    def test_which_enabling_statements_represents_directory_module_sources(
        self, ):
        assert DirectoryModuleSource.represented_by(
            module_name='category::name', )
        assert DirectoryModuleSource.represented_by(
            module_name='category/recursive::name', )
        assert DirectoryModuleSource.represented_by(
            module_name='category::*', )
        assert DirectoryModuleSource.represented_by(module_name='*::*', )

        assert not DirectoryModuleSource.represented_by(
            module_name='category::*not_valid', )
        assert not DirectoryModuleSource.represented_by(
            module_name='category::not_valid*', )
        assert not DirectoryModuleSource.represented_by(module_name='name', )
        assert not DirectoryModuleSource.represented_by(module_name='*', )