Ejemplo n.º 1
0
def test_get_widget_by_name(empty_config, widget_a, widget_b):
    module = SampleModule(config=empty_config, widgets=[widget_a, widget_b])

    assert module.widget(widget_a.name) == widget_a
    assert module.widget(widget_b.name) == widget_b
    assert module.widget("i-do-not-exist") == None
    assert module.widget() == widget_a
Ejemplo n.º 2
0
    def test_get_widget_by_name(self):
        cfg = core.config.Config([])
        module = TestModule(config=cfg, widgets=[self.someWidget, self.anotherWidget])

        self.assertEqual(self.someWidget, module.widget(self.someWidget.name))
        self.assertEqual(self.anotherWidget, module.widget(self.anotherWidget.name))
        self.assertEqual(None, module.widget(self.unusedWidgetName))
        self.assertEqual(self.someWidget, module.widget())
Ejemplo n.º 3
0
def test_n_plus_one(module):
    module.text = "10 letters"
    module.set("scrolling.width", 9)

    assert module.get(module.widget()) == module.text[0:9]
    assert module.get(module.widget()) == module.text[1:10]
    assert module.get(module.widget()) == module.text[0:9]
    assert module.get(module.widget()) == module.text[1:10]
    assert module.get(module.widget()) == module.text[0:9]
Ejemplo n.º 4
0
def test_importerror(mocker):
    importlib = mocker.patch("core.module.importlib")
    importlib.import_module.side_effect = ImportError("some-error")
    config = mocker.MagicMock()

    module = core.module.load(module_name="test", config=config)

    assert module.__class__.__name__ == "Error"
    assert module.widget().full_text() == "test: some-error" or \
        module.widget().full_text() == "test: unable to load module"
Ejemplo n.º 5
0
def test_completely_changed_data(module):
    module.text = "abcd"
    module.set("scrolling.width", 2)

    assert module.get(module.widget()) == "ab"
    assert module.get(module.widget()) == "bc"

    module.text = "wxyz"
    assert module.get(module.widget()) == "wx"
    assert module.get(module.widget()) == "xy"
Ejemplo n.º 6
0
def test_slightly_changed_data(module):
    module.text = "this is a sample song (0:00)"
    module.set("scrolling.width", 10)

    assert module.get(module.widget()) == module.text[0:10]
    module.text = "this is a sample song (0:01)"
    assert module.get(module.widget()) == module.text[1:11]
    module.text = "this is a sample song (0:02)"
    assert module.get(module.widget()) == module.text[2:12]
    module.text = "this is a sample song (0:13)"
    assert module.get(module.widget()) == module.text[3:13]
    module.text = "this is a different song (0:13)"
    assert module.get(module.widget()) == module.text[0:10]
Ejemplo n.º 7
0
    def test_importerror(self):
        with unittest.mock.patch("core.module.importlib") as importlib:
            importlib.import_module.side_effect = ImportError("some-error")

            config = unittest.mock.MagicMock()
            module = core.module.load(module_name=self.validModuleName, config=config)
            module.widget().full_text()
            self.assertEqual(
                "Error",
                module.__class__.__name__,
                "an invalid module must be a core.module.Error",
            )
            self.assertEqual(module.widget().full_text(), "test: some-error")
Ejemplo n.º 8
0
def test_bounce(module):
    module.text = "abcd"
    module.set("scrolling.width", 2)
    assert module.get(module.widget()) == "ab"
    assert module.get(module.widget()) == "bc"
    assert module.get(module.widget()) == "cd"
    assert module.get(module.widget()) == "bc"
    assert module.get(module.widget()) == "ab"
    assert module.get(module.widget()) == "bc"
    assert module.get(module.widget()) == "cd"
    assert module.get(module.widget()) == "bc"
    assert module.get(module.widget()) == "ab"
Ejemplo n.º 9
0
def test_error_widget(empty_config):
    module = SampleModule(config=empty_config)
    module.fail = True
    module.error = "!!"
    module.update_wrapper()
    assert len(module.widgets()) == 1
    assert module.widget().full_text() == "error: !!"
Ejemplo n.º 10
0
def get_redshift_value(module):
    widget = module.widget()
    f = open("/home/checco/log/current_temp.txt", "r")
    stringa = f.readline().strip()
    f.close()
    widget.set("temp", stringa+'K \uf06d')
    core.event.trigger("update", [widget.module.id], redraw_only=True)
