Beispiel #1
0
    def setUp(self):
        self.widgetName = "foo"
        self.widget = MockWidget(self.widgetName)
        self.config = Config()
        self.anyWidgetName = "random-widget-name"
        self.noSuchModule = "this-module-does-not-exist"
        self.moduleWithoutWidgets = Module(engine=None, widgets=None)
        self.moduleWithOneWidget = Module(engine=None,
                                          widgets=self.widget,
                                          config={"config": self.config})
        self.moduleWithMultipleWidgets = Module(
            engine=None, widgets=[self.widget, self.widget, self.widget])

        self.anyConfigName = "cfg"
        self.anotherConfigName = "cfg2"
        self.anyModule = Module(engine=None,
                                widgets=self.widget,
                                config={
                                    "name": self.anyConfigName,
                                    "config": self.config
                                })
        self.anotherModule = Module(engine=None,
                                    widgets=self.widget,
                                    config={
                                        "name": self.anotherConfigName,
                                        "config": self.config
                                    })
        self.anyKey = "some-parameter"
        self.anyValue = "value"
        self.anotherValue = "another-value"
        self.emptyKey = "i-do-not-exist"
        self.config.set("{}.{}".format(self.anyConfigName, self.anyKey),
                        self.anyValue)
        self.config.set("{}.{}".format(self.anotherConfigName, self.anyKey),
                        self.anotherValue)
Beispiel #2
0
    def setUp(self):
        self._stdout = mock.patch("sys.stdout", new_callable=StringIO)
        self._exists = mock.patch("bumblebee.modules.battery.os.path.exists")
        self._open = mock.patch("bumblebee.modules.battery.open", create=True)

        self.stdout = self._stdout.start()
        self.exists = self._exists.start()
        self.open = self._open.start()
        self.file = mock.Mock()
        self.file.__enter__ = lambda x: self.file
        self.file.__exit__ = lambda x, a, b, c: ""
        self.file.read.return_value = "120"
        self.open.return_value = self.file

        self.exists.return_value = True
        self.engine = mock.Mock()
        self.config = Config()
        self.config.set("battery.showremaining", "false")
        self.module = Module(engine=self.engine, config={"config":self.config})

        self.config.set("battery.critical", "20")
        self.config.set("battery.warning", "25")
        self.criticalValue = "19"
        self.warningValue = "21"
        self.normalValue = "26"
        self.chargedValue = "96"

        self.module.widgets()[0]
    def test_unknow(self):
        config = Config()
        config.set("http_status.target", "invalid target")
        self.module = Module(engine=mock.Mock(), config={"config":config})

        self.assertTrue("warning" in self.module.state(self.module.widgets()[0]))
        self.assertEqual(self.module.getStatus(), "UNK")
        self.assertEqual(self.module.getOutput(), "UNK != 200")
class TestConfig(unittest.TestCase):
    def setUp(self):
        self._stdout = mock.patch("bumblebee.config.sys.stdout",
                                  new_callable=StringIO)
        self._stderr = mock.patch("bumblebee.config.sys.stderr",
                                  new_callable=StringIO)

        self.stdout = self._stdout.start()
        self.stderr = self._stderr.start()

        self.defaultConfig = Config()
        self.someSimpleModules = ["foo", "bar", "baz"]
        self.someAliasModules = ["foo:a", "bar:b", "baz:c"]
        self.someTheme = "some-theme"

    def tearDown(self):
        self._stdout.stop()
        self._stderr.stop()

    def test_no_modules_by_default(self):
        self.assertEquals(self.defaultConfig.modules(), [])

    def test_simple_modules(self):
        cfg = Config(["-m"] + self.someSimpleModules)
        self.assertEquals(cfg.modules(), [{
            "name": x,
            "module": x
        } for x in self.someSimpleModules])

    def test_alias_modules(self):
        cfg = Config(["-m"] + self.someAliasModules)
        self.assertEquals(cfg.modules(), [{
            "module": x.split(":")[0],
            "name": x.split(":")[1],
        } for x in self.someAliasModules])

    def test_parameters(self):
        cfg = Config(["-m", "module", "-p", "module.key=value"])
        self.assertEquals(cfg.get("module.key"), "value")

    def test_theme(self):
        cfg = Config(["-t", self.someTheme])
        self.assertEquals(cfg.theme(), self.someTheme)

    def test_notheme(self):
        self.assertEquals(self.defaultConfig.theme(), "default")

    def test_list_themes(self):
        with self.assertRaises(SystemExit):
            cfg = Config(["-l", "themes"])
        result = self.stdout.getvalue()
        for theme in themes():
            self.assertTrue(theme in result)

    def test_invalid_list(self):
        with self.assertRaises(SystemExit):
            cfg = Config(["-l", "invalid"])
        self.assertTrue("invalid choice" in "".join(self.stderr.getvalue()))
    def test_status_success(self):
        config = Config()
        config.set("http_status.target", "http://example.org")
        self.module = Module(engine=mock.Mock(), config={"config":config})

        self.assertTrue(not "warning" in self.module.state(self.module.widgets()[0]))
        self.assertTrue(not "critical" in self.module.state(self.module.widgets()[0]))
        self.assertEqual(self.module.getStatus(), "200")
        self.assertEqual(self.module.getOutput(), "200")
