def setup(self):
     self.defaults = {
         'type': 'movie',
         'person': {
             'name': 'P.T. Anderson',
             'job': 'Director'
         }
     }
     self.config = Config(defaults=self.defaults)
def test_init():
    # Test lazy loading (not pointing to a config file)
    config = Config()
    assert config.markup is json

    # Test loading with some defaults
    config = Config(defaults=dict(name='P.T. Anderson'))
    assert config['name'] == 'P.T. Anderson'

    # Test loading with an alternate markup engine
    config = Config(markup=toml)
    assert config.markup is toml

    # Test loading with a non-existent config file
    config = Config(LazyFile('tests/fixtures/nothing.json', 'w'))
    assert config == {}

    # Test loading with an existing config file
    config = Config(LazyFile('tests/fixtures/something.json', 'w'))
    assert config['title'] == 'Magnolia'
def root(context, config, database, verbose, log_file):
    """Clinical sequencing coverage analysis tool."""
    # setup logging
    loglevel = LEVELS.get(min(verbose, 2), 'WARNING')
    init_log(logging.getLogger(), loglevel=loglevel, filename=log_file)
    logger.info("version {0}".format(__version__))

    # avoid setting global defaults in Click options, do it below when
    # updating the config object
    context.obj = Config(config, markup=markup)
    context.obj['database'] = (database or context.obj.get(
        'database', 'coverage.sqlite3'))

    # update the context with new defaults from the config file
    context.default_map = context.obj