示例#1
0
class TestSessions(object):
    def setup_method(self, method):
        self.cli = CLI()
        self.cli.register("sessions", SessionsControl, "TEST")
        self.args = ["sessions"]

    def testHelp(self):
        self.args += ["-h"]
        self.cli.invoke(self.args, strict=True)

    @pytest.mark.parametrize("subcommand", SessionsControl().get_subcommands())
    def testSubcommandHelp(self, subcommand):
        self.args += [subcommand, "-h"]
        self.cli.invoke(self.args, strict=True)

    def testDefaultSessionsDir(self):
        from omero.util import get_user_dir
        from path import path

        # Default store sessions dir is under user dir
        store = self.cli.controls['sessions'].store(None)
        assert store.dir == path(get_user_dir()) / 'omero' / 'sessions'

    @pytest.mark.parametrize('environment', ({
        'OMERO_USERDIR': None,
        'OMERO_SESSION_DIR': None,
        'OMERO_SESSIONDIR': None
    }, {
        'OMERO_USERDIR': None,
        'OMERO_SESSION_DIR': 'session_dir',
        'OMERO_SESSIONDIR': None
    }, {
        'OMERO_USERDIR': None,
        'OMERO_SESSION_DIR': None,
        'OMERO_SESSIONDIR': 'sessiondir'
    }, {
        'OMERO_USERDIR': 'userdir',
        'OMERO_SESSION_DIR': None,
        'OMERO_SESSIONDIR': None
    }, {
        'OMERO_USERDIR': None,
        'OMERO_SESSION_DIR': 'session_dir',
        'OMERO_SESSIONDIR': 'sessiondir'
    }, {
        'OMERO_USERDIR': 'userdir',
        'OMERO_SESSION_DIR': 'session_dir',
        'OMERO_SESSIONDIR': None
    }, {
        'OMERO_USERDIR': 'userdir',
        'OMERO_SESSION_DIR': None,
        'OMERO_SESSIONDIR': 'sessiondir'
    }, {
        'OMERO_USERDIR': 'userdir',
        'OMERO_SESSION_DIR': 'session_dir',
        'OMERO_SESSIONDIR': 'sessiondir'
    }))
    @pytest.mark.parametrize('session_args', [None, 'session_dir'])
    def testCustomSessionsDir(self, tmpdir, monkeypatch, environment,
                              session_args):
        from argparse import Namespace
        from omero.util import get_user_dir
        from path import path

        for var in environment.keys():
            if environment[var]:
                monkeypatch.setenv(var, tmpdir / environment.get(var))
            else:
                monkeypatch.delenv(var, raising=False)

        # args.session_dir sets the sessions dir
        args = Namespace()
        if session_args:
            setattr(args, session_args, tmpdir / session_args)

        if environment.get('OMERO_SESSION_DIR') or session_args:
            pytest.deprecated_call(self.cli.controls['sessions'].store, args)

        store = self.cli.controls['sessions'].store(args)
        # By order of precedence
        if environment.get('OMERO_SESSIONDIR'):
            sdir = path(tmpdir) / environment.get('OMERO_SESSIONDIR')
        elif environment.get('OMERO_SESSION_DIR'):
            sdir = (path(tmpdir) / environment.get('OMERO_SESSION_DIR') /
                    'omero' / 'sessions')
        elif session_args:
            sdir = path(getattr(args, session_args)) / 'omero' / 'sessions'
        elif environment.get('OMERO_USERDIR'):
            sdir = path(tmpdir) / environment.get('OMERO_USERDIR') / 'sessions'
        else:
            sdir = path(get_user_dir()) / 'omero' / 'sessions'
        assert store.dir == sdir