Beispiel #6
0
    def _initialize_pca(self):
        log.debug("_initialize_pca()")

        self._initialize_loaders()

        self._config = Config()
        self._config.load_or_create()

        # Schedule further initialization.
        wx.CallLater(1, self._startup_system_participants)
Beispiel #7
0
class TestModule(unittest.TestCase):
    def setUp(self):
        self.widget = MockWidget("foo")
        self.config = Config()
        self.moduleWithoutWidgets = Module(engine=None, widgets=None)
        self.moduleWithOneWidget = Module(engine=None, widgets=self.widget)
        self.moduleWithMultipleWidgets = Module(
            engine=None, widgets=[self.widget, self.widget, self.widget])

        self.anyConfigName = "cfg"
        self.anotherConfigName = "cfg2"
        self.anyModule = Module(engine=None,
                                widgets=self.widget,
                                config={
                                    "name": self.anyConfigName,
                                    "config": self.config
                                })
        self.anotherModule = Module(engine=None,
                                    widgets=self.widget,
                                    config={
                                        "name": self.anotherConfigName,
                                        "config": self.config
                                    })
        self.anyKey = "some-parameter"
        self.anyValue = "value"
        self.anotherValue = "another-value"
        self.emptyKey = "i-do-not-exist"
        self.config.set("{}.{}".format(self.anyConfigName, self.anyKey),
                        self.anyValue)
        self.config.set("{}.{}".format(self.anotherConfigName, self.anyKey),
                        self.anotherValue)

    def test_empty_widgets(self):
        self.assertEquals(self.moduleWithoutWidgets.widgets(), [])

    def test_single_widget(self):
        self.assertEquals(self.moduleWithOneWidget.widgets(), [self.widget])

    def test_multiple_widgets(self):
        for widget in self.moduleWithMultipleWidgets.widgets():
            self.assertEquals(widget, self.widget)

    def test_parameters(self):
        self.assertEquals(self.anyModule.parameter(self.anyKey), self.anyValue)
        self.assertEquals(self.anotherModule.parameter(self.anyKey),
                          self.anotherValue)

    def test_default_parameters(self):
        self.assertEquals(self.anyModule.parameter(self.emptyKey), None)
        self.assertEquals(
            self.anyModule.parameter(self.emptyKey, self.anyValue),
            self.anyValue)
    def setUp(self):
        self._stdout = mock.patch("bumblebee.config.sys.stdout",
                                  new_callable=StringIO)
        self._stderr = mock.patch("bumblebee.config.sys.stderr",
                                  new_callable=StringIO)

        self.stdout = self._stdout.start()
        self.stderr = self._stderr.start()

        self.defaultConfig = Config()
        self.someSimpleModules = ["foo", "bar", "baz"]
        self.someAliasModules = ["foo:a", "bar:b", "baz:c"]
        self.someTheme = "some-theme"
Beispiel #9
0
    def test_custom_cmd(self):
        testmodules = [
            { "name": "test", "button": "test.left-click", "action": "echo" },
            { "name": "test:alias", "button": "alias.right-click", "action": "echo2" },
        ]
        cmd = "-m"
        for test in testmodules:
            cmd += " " + test["name"]
        cmd += " -p"
        for test in testmodules:
            cmd += " " + test["button"] + "=" + test["action"]
        cfg = Config(shlex.split(cmd))
        inp = MockInput()
        engine = Engine(config=cfg, output=MockOutput(), inp=inp)

        i = 0
        for module in engine.modules():
            callback = inp.get_callback(module.id)
            self.assertTrue(callback is not None)
            self.assertEquals(callback["command"], testmodules[i]["action"])
            if "left" in testmodules[i]["button"]:
                self.assertTrue(callback["button"], bumblebee.input.LEFT_MOUSE)
            if "right" in testmodules[i]["button"]:
                self.assertTrue(callback["button"], bumblebee.input.RIGHT_MOUSE)
            i += 1
 def setUp(self):
     config = Config()
     self.module = bumblebee.modules.hddtemp.Module(
         engine=mock.Mock(), config={"config": config})
     self.data_line = "|/dev/sda|TOSHIBA DT01ACA100                      �|35|C||/dev/sdb|TOSHIBA DT01ACA100                      �|37|C|"
     self.expected_parts = [
         "/dev/sda",
         "TOSHIBA DT01ACA100                      �",
         "35",
         "C",
         "",
         "/dev/sdb",
         "TOSHIBA DT01ACA100                      �",
         "37",
         "C",
         ""]
     self.expected_per_disk = [
         ["/dev/sda",
          "TOSHIBA DT01ACA100                      �",
          "35",
          "C",
          ""],
         ["/dev/sdb",
          "TOSHIBA DT01ACA100                      �",
          "37",
          "C",
          ""]]
     self.device_record = self.expected_per_disk[0]
     self.expected_name_and_temp = ("sda", "35")
     self.expected_hddtemp = "sda+35°C"
