Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test cli #5548

Merged
merged 2 commits into from
Nov 23, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
180 changes: 180 additions & 0 deletions components/tools/OmeroPy/src/omero/testlib/cli.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,180 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-

#
# Copyright (C) 2013 University of Dundee & Open Microscopy Environment.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.


import pytest

import omero
from omero.cli import CLI
from omero.plugins.sessions import SessionsControl
from omero.rtypes import rstring

from omero.testlib import ITest
from omero_ext.mox import Mox


class AbstractCLITest(ITest):

@classmethod
def setup_class(cls):
super(AbstractCLITest, cls).setup_class()
cls.cli = CLI()
cls.cli.register("sessions", SessionsControl, "TEST")

def setup_mock(self):
self.mox = Mox()

def teardown_mock(self):
self.mox.UnsetStubs()
self.mox.VerifyAll()


class CLITest(AbstractCLITest):

def setup_method(self, method):
self.args = self.login_args()

def create_object(self, object_type, name=""):
# create object
if object_type == 'Dataset':
new_object = omero.model.DatasetI()
elif object_type == 'Project':
new_object = omero.model.ProjectI()
elif object_type == 'Plate':
new_object = omero.model.PlateI()
elif object_type == 'Screen':
new_object = omero.model.ScreenI()
elif object_type == 'Image':
new_object = self.new_image()
new_object.name = rstring(name)
new_object = self.update.saveAndReturnObject(new_object)

# check object has been created
found_object = self.query.get(object_type, new_object.id.val)
assert found_object.id.val == new_object.id.val

return new_object.id.val

@pytest.fixture()
def simpleHierarchy(self):
proj = self.make_project()
dset = self.make_dataset()
img = self.update.saveAndReturnObject(self.new_image())
self.link(proj, dset)
self.link(dset, img)
return proj, dset, img


class RootCLITest(AbstractCLITest):

def setup_method(self, method):
self.args = self.root_login_args()


class ArgumentFixture(object):

"""
Used to test the user/group argument
"""

def __init__(self, prefix, attr):
self.prefix = prefix
self.attr = attr

def get_arguments(self, obj):
args = []
if self.prefix:
args += [self.prefix]
if self.attr:
args += ["%s" % getattr(obj, self.attr).val]
return args

def __repr__(self):
if self.prefix:
return "%s" % self.prefix
else:
return "%s" % self.attr


UserIdNameFixtures = (
ArgumentFixture('--id', 'id'),
ArgumentFixture('--name', 'omeName'),
)

UserFixtures = (
ArgumentFixture(None, 'id'),
ArgumentFixture(None, 'omeName'),
ArgumentFixture('--user-id', 'id'),
ArgumentFixture('--user-name', 'omeName'),
)

GroupIdNameFixtures = (
ArgumentFixture('--id', 'id'),
ArgumentFixture('--name', 'name'),
)

GroupFixtures = (
ArgumentFixture(None, 'id'),
ArgumentFixture(None, 'name'),
ArgumentFixture('--group-id', 'id'),
ArgumentFixture('--group-name', 'name'),
)


def get_user_ids(out, sort_key=None):
columns = {'login': 1, 'first-name': 2, 'last-name': 3, 'email': 4}
lines = out.split('\n')
ids = []
last_value = None
for line in lines[2:]:
elements = line.split('|')
if len(elements) < 8:
continue

ids.append(int(elements[0].strip()))
if sort_key:
if sort_key == 'id':
new_value = ids[-1]
else:
new_value = elements[columns[sort_key]].strip()
assert new_value >= last_value
last_value = new_value
return ids


def get_group_ids(out, sort_key=None):
lines = out.split('\n')
ids = []
last_value = None
for line in lines[2:]:
elements = line.split('|')
if len(elements) < 4:
continue

ids.append(int(elements[0].strip()))
if sort_key:
if sort_key == 'id':
new_value = ids[-1]
else:
new_value = elements[1].strip()
assert new_value >= last_value
last_value = new_value
return ids
13 changes: 13 additions & 0 deletions components/tools/OmeroPy/test/integration/clitest/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@


import pytest
import warnings
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rather than warning, this file could likely just import the testlib names as aliases.


import omero
from omero.cli import CLI
Expand All @@ -32,6 +33,9 @@


class AbstractCLITest(ITest):
warnings.warn("Deprecated in 5.4.1."
"Use omero.testlib.cli",
DeprecationWarning)

@classmethod
def setup_class(cls):
Expand All @@ -48,6 +52,9 @@ def teardown_mock(self):


class CLITest(AbstractCLITest):
warnings.warn("Deprecated in 5.4.1."
"Use omero.testlib.cli",
DeprecationWarning)

def setup_method(self, method):
self.args = self.login_args()
Expand Down Expand Up @@ -84,6 +91,9 @@ def simpleHierarchy(self):


class RootCLITest(AbstractCLITest):
warnings.warn("Deprecated in 5.4.1."
"Use omero.testlib.cli",
DeprecationWarning)

