def test_config_load(): with tempfile.TemporaryDirectory() as tempdir: c = Config(config_dir=tempdir) c['foo'] = 1 old = c.config c.load() assert c.config == old
def test_defaults(): c = Config(in_memory=True, defaults={'foo': 1}) assert c.get('foo') == 1 c['foo'] = 2 assert c.get('foo') == 2 del c['foo'] assert c.get('foo') == 1
def test_get(): with tempfile.TemporaryDirectory() as tempdir: c = Config(config_dir=tempdir) assert c.get('foo') is None assert c.get('foo', 1) == 1 c['foo'] = 2 assert c.get('foo') == 2
def test_config_save(): with tempfile.TemporaryDirectory() as tempdir: c = Config(config_dir=tempdir) c.save() old = c.config c.load() assert old == c.config
def test_config_load(): with tempfile.TemporaryDirectory() as tempdir: c = Config(config_dir=tempdir) c.load() assert c.data == {} c['foo'] = 1 old = c.data c.load() assert c.data == old c = Config(config_dir=tempdir, in_memory=True) c.load() assert c.data == {}
def test_config_save(): with tempfile.TemporaryDirectory() as tempdir: c = Config(config_dir=tempdir) c['foo'] = 1 c.save() old = c.data c.load() assert old == c.data with tempfile.TemporaryDirectory() as tempdir: c = Config(config_dir=tempdir, in_memory=True) c['foo'] = 1 c.save() assert not Path(tempdir, 'spritzle.conf').exists()
def core(): # Create a new event loop for each core so that tests can't interfere with eachothers executor pools. loop = asyncio.new_event_loop() asyncio.set_event_loop(loop) loop.set_debug(True) config = Config(in_memory=True, config_dir='/tmp') state_dir = Path(tempfile.mkdtemp(prefix='spritzle-test')) core = Core(config, state_dir) @run_until_complete async def core_start(): await core.start( settings={ 'enable_upnp': False, 'enable_natpmp': False, 'enable_lsd': False, 'enable_dht': False, 'anonymous_mode': True, 'alert_mask': 0, 'stop_tracker_timeout': 0, }) core_start() yield core @run_until_complete async def core_stop(): await core.stop() core_stop() shutil.rmtree(str(state_dir))
def test_len(): with tempfile.TemporaryDirectory() as tempdir: c = Config(config_dir=tempdir) assert len(c) == 0 c['foo'] = 1 assert len(c) == 1 c['bar'] = 1 assert len(c) == 2
def test_init_load(): with tempfile.TemporaryDirectory() as tempdir: c = Config(config_dir=tempdir) c['foo'] = 1 c.save() c = Config(config_dir=tempdir) assert c.get('foo') == 1
async def create_mock_request(core=None, config=None): config = Config(in_memory=True, config_dir='/tmp', initial=config) core.config = config request = MagicMock() request.app = { 'spritzle.core': core, 'spritzle.config': config, } return request
def main(): parser = argparse.ArgumentParser(description='Spritzled') parser.add_argument('--debug', dest='debug', default=False, action='store_true') parser.add_argument('-p', '--port', dest='port', default=8080, type=int) parser.add_argument('-c', '--config_dir', dest='config_dir', type=str) parser.add_argument('-l', '--log-level', default='INFO', dest='log_level', type=str) args = parser.parse_args() log = setup_logger(name='spritzle', level=args.log_level) log.info(f'spritzled starting.. args: {args}') app['spritzle.log'] = log loop = asyncio.get_event_loop() loop.set_debug(args.debug) config = Config('spritzle.conf', args.config_dir) # Prevent more than one process using the same config path from running. f = Path(config.path, 'spritzled.lock').open(mode='w') try: fcntl.lockf(f, fcntl.LOCK_EX | fcntl.LOCK_NB) except IOError as e: log.error(f'Another instance of Spritzle is running: {e}') log.error('Exiting..') sys.exit(0) if not config['auth_secret']: config['auth_secret'] = secrets.token_hex() app['spritzle.config'] = config app['spritzle.core'] = Core(app['spritzle.config']) async def on_startup(app): await app['spritzle.core'].start() async def on_shutdown(app): await app['spritzle.core'].stop() app.on_startup.append(on_startup) app.on_shutdown.append(on_shutdown) setup_routes() aiohttp.web.run_app(app)
def test_config_init_no_dir(): tmpdir = Path(tempfile.gettempdir(), 'spritzletmpdir') home = os.environ['HOME'] os.environ['HOME'] = str(tmpdir) c = Config() os.environ['HOME'] = home assert c.config_file == Path( tmpdir, '.config', 'spritzle', 'spritzled.conf') assert c.config_file.is_file() shutil.rmtree(tmpdir)
def test_iter(): with tempfile.TemporaryDirectory() as tempdir: c = Config(config_dir=tempdir) c['foo'] = 1 assert next(iter(c)) == 'foo'
def test_config_init_with_dir(): with tempfile.TemporaryDirectory() as tempdir: Config(config_dir=tempdir)
def test_initial(): c = Config(in_memory=True, initial={'foo': 1}) assert c.get('foo') == 1
def test_delitem(): with tempfile.TemporaryDirectory() as tempdir: c = Config(config_dir=tempdir) c['foo'] = 1 del c['foo'] assert 'foo' not in c