Beispiel #11
0
    def setUp(self):
        self.widgetName = "foo"
        self.widget = MockWidget(self.widgetName)
        self.config = Config()
        self.anyWidgetName = "random-widget-name"
        self.noSuchModule = "this-module-does-not-exist"
        self.moduleWithoutWidgets = Module(engine=None, widgets=None)
        self.moduleWithOneWidget = Module(engine=None, widgets=self.widget, config={"config": self.config})
        self.moduleWithMultipleWidgets = Module(engine=None,
            widgets=[self.widget, self.widget, self.widget]
        )

        self.anyConfigName = "cfg"
        self.anotherConfigName = "cfg2"
        self.anyModule = Module(engine=None, widgets=self.widget, config={
            "name": self.anyConfigName, "config": self.config
        })
        self.anotherModule = Module(engine=None, widgets=self.widget, config={
            "name": self.anotherConfigName, "config": self.config
        })
        self.anyKey = "some-parameter"
        self.anyValue = "value"
        self.anotherValue = "another-value"
        self.emptyKey = "i-do-not-exist"
        self.config.set("{}.{}".format(self.anyConfigName, self.anyKey), self.anyValue)
        self.config.set("{}.{}".format(self.anotherConfigName, self.anyKey), self.anotherValue)
Beispiel #12
0
    def _initialize_pca(self):
        log.debug("_initialize_pca()")

        self._initialize_loaders()

        self._config = Config()
        self._config.load_or_create()

        # Schedule further initialization.
        wx.CallLater(1, self._startup_system_participants)
Beispiel #13
0
class TestModule(unittest.TestCase):
    def setUp(self):
        self.widget = MockWidget("foo")
        self.config = Config()
        self.moduleWithoutWidgets = Module(engine=None, widgets=None)
        self.moduleWithOneWidget = Module(engine=None, widgets=self.widget)
        self.moduleWithMultipleWidgets = Module(engine=None,
            widgets=[self.widget, self.widget, self.widget]
        )

        self.anyConfigName = "cfg"
        self.anotherConfigName = "cfg2"
        self.anyModule = Module(engine=None, widgets=self.widget, config={
            "name": self.anyConfigName, "config": self.config
        })
        self.anotherModule = Module(engine=None, widgets=self.widget, config={
            "name": self.anotherConfigName, "config": self.config
        })
        self.anyKey = "some-parameter"
        self.anyValue = "value"
        self.anotherValue = "another-value"
        self.emptyKey = "i-do-not-exist"
        self.config.set("{}.{}".format(self.anyConfigName, self.anyKey), self.anyValue)
        self.config.set("{}.{}".format(self.anotherConfigName, self.anyKey), self.anotherValue)

    def test_empty_widgets(self):
        self.assertEquals(self.moduleWithoutWidgets.widgets(), [])

    def test_single_widget(self):
        self.assertEquals(self.moduleWithOneWidget.widgets(), [self.widget])

    def test_multiple_widgets(self):
        for widget in self.moduleWithMultipleWidgets.widgets():
            self.assertEquals(widget, self.widget)

    def test_parameters(self):
        self.assertEquals(self.anyModule.parameter(self.anyKey), self.anyValue)
        self.assertEquals(self.anotherModule.parameter(self.anyKey), self.anotherValue)

    def test_default_parameters(self):
        self.assertEquals(self.anyModule.parameter(self.emptyKey), None)
        self.assertEquals(self.anyModule.parameter(self.emptyKey, self.anyValue), self.anyValue)
Beispiel #14
0
    def setUp(self):
        self._stdout = mock.patch("bumblebee.config.sys.stdout", new_callable=StringIO)
        self._stderr = mock.patch("bumblebee.config.sys.stderr", new_callable=StringIO)

        self.stdout = self._stdout.start()
        self.stderr = self._stderr.start()

        self.defaultConfig = Config()
        self.someSimpleModules = ["foo", "bar", "baz"]
        self.someAliasModules = ["foo:a", "bar:b", "baz:c"]
        self.someTheme = "some-theme"
Beispiel #15
0
 def setUp(self):
     self.engine = Engine(config=Config(), output=MockOutput(), inp=MockInput())
     self.testModule = "test"
     self.testAlias = "test-alias"
     self.singleWidgetModule = [{"module": self.testModule, "name": "a"}]
     self.singleWidgetAlias = [{"module": self.testAlias, "name": "a" }]
     self.invalidModule = "no-such-module"
     self.testModuleSpec = "bumblebee.modules.{}".format(self.testModule)
     self.testModules = [
         {"module": "test", "name": "a"},
         {"module": "test", "name": "b"},
     ]
    def test_label(self):
        config = Config()
        config.set("http_status.label", "example")
        config.set("http_status.target", "http://example.org")
        self.module = Module(engine=mock.Mock(), config={"config":config})

        self.assertEqual(self.module.getOutput(), "example: 200")
Beispiel #17
0
 def setUp(self, mock_output):
     mock_output.return_value = MockCommunicate()
     engine = MockEngine()
     config = Config()
     self.objects = {}
     for mod in all_modules():
         cls = importlib.import_module("bumblebee.modules.{}".format(
             mod["name"]))
         self.objects[mod["name"]] = getattr(cls, "Module")(engine, {
             "config": config
         })
         for widget in self.objects[mod["name"]].widgets():
             self.assertEquals(widget.get("variable", None), None)
