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
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())
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]
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"
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"
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]
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")
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"
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: !!"
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)
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)
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())
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
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"
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)
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)
def test_smaller(module): module.text = "test" assert module.parameter("scrolling.width") > len(module.text) assert module.get(module.widget()) == module.text
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
def test_no_text(module): assert module.text == "" assert module.get(module.widget()) == ""
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]