Beispiel #1
0
def test_measure_persistence(measure_workbench, measure, tmpdir, monkeypatch):
    """Test saving and reloading a measure.

    """
    measure_workbench.register(TasksManagerManifest())
    plugin = measure_workbench.get_plugin('ecpy.measure')

    for m_e in ('meas_name', 'meas_id', 'meas_date'):
        assert m_e in measure.root_task.database_entries
    measure.add_tool('pre-hook', 'dummy')
    measure.root_task.default_path = 'test'
    measure.pre_hooks['dummy'].fail_check = True

    path = str(tmpdir.join('test.meas.ini'))
    measure.save(path)
    assert measure.path == path

    loaded, errors = Measure.load(plugin, path)
    assert loaded.root_task.default_path == 'test'
    assert loaded.pre_hooks['dummy'].fail_check
    assert loaded.path == path
    assert not errors

    # Test handling errors : root_task rebuilding and tool rebuilding.
    class CommandError(Exception):
        pass

    def generate_err(self, cmd, infos, u=None):
        raise CommandError()

    from enaml.workbench.core.core_plugin import CorePlugin
    old = CorePlugin.invoke_command
    monkeypatch.setattr(CorePlugin, 'invoke_command', generate_err)

    loaded, errors = Measure.load(plugin, path)
    assert loaded is None
    assert 'main task' in errors and 'CommandError' in errors['main task']

    CorePlugin.invoke_command = old

    class CreationError(Exception):
        pass

    class Fail(object):
        def new(self, workbench, default=True):
            raise CreationError()

    plugin._pre_hooks.contributions['dummy'] = Fail()

    loaded, errors = Measure.load(plugin, path)
    assert loaded is None
    assert 'pre-hook' in errors and 'dummy' in errors['pre-hook']
    assert 'CreationError' in errors['pre-hook']['dummy']
Beispiel #2
0
def test_measure_persistence(measure_workbench, measure, tmpdir, monkeypatch):
    """Test saving and reloading a measure.

    """
    measure_workbench.register(TasksManagerManifest())
    plugin = measure_workbench.get_plugin('ecpy.measure')

    measure.add_tool('pre-hook', 'dummy')
    measure.root_task.default_path = 'test'
    measure.pre_hooks['dummy'].fail_check = True

    path = str(tmpdir.join('test.meas.ini'))
    measure.save(path)
    assert measure.path == path

    loaded, errors = Measure.load(plugin, path)
    assert loaded.root_task.default_path == 'test'
    assert loaded.pre_hooks['dummy'].fail_check
    assert loaded.path == path
    assert not errors

    # Test handling errors : root_task rebuilding and tool rebuilding.
    class CommandError(Exception):
        pass

    def generate_err(self, cmd, infos, u=None):
        raise CommandError()

    from enaml.workbench.core.core_plugin import CorePlugin
    monkeypatch.setattr(CorePlugin, 'invoke_command', generate_err)

    class CreationError(Exception):
        pass

    class Fail(object):
        def new(self, workbench, default=True):
            raise CreationError()

    plugin._pre_hooks.contributions['dummy'] = Fail()

    loaded, errors = Measure.load(plugin, path)
    assert loaded is None
    assert 'main task' in errors and 'CommandError' in errors['main task']
    assert 'pre-hook' in errors and 'dummy' in errors['pre-hook']
    assert 'CreationError' in errors['pre-hook']['dummy']
def test_converting_a_measure(measure_workbench, meas_file, tmpdir,
                              monkeypatch):
    """Test converting a measure created using HQCMeas to make it run on Ecpy.

    """
    from ecpy.measure.monitors.text_monitor import monitor
    monkeypatch.setattr(monitor, 'information', lambda *args, **kwargs: 1)
    measure_workbench.register(TasksManagerManifest())
    measure_workbench.register(HqcLegacyManifest())
    plugin = measure_workbench.get_plugin('ecpy.measure')

    path = convert_measure(os.path.join(MEASURE_DIRECTORY, meas_file),
                           dest_folder=str(tmpdir))

    res, errors = Measure.load(plugin, path)
    with open(path) as f:
        print(errors.get('main task'), f.read())
    assert res