Beispiel #18
0
def setup_test(test, Module):
    test._stdin, test._select, test.stdin, test.select = epoll_mock("bumblebee.input")

    test.popen = MockPopen()

    test.config = Config()
    test.input = I3BarInput()
    test.engine = mock.Mock()
    test.engine.input = test.input
    test.input.need_event = True
    test.module = Module(engine=test.engine, config={ "config": test.config })
    for widget in test.module.widgets():
        widget.link_module(test.module)
        test.anyWidget = widget
Beispiel #19
0
    def setUp(self):
        engine = mock.Mock()
        engine.input = mock.Mock()
        config = Config()
        self.objects = {}

        self.popen = mocks.MockPopen()
        self.popen.mock.communicate.return_value = (str.encode("1"), "error")
        self.popen.mock.returncode = 0

        self._platform = mock.patch("bumblebee.modules.kernel.platform")
        self.platform = self._platform.start()
        self.platform.release.return_value = "unknown linux v1"

        for mod in all_modules():
            name = "bumblebee.modules.{}".format(mod["name"])
            cls = importlib.import_module(name)
            self.objects[mod["name"]] = getattr(cls, "Module")(engine, {
                "config": config
            })
            for widget in self.objects[mod["name"]].widgets():
                self.assertEquals(widget.get("variable", None), None)
Beispiel #20
0
class TestConfig(unittest.TestCase):
    def setUp(self):
        self.defaultConfig = Config()
        self.someSimpleModules = ["foo", "bar", "baz"]
        self.someAliasModules = ["foo:a", "bar:b", "baz:c"]

    def test_no_modules_by_default(self):
        self.assertEquals(self.defaultConfig.modules(), [])

    def test_simple_modules(self):
        cfg = Config(["-m"] + self.someSimpleModules)
        self.assertEquals(cfg.modules(), [{
            "name": x,
            "module": x
        } for x in self.someSimpleModules])

    def test_alias_modules(self):
        cfg = Config(["-m"] + self.someAliasModules)
        self.assertEquals(cfg.modules(), [{
            "module": x.split(":")[0],
            "name": x.split(":")[1],
        } for x in self.someAliasModules])

    @mock.patch("sys.stdout", new_callable=StringIO)
    @mock.patch("sys.exit")
    def test_list_themes(self, exit, stdout):
        cfg = Config(["-l", "themes"])
        result = stdout.getvalue()
        for theme in themes():
            self.assertTrue(theme in result)

    @mock.patch("sys.stdout", new_callable=StringIO)
    @mock.patch("sys.exit")
    def test_list_modules(self, exit, stdout):
        cfg = Config(["-l", "modules"])
        result = stdout.getvalue()
        for module in all_modules():
            self.assertTrue(module["name"] in result)
Beispiel #21
0
class TestConfig(unittest.TestCase):
    def setUp(self):
        self.defaultConfig = Config()
        self.someSimpleModules = ["foo", "bar", "baz"]
        self.someAliasModules = ["foo:a", "bar:b", "baz:c"]

    def test_no_modules_by_default(self):
        self.assertEquals(self.defaultConfig.modules(), [])

    def test_simple_modules(self):
        cfg = Config(["-m"] + self.someSimpleModules)
        self.assertEquals(cfg.modules(), [{
            "name": x, "module": x
        } for x in self.someSimpleModules])

    def test_alias_modules(self):
        cfg = Config(["-m"] + self.someAliasModules)
        self.assertEquals(cfg.modules(), [{
            "module": x.split(":")[0],
            "name": x.split(":")[1],
        } for x in self.someAliasModules])

    @mock.patch("sys.stdout", new_callable=StringIO)
    @mock.patch("sys.exit")
    def test_list_themes(self, exit, stdout):
        cfg = Config(["-l", "themes"])
        result = stdout.getvalue()
        for theme in themes():
            self.assertTrue(theme in result)

    @mock.patch("sys.stdout", new_callable=StringIO)
    @mock.patch("sys.exit")
    def test_list_modules(self, exit, stdout):
        cfg = Config(["-l", "modules"])
        result = stdout.getvalue()
        for module in all_modules():
            self.assertTrue(module["name"] in result)
Beispiel #22
0
 def setUp(self):
     self.defaultConfig = Config()
     self.someSimpleModules = ["foo", "bar", "baz"]
     self.someAliasModules = ["foo:a", "bar:b", "baz:c"]
Beispiel #23
0
 def test_list_themes(self, exit, stdout):
     cfg = Config(["-l", "themes"])
     result = stdout.getvalue()
     for theme in themes():
         self.assertTrue(theme in result)
