def test_exception_policy(self):
        class MyException(Exception):
            pass
        class ConductorPluginStub:
            def set_result_dir(self, *args):
                raise MyException

        tr_data = TestRunData(Options(), {})
        plugins = ConductorPlugins(tr_data)
        plugins._plugins = [ConductorPluginStub()]
        plugins.set_result_dir(None)
        plugins.SWALLOW_EXCEPTIONS = False
        self.assertRaises(MyException, plugins.set_result_dir, None)
    def test_delegator_iter_getter(self):
        class ConductorPluginStub1:
            def get_result_files(self):
                return ['/foo/file1']
        class ConductorPluginStub2:
            def get_result_files(self):
                return ['/foo/file2', '/bar/file3']

        tr_data = TestRunData(Options(), {})
        plugins = ConductorPlugins(tr_data)
        stub_1 = ConductorPluginStub1()
        stub_2 = ConductorPluginStub2()
        plugins._plugins = [stub_1, stub_2]
        expected = ['/foo/file1', '/foo/file2', '/bar/file3']
        self.assertEquals(expected, plugins.get_result_files())
    def test_delegator_iter_getter(self):
        class ConductorPluginStub1:
            def get_result_files(self):
                return ['/foo/file1']

        class ConductorPluginStub2:
            def get_result_files(self):
                return ['/foo/file2', '/bar/file3']

        tr_data = TestRunData(Options(), {})
        plugins = ConductorPlugins(tr_data)
        stub_1 = ConductorPluginStub1()
        stub_2 = ConductorPluginStub2()
        plugins._plugins = [stub_1, stub_2]
        expected = ['/foo/file1', '/foo/file2', '/bar/file3']
        self.assertEquals(expected, plugins.get_result_files())
    def test_delegators_iter_setter(self):
        class ConductorPluginStub:
            called = False
            def set_result_dir(self, target):
                self.called = True

        tr_data = TestRunData(Options(), {})
        plugins = ConductorPlugins(tr_data)
        stub_1 = ConductorPluginStub()
        stub_2 = ConductorPluginStub()
        plugins._plugins = [stub_1, stub_2]
        self.assertFalse(stub_1.called)
        self.assertFalse(stub_2.called)
        plugins.set_result_dir("/foo/bar")
        self.assertTrue(stub_1.called)
        self.assertTrue(stub_2.called)
    def test_delegators_iter_setter(self):
        class ConductorPluginStub:
            called = False

            def set_result_dir(self, target):
                self.called = True

        tr_data = TestRunData(Options(), {})
        plugins = ConductorPlugins(tr_data)
        stub_1 = ConductorPluginStub()
        stub_2 = ConductorPluginStub()
        plugins._plugins = [stub_1, stub_2]
        self.assertFalse(stub_1.called)
        self.assertFalse(stub_2.called)
        plugins.set_result_dir("/foo/bar")
        self.assertTrue(stub_1.called)
        self.assertTrue(stub_2.called)
    def test_exception_policy(self):
        class MyException(Exception):
            pass

        class ConductorPluginStub:
            def set_result_dir(self, *args):
                raise MyException

        tr_data = TestRunData(Options(), {})
        plugins = ConductorPlugins(tr_data)
        plugins._plugins = [ConductorPluginStub()]
        plugins.set_result_dir(None)
        plugins.SWALLOW_EXCEPTIONS = False
        self.assertRaises(MyException, plugins.set_result_dir, None)