Ejemplo n.º 11
0
 def test_error_widget(self):
     cfg = core.config.Config(shlex.split("-p test_module.foo=5"))
     module = core.module.Error(cfg, "test-mod", "xyz")
     self.assertEqual(["critical"], module.state(None),
                      "error module must have critical state")
     full_text = module.full_text(module.widget())
     self.assertTrue("test-mod" in full_text)
     self.assertTrue("xyz" in full_text)
Ejemplo n.º 12
0
 def test_error_widget(self):
     cfg = core.config.Config([])
     module = TestModule(config=cfg)
     module.fail = True
     module.error = "!!"
     module.update_wrapper()
     self.assertEqual(1, len(module.widgets()))
     self.assertEqual("error: !!", module.widget().full_text())
Ejemplo n.º 13
0
def test_error_widget():
    cfg = core.config.Config(shlex.split("-p test_module.foo=5"))
    module = core.module.Error("test-mod", "xyz", config=cfg)
    full_text = module.full_text(module.widget())

    assert module.state(None) == ["critical"]
    assert "test-mod" in full_text
    assert "xyz" in full_text
Ejemplo n.º 14
0
def test_nobounce(module):
    module.set("scrolling.bounce", False)
    module.set("scrolling.width", 2)
    module.text = "abcd"

    assert module.get(module.widget()) == "ab"
    assert module.get(module.widget()) == "bc"
    assert module.get(module.widget()) == "cd"
    assert module.get(module.widget()) == "ab"
    assert module.get(module.widget()) == "bc"
    assert module.get(module.widget()) == "cd"
Ejemplo n.º 15
0
def get_apt_check_info(module):
    widget = module.widget()
    try:
        res = util.cli.execute("aptitude full-upgrade --simulate --assume-yes")
        widget.set("error", None)
    except (RuntimeError, FileNotFoundError) as e:
        widget.set("error", "unable to query APT: {}".format(e))
        return

    to_upgrade = 0
    to_remove = 0
    try:
        to_upgrade, to_remove = parse_result(res)
        widget.set("to_upgrade", to_upgrade)
        widget.set("to_remove", to_remove)
    except Exception as e:
        widget.set("error", "parse error: {}".format(e))

    core.event.trigger("update", [module.id], redraw_only=True)
Ejemplo n.º 16
0
def get_redshift_value(module):
    widget = module.widget()
    location = module.parameter("location", "auto")
    lat = module.parameter("lat", None)
    lon = module.parameter("lon", None)

    # Even if location method is set to manual, if we have no lat or lon,
    # fall back to the geoclue2 method.
    if location == "manual" and (lat is None or lon is None):
        location = "geoclue2"

    command = ["redshift", "-p"]
    if location == "manual":
        command.extend(["-l", "{}:{}".format(lat, lon)])
    if location == "geoclue2":
        command.extend(["-l", "geoclue2"])

    try:
        res = util.cli.execute(" ".join(command))
    except Exception:
        res = ""
    widget.set("temp", "n/a")
    widget.set("transition", "")
    widget.set("state", "day")
    for line in res.split("\n"):
        line = line.lower()
        if "temperature" in line:
            widget.set("temp", line.split(" ")[2])
        if "period" in line:
            state = line.split(" ")[1]
            if "day" in state:
                widget.set("state", "day")
            elif "night" in state:
                widget.set("state", "night")
            else:
                widget.set("state", "transition")
                match = re.search(r"(\d+)\.\d+% ([a-z]+)", line)
                widget.set("transition",
                           "({}% {})".format(match.group(1), match.group(2)))
    core.event.trigger("update", [widget.module.id], redraw_only=True)
Ejemplo n.º 17
0
def test_smaller(module):
    module.text = "test"
    assert module.parameter("scrolling.width") > len(module.text)
    assert module.get(module.widget()) == module.text
Ejemplo n.º 18
0
def test_get_widget_by_id(empty_config, widget_a, widget_b):
    module = SampleModule(config=empty_config, widgets=[widget_a, widget_b])

    assert module.widget(widget_id=widget_a.id) == widget_a
    assert module.widget(widget_id=widget_b.id) == widget_b
    assert module.widget(widget_id="i-do-not-exist") == None
Ejemplo n.º 19
0
def test_no_text(module):
    assert module.text == ""
    assert module.get(module.widget()) == ""
Ejemplo n.º 20
0
def test_bigger(module):
    module.text = "this is a really really long sample text"
    maxwidth = module.parameter("scrolling.width")
    assert maxwidth < len(module.text)
    assert module.get(module.widget()) == module.text[:maxwidth]