Beispiel #24
0
class BumblebeeApp(wx.App):
    """
        Main Bumblebee application class.

        This is a `wx.App` derived class which drives the rest of the
        Bumblebee application.

        This class also manages the connection between Bumblebee and the
        speech recognition engine.  See `_connect_to_sr_engine` for
        implementation details.

    """

    def __init__(self):
        wx.App.__init__(self)
        self._config = Config()

    #-----------------------------------------------------------------------
    # Overridden wx.App methods.

    def OnInit(self):
        log.debug("OnInit()")

        self._setup_logging()

        # Create main GUI frame.
        self._main_frame = MainFrame(None, -1, "Bumblebee")

        # Schedule further initialization.
        wx.CallLater(1, self._initialize_pca)

        # Return true to indicate that initialization was successful.
        return True

    def OnExit(self):
        self._shutdown_system_participants()

    #-----------------------------------------------------------------------
    # Internal methods.

    def _setup_logging(self):
        log.debug("_setup_logging()")

        log_levels = {
                      "compound.parse":       logging.INFO,
                      "engine":               logging.INFO,
                      "grammar.begin":        logging.INFO,
                      "grammar.decode":       logging.INFO,
                      "dictation.formatter":  logging.INFO,
                      "context.match":        logging.INFO,
                      "grammar.load":         logging.INFO,
                      "action.exec":          logging.INFO,
                     }

        for name, level in log_levels.items():
            this_log = logging.getLogger(name)
            this_log.setLevel(level)

    def _initialize_pca(self):
        log.debug("_initialize_pca()")

        self._initialize_loaders()

        self._config = Config()
        self._config.load_or_create()

        # Schedule further initialization.
        wx.CallLater(1, self._startup_system_participants)

    def _startup_system_participants(self):
        for participant in ExtensionPoint(ISystemParticipant):
            participant.startup()

    def _shutdown_system_participants(self):
        for participant in ExtensionPoint(ISystemParticipant):
            participant.shutdown()

    def _initialize_loaders(self):
        log.debug("_initialize_loaders()")

        # Import loaders so that they are registered in the PCA.
        import bumblebee.command.legacy_loader

        # Setup infrastructure for periodic updating of loaders.
        loaders = ExtensionPoint(ICommandSetLoader)

        def on_timer(event):
            reloaded = self._config.reload_if_modified()
            if reloaded:
                for participant in ExtensionPoint(ISystemParticipant):
                    participant.config_changed()
                for loader in loaders:
                    loader.update()
        self.Bind(wx.EVT_TIMER, on_timer)

        # Timer object must be bound to self, because otherwise it would
        #  be garbage collected and therefore destroyed without ever
        #  firing.
        self._timer = wx.Timer(self)
        self._timer.Start(500, oneShot=False)
Beispiel #25
0
 def __init__(self):
     wx.App.__init__(self)
     self._config = Config()
Beispiel #26
0
 def test_theme(self):
     cfg = Config(["-t", self.someTheme])
     self.assertEquals(cfg.theme(), self.someTheme)
 def test_simple_modules(self):
     cfg = Config(["-m"] + self.someSimpleModules)
     self.assertEquals(cfg.modules(), [{
         "name": x,
         "module": x
     } for x in self.someSimpleModules])
Beispiel #28
0
 def test_alias_modules(self):
     cfg = Config(["-m"] + self.someAliasModules)
     self.assertEquals(cfg.modules(), [{
         "module": x.split(":")[0],
         "name": x.split(":")[1],
     } for x in self.someAliasModules])
Beispiel #29
0
 def setUp(self):
     self.defaultConfig = Config()
     self.someSimpleModules = ["foo", "bar", "baz"]
     self.someAliasModules = ["foo:a", "bar:b", "baz:c"]
 def test_alias_modules(self):
     cfg = Config(["-m"] + self.someAliasModules)
     self.assertEquals(cfg.modules(), [{
         "module": x.split(":")[0],
         "name": x.split(":")[1],
     } for x in self.someAliasModules])
Beispiel #31
0
 def test_simple_modules(self):
     cfg = Config(["-m"] + self.someSimpleModules)
     self.assertEquals(cfg.modules(), [{
         "name": x, "module": x
     } for x in self.someSimpleModules])
Beispiel #32
0
class TestConfig(unittest.TestCase):
    def setUp(self):
        self._stdout = mock.patch("bumblebee.config.sys.stdout", new_callable=StringIO)
        self._stderr = mock.patch("bumblebee.config.sys.stderr", new_callable=StringIO)

        self.stdout = self._stdout.start()
        self.stderr = self._stderr.start()

        self.defaultConfig = Config()
        self.someSimpleModules = ["foo", "bar", "baz"]
        self.someAliasModules = ["foo:a", "bar:b", "baz:c"]
        self.someTheme = "some-theme"

    def tearDown(self):
        self._stdout.stop()
        self._stderr.stop()

    def test_no_modules_by_default(self):
        self.assertEquals(self.defaultConfig.modules(), [])

    def test_simple_modules(self):
        cfg = Config(["-m"] + self.someSimpleModules)
        self.assertEquals(cfg.modules(), [{
            "name": x, "module": x
        } for x in self.someSimpleModules])

    def test_alias_modules(self):
        cfg = Config(["-m"] + self.someAliasModules)
        self.assertEquals(cfg.modules(), [{
            "module": x.split(":")[0],
            "name": x.split(":")[1],
        } for x in self.someAliasModules])

    def test_parameters(self):
        cfg = Config(["-m", "module", "-p", "module.key=value"])
        self.assertEquals(cfg.get("module.key"), "value")

    def test_theme(self):
        cfg = Config(["-t", self.someTheme])
        self.assertEquals(cfg.theme(), self.someTheme)

    def test_notheme(self):
        self.assertEquals(self.defaultConfig.theme(), "default")

    def test_list_themes(self):
        with self.assertRaises(SystemExit):
            cfg = Config(["-l", "themes"])
        result = self.stdout.getvalue()
        for theme in themes():
            self.assertTrue(theme in result)

    def test_list_modules(self):
        with self.assertRaises(SystemExit):
            cfg = Config(["-l", "modules"])
        result = self.stdout.getvalue()
        for module in all_modules():
            self.assertTrue(module["name"] in result)

    def test_invalid_list(self):
        with self.assertRaises(SystemExit):
            cfg = Config(["-l", "invalid"])
        self.assertTrue("invalid choice" in "".join(self.stderr.getvalue()))
Beispiel #33
0
class BumblebeeApp(wx.App):
    """
        Main Bumblebee application class.

        This is a `wx.App` derived class which drives the rest of the
        Bumblebee application.

        This class also manages the connection between Bumblebee and the
        speech recognition engine.  See `_connect_to_sr_engine` for
        implementation details.

    """
    def __init__(self):
        wx.App.__init__(self)
        self._config = Config()

    #-----------------------------------------------------------------------
    # Overridden wx.App methods.

    def OnInit(self):
        log.debug("OnInit()")

        self._setup_logging()

        # Create main GUI frame.
        self._main_frame = MainFrame(None, -1, "Bumblebee")

        # Schedule further initialization.
        wx.CallLater(1, self._initialize_pca)

        # Return true to indicate that initialization was successful.
        return True

    def OnExit(self):
        self._shutdown_system_participants()

    #-----------------------------------------------------------------------
    # Internal methods.

    def _setup_logging(self):
        log.debug("_setup_logging()")

        log_levels = {
            "compound.parse": logging.INFO,
            "engine": logging.INFO,
            "grammar.begin": logging.INFO,
            "grammar.decode": logging.INFO,
            "dictation.formatter": logging.INFO,
            "context.match": logging.INFO,
            "grammar.load": logging.INFO,
            "action.exec": logging.INFO,
        }

        for name, level in log_levels.items():
            this_log = logging.getLogger(name)
            this_log.setLevel(level)

    def _initialize_pca(self):
        log.debug("_initialize_pca()")

        self._initialize_loaders()

        self._config = Config()
        self._config.load_or_create()

        # Schedule further initialization.
        wx.CallLater(1, self._startup_system_participants)

    def _startup_system_participants(self):
        for participant in ExtensionPoint(ISystemParticipant):
            participant.startup()

    def _shutdown_system_participants(self):
        for participant in ExtensionPoint(ISystemParticipant):
            participant.shutdown()

    def _initialize_loaders(self):
        log.debug("_initialize_loaders()")

        # Import loaders so that they are registered in the PCA.
        import bumblebee.command.legacy_loader

        # Setup infrastructure for periodic updating of loaders.
        loaders = ExtensionPoint(ICommandSetLoader)

        def on_timer(event):
            reloaded = self._config.reload_if_modified()
            if reloaded:
                for participant in ExtensionPoint(ISystemParticipant):
                    participant.config_changed()
                for loader in loaders:
                    loader.update()

        self.Bind(wx.EVT_TIMER, on_timer)

        # Timer object must be bound to self, because otherwise it would
        #  be garbage collected and therefore destroyed without ever
        #  firing.
        self._timer = wx.Timer(self)
        self._timer.Start(500, oneShot=False)
 def test_parameters(self):
     cfg = Config(["-m", "module", "-p", "module.key=value"])
     self.assertEquals(cfg.get("module.key"), "value")
Beispiel #35
0
 def test_list_modules(self, exit, stdout):
     cfg = Config(["-l", "modules"])
     result = stdout.getvalue()
     for module in all_modules():
         self.assertTrue(module["name"] in result)
Beispiel #36
0
 def test_parameters(self):
     cfg = Config(["-m", "module", "-p", "module.key=value"])
     self.assertEquals(cfg.get("module.key"), "value")
Beispiel #37
0
class TestModule(unittest.TestCase):
    def setUp(self):
        self.widgetName = "foo"
        self.widget = MockWidget(self.widgetName)
        self.config = Config()
        self.anyWidgetName = "random-widget-name"
        self.noSuchModule = "this-module-does-not-exist"
        self.moduleWithoutWidgets = Module(engine=None, widgets=None)
        self.moduleWithOneWidget = Module(engine=None, widgets=self.widget, config={"config": self.config})
        self.moduleWithMultipleWidgets = Module(engine=None,
            widgets=[self.widget, self.widget, self.widget]
        )

        self.anyConfigName = "cfg"
        self.anotherConfigName = "cfg2"
        self.anyModule = Module(engine=None, widgets=self.widget, config={
            "name": self.anyConfigName, "config": self.config
        })
        self.anotherModule = Module(engine=None, widgets=self.widget, config={
            "name": self.anotherConfigName, "config": self.config
        })
        self.anyKey = "some-parameter"
        self.anyValue = "value"
        self.anotherValue = "another-value"
        self.emptyKey = "i-do-not-exist"
        self.config.set("{}.{}".format(self.anyConfigName, self.anyKey), self.anyValue)
        self.config.set("{}.{}".format(self.anotherConfigName, self.anyKey), self.anotherValue)

    def test_empty_widgets(self):
        self.assertEquals(self.moduleWithoutWidgets.widgets(), [])

    def test_single_widget(self):
        self.assertEquals(self.moduleWithOneWidget.widgets(), [self.widget])

    def test_multiple_widgets(self):
        for widget in self.moduleWithMultipleWidgets.widgets():
            self.assertEquals(widget, self.widget)

    def test_retrieve_widget_by_name(self):
        widget = MockWidget(self.anyWidgetName)
        widget.name = self.anyWidgetName
        module = Module(engine=None, widgets=[self.widget, widget, self.widget])
        retrievedWidget = module.widget(self.anyWidgetName)
        self.assertEquals(retrievedWidget, widget)

    def test_retrieve_widget_by_id(self):
        widget = MockWidget(self.anyWidgetName)
        widget.id = self.anyWidgetName
        module = Module(engine=None, widgets=[self.widget, widget, self.widget])
        retrievedWidget = module.widget_by_id(self.anyWidgetName)
        self.assertEquals(retrievedWidget, widget)

    def test_retrieve_missing_widget(self):
        module = self.moduleWithMultipleWidgets

        widget = module.widget(self.noSuchModule)
        self.assertEquals(widget, None)

        widget = module.widget_by_id(self.noSuchModule)
        self.assertEquals(widget, None)

    def test_threshold(self):
        module = self.moduleWithOneWidget
        module.name = self.widgetName

        self.config.set("{}.critical".format(self.widgetName), 10.0)
        self.config.set("{}.warning".format(self.widgetName), 8.0)
        self.assertEquals("critical", module.threshold_state(10.1, 0, 0))
        self.assertEquals("warning", module.threshold_state(10.0, 0, 0))
        self.assertEquals(None, module.threshold_state(8.0, 0, 0))
        self.assertEquals(None, module.threshold_state(7.9, 0, 0))

    def test_parameters(self):
        self.assertEquals(self.anyModule.parameter(self.anyKey), self.anyValue)
        self.assertEquals(self.anotherModule.parameter(self.anyKey), self.anotherValue)

    def test_default_parameters(self):
        self.assertEquals(self.anyModule.parameter(self.emptyKey), None)
        self.assertEquals(self.anyModule.parameter(self.emptyKey, self.anyValue), self.anyValue)
Beispiel #38
0
class TestBatteryModule(unittest.TestCase):
    def setUp(self):
        self._stdout = mock.patch("sys.stdout", new_callable=StringIO)
        self._exists = mock.patch("bumblebee.modules.battery.os.path.exists")
        self._open = mock.patch("bumblebee.modules.battery.open", create=True)

        self.stdout = self._stdout.start()
        self.exists = self._exists.start()
        self.open = self._open.start()
        self.file = mock.Mock()
        self.file.__enter__ = lambda x: self.file
        self.file.__exit__ = lambda x, a, b, c: ""
        self.file.read.return_value = "120"
        self.open.return_value = self.file

        self.exists.return_value = True
        self.engine = mock.Mock()
        self.config = Config()
        self.config.set("battery.showremaining", "false")
        self.module = Module(engine=self.engine, config={"config":self.config})

        self.config.set("battery.critical", "20")
        self.config.set("battery.warning", "25")
        self.criticalValue = "19"
        self.warningValue = "21"
        self.normalValue = "26"
        self.chargedValue = "96"

        self.module.widgets()[0]

    def tearDown(self):
        self._stdout.stop()
        self._exists.stop()
        self._open.stop()

    def test_format(self):
        for widget in self.module.widgets():
            self.assertEquals(len(widget.full_text()), len("100%"))

    def test_critical(self):
        self.file.read.return_value = self.criticalValue
        self.module.update_all()
        self.assertTrue("critical" in self.module.state(self.module.widgets()[0]))

    def test_warning(self):
        self.file.read.return_value = self.warningValue
        self.module.update_all()
        self.assertTrue("warning" in self.module.state(self.module.widgets()[0]))

    def test_normal(self):
        self.file.read.return_value = self.normalValue
        self.module.update_all()
        self.assertTrue(not "warning" in self.module.state(self.module.widgets()[0]))
        self.assertTrue(not "critical" in self.module.state(self.module.widgets()[0]))

    def test_overload(self):
        self.file.read.return_value = "120"
        self.module.update_all()
        self.assertTrue(not "warning" in self.module.state(self.module.widgets()[0]))
        self.assertTrue(not "critical" in self.module.state(self.module.widgets()[0]))
        self.assertEquals(self.module.capacity(self.module.widgets()[0]), "100%")

    def test_ac(self):
        self.exists.return_value = False
        self.file.read.return_value = "120"
        self.module.update_all()
        self.assertEquals(self.module.capacity(self.module.widgets()[0]), "ac")
        self.assertTrue("AC" in self.module.state(self.module.widgets()[0]))

    def test_error(self):
        self.file.read.side_effect = IOError("failed to read")
        self.module.update_all()
        self.assertEquals(self.module.capacity(self.module.widgets()[0]), "n/a")
        self.assertTrue("critical" in self.module.state(self.module.widgets()[0]))
        self.assertTrue("unknown" in self.module.state(self.module.widgets()[0]))

    def test_charging(self):
        self.file.read.return_value = self.chargedValue
        self.module.update_all()
        self.assertTrue("charged" in self.module.state(self.module.widgets()[0]))
        self.file.read.return_value = self.normalValue
        self.module.update_all()
        self.assertTrue("charging" in self.module.state(self.module.widgets()[0]))
        
    def test_discharging(self):
        for limit in [ 10, 25, 50, 80, 100 ]:
            value = limit - 1
            self.file.read.return_value = str(value)
            self.module.update_all()
            self.file.read.return_value = "Discharging"
            self.assertTrue("discharging-{}".format(limit) in self.module.state(self.module.widgets()[0]))
 def test_theme(self):
     cfg = Config(["-t", self.someTheme])
     self.assertEquals(cfg.theme(), self.someTheme)