def setup_method(self, method):
self.args = self.root_login_args()
Expand All @@ -94,6 +104,9 @@ class ArgumentFixture(object):
"""
Used to test the user/group argument
"""
warnings.warn("Deprecated in 5.4.1."
"Use omero.testlib.cli",
DeprecationWarning)

def __init__(self, prefix, attr):
self.prefix = prefix
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@

import pytest

from test.integration.clitest.cli import CLITest
from omero.testlib.cli import CLITest
import omero.plugins.admin
from omero.cli import NonZeroReturnCode
from path import path
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
import omero
from omero.cli import NonZeroReturnCode
from omero.plugins.chgrp import ChgrpControl
from test.integration.clitest.cli import CLITest, RootCLITest
from omero.testlib.cli import CLITest, RootCLITest
import pytest

object_types = ["Image", "Dataset", "Project", "Plate", "Screen"]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@

import omero
from omero.plugins.chown import ChownControl
from test.integration.clitest.cli import CLITest, RootCLITest
from omero.testlib.cli import CLITest, RootCLITest
from test.integration.clitest.test_tag import AbstractTagTest
import pytest

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.


from test.integration.clitest.cli import CLITest
from omero.testlib.cli import CLITest
from omero.cli import NonZeroReturnCode
from omero.cmd import Delete2

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@

import omero
from omero.plugins.delete import DeleteControl
from test.integration.clitest.cli import CLITest
from omero.testlib.cli import CLITest
from test.integration.clitest.test_tag import AbstractTagTest
import pytest

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
from collections import namedtuple
from omero.plugins.download import DownloadControl
from omero.cli import NonZeroReturnCode
from test.integration.clitest.cli import CLITest
from omero.testlib.cli import CLITest
from omero.rtypes import rstring
from omero.model import NamedValue as NV
from omero.util.temp_files import create_path
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@

import omero
from omero.plugins.duplicate import DuplicateControl
from test.integration.clitest.cli import CLITest
from omero.testlib.cli import CLITest
import pytest

object_types = ["Image", "Dataset", "Project", "Plate", "Screen"]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

from test.integration.clitest.cli import CLITest, RootCLITest
from omero.testlib.cli import CLITest, RootCLITest
from omero.cli import NonZeroReturnCode
from omero.plugins.fs import FsControl

Expand Down
10 changes: 5 additions & 5 deletions components/tools/OmeroPy/test/integration/clitest/test_group.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,11 @@

from omero.plugins.group import GroupControl, defaultperms
from omero.cli import NonZeroReturnCode
from test.integration.clitest.cli import CLITest, RootCLITest
from test.integration.clitest.cli import get_user_ids, get_group_ids
from test.integration.clitest.cli import GroupIdNameFixtures
from test.integration.clitest.cli import GroupFixtures
from test.integration.clitest.cli import UserFixtures
from omero.testlib.cli import CLITest, RootCLITest
from omero.testlib.cli import get_user_ids, get_group_ids
from omero.testlib.cli import GroupIdNameFixtures
from omero.testlib.cli import GroupFixtures
from omero.testlib.cli import UserFixtures
import pytest

GroupNames = [str(x) for x in GroupFixtures]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
plugin = __import__('omero.plugins.import', globals(), locals(),
['ImportControl'], -1)
ImportControl = plugin.ImportControl
from test.integration.clitest.cli import CLITest
from omero.testlib.cli import CLITest
import pytest
import stat
import re
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

from test.integration.clitest.cli import CLITest
from omero.testlib.cli import CLITest
from omero.cli import NonZeroReturnCode
from omero.plugins.ldap import LdapControl

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
from omero.gateway import BlitzGateway
from omero.plugins.metadata import Metadata, MetadataControl
from omero.rtypes import rdouble, unwrap
from test.integration.clitest.cli import CLITest
from omero.testlib.cli import CLITest


class MetadataTestBase(CLITest):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
import pytest
import omero

from test.integration.clitest.cli import CLITest
from omero.testlib.cli import CLITest
from omero_model_NamespaceI import NamespaceI
from omero.plugins.obj import ObjControl
from omero.util.temp_files import create_path
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

"""

from test.integration.clitest.cli import CLITest
from omero.testlib.cli import CLITest
from omero.plugins.script import ScriptControl
from omero.util.temp_files import create_path

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
from datetime import datetime
from datetime import timedelta

from test.integration.clitest.cli import CLITest
from omero.testlib.cli import CLITest
from omero.cli import NonZeroReturnCode
from omero.model import DatasetI
from omero.plugins.search import SearchControl
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

from test.integration.clitest.cli import CLITest
from omero.testlib.cli import CLITest
from omero.cli import NonZeroReturnCode
from omero.model import Experimenter
import pytest
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
from omero.plugins.tag import TagControl
from omero.cli import NonZeroReturnCode
from omero.testlib import PFS
from test.integration.clitest.cli import CLITest
from omero.testlib.cli import CLITest
from omero.rtypes import rstring, rlong
from omero.util.temp_files import create_path
import __builtin__
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@

import pytest

from test.integration.clitest.cli import CLITest
from omero.testlib.cli import CLITest
from omero.cli import NonZeroReturnCode
from omero.plugins.obj import ObjControl
from omero.plugins.upload import UploadControl
Expand Down