Beispiel #40
0
 def __init__(self):
     wx.App.__init__(self)
     self._config = Config()
Beispiel #41
0
class TestModule(unittest.TestCase):
    def setUp(self):
        self.widgetName = "foo"
        self.widget = MockWidget(self.widgetName)
        self.config = Config()
        self.anyWidgetName = "random-widget-name"
        self.noSuchModule = "this-module-does-not-exist"
        self.moduleWithoutWidgets = Module(engine=None, widgets=None)
        self.moduleWithOneWidget = Module(engine=None,
                                          widgets=self.widget,
                                          config={"config": self.config})
        self.moduleWithMultipleWidgets = Module(
            engine=None, widgets=[self.widget, self.widget, self.widget])

        self.anyConfigName = "cfg"
        self.anotherConfigName = "cfg2"
        self.anyModule = Module(engine=None,
                                widgets=self.widget,
                                config={
                                    "name": self.anyConfigName,
                                    "config": self.config
                                })
        self.anotherModule = Module(engine=None,
                                    widgets=self.widget,
                                    config={
                                        "name": self.anotherConfigName,
                                        "config": self.config
                                    })
        self.anyKey = "some-parameter"
        self.anyValue = "value"
        self.anotherValue = "another-value"
        self.emptyKey = "i-do-not-exist"
        self.config.set("{}.{}".format(self.anyConfigName, self.anyKey),
                        self.anyValue)
        self.config.set("{}.{}".format(self.anotherConfigName, self.anyKey),
                        self.anotherValue)

    def test_empty_widgets(self):
        self.assertEquals(self.moduleWithoutWidgets.widgets(), [])

    def test_single_widget(self):
        self.assertEquals(self.moduleWithOneWidget.widgets(), [self.widget])

    def test_multiple_widgets(self):
        for widget in self.moduleWithMultipleWidgets.widgets():
            self.assertEquals(widget, self.widget)

    def test_retrieve_widget_by_name(self):
        widget = MockWidget(self.anyWidgetName)
        widget.name = self.anyWidgetName
        module = Module(engine=None,
                        widgets=[self.widget, widget, self.widget])
        retrievedWidget = module.widget(self.anyWidgetName)
        self.assertEquals(retrievedWidget, widget)

    def test_retrieve_widget_by_id(self):
        widget = MockWidget(self.anyWidgetName)
        widget.id = self.anyWidgetName
        module = Module(engine=None,
                        widgets=[self.widget, widget, self.widget])
        retrievedWidget = module.widget_by_id(self.anyWidgetName)
        self.assertEquals(retrievedWidget, widget)

    def test_retrieve_missing_widget(self):
        module = self.moduleWithMultipleWidgets

        widget = module.widget(self.noSuchModule)
        self.assertEquals(widget, None)

        widget = module.widget_by_id(self.noSuchModule)
        self.assertEquals(widget, None)

    def test_threshold(self):
        module = self.moduleWithOneWidget
        module.name = self.widgetName

        self.config.set("{}.critical".format(self.widgetName), 10.0)
        self.config.set("{}.warning".format(self.widgetName), 8.0)
        self.assertEquals("critical", module.threshold_state(10.1, 0, 0))
        self.assertEquals("warning", module.threshold_state(10.0, 0, 0))
        self.assertEquals(None, module.threshold_state(8.0, 0, 0))
        self.assertEquals(None, module.threshold_state(7.9, 0, 0))

    def test_parameters(self):
        self.assertEquals(self.anyModule.parameter(self.anyKey), self.anyValue)
        self.assertEquals(self.anotherModule.parameter(self.anyKey),
                          self.anotherValue)

    def test_default_parameters(self):
        self.assertEquals(self.anyModule.parameter(self.emptyKey), None)
        self.assertEquals(
            self.anyModule.parameter(self.emptyKey, self.anyValue),
            self.anyValue)
 def test_list_themes(self):
     with self.assertRaises(SystemExit):
         cfg = Config(["-l", "themes"])
     result = self.stdout.getvalue()
     for theme in themes():
         self.assertTrue(theme in result)
 def test_invalid_list(self):
     with self.assertRaises(SystemExit):
         cfg = Config(["-l", "invalid"])
     self.assertTrue("invalid choice" in "".join(self.stderr.getvalue()))
Beispiel #44
0
 def test_list_modules(self):
     with self.assertRaises(SystemExit):
         cfg = Config(["-l", "modules"])
     result = self.stdout.getvalue()
     for module in all_modules():
         self.assertTrue(module["name"] in result)