Commit graph

255 commits

Author SHA1 Message Date
tobi-wan-kenobi
1d25be2059 [doc] update module documentation 2020-05-09 15:31:25 +02:00
tobi-wan-kenobi
9ef826b5fd [core] fix tests 2020-05-08 21:01:45 +02:00
tobi-wan-kenobi
98dd8ca5f7 [core/decorators] reset scrolling if content changes
see #622
2020-05-04 20:11:10 +02:00
tobi-wan-kenobi
30c1f712a6 [formatting] reformat using "black -t py34"
getting rid of thinking about consistent formatting...
2020-05-03 11:15:52 +02:00
tobi-wan-kenobi
4bd23950c6 [tests] add core/widget tests 2020-05-02 14:14:12 +02:00
tobi-wan-kenobi
5ee97dbb09 [tests] add more core/config tests 2020-05-02 14:09:30 +02:00
tobi-wan-kenobi
2ab575d190 [core] do not scroll errors
to make errors easier to diagnose, do not scroll them, but instead fully
show them.

also, re-introduce the supplementary fields for the dwm bridge, kudos to
@somospocos
2020-05-01 15:34:29 +02:00
tobi-wan-kenobi
1e4955d4b8 [core/module] Make name and module_name attributes 2020-04-30 12:50:24 +02:00
tobi-wan-kenobi
9cd9ff626d [core] make widget name an attribute
first, this fixes #607

also, i think it slightly simplifies code to make "simple" stuff like
names, etc. attributes instead of methods all the time.

so, expect this to be extended to other components, as well.
2020-04-30 12:42:34 +02:00
tobi-wan-kenobi
1f94eab927 [core] Add themes to module constructor 2020-04-26 16:39:13 +02:00
tobi-wan-kenobi
fae06da446 [modules/battery] Rewrite for bigger reuse 2020-04-19 14:07:15 +02:00
tobi-wan-kenobi
74c25ba2ee [util] Add central geolocation info library 2020-04-15 13:25:51 +02:00
tobi-wan-kenobi
580bb20a9f [tests/theme] Fix WAL mocked tests
Until now, the WAL tests depended on the pyWAL cache file being actually
present on the system.
2020-04-13 13:47:50 +02:00
tobi-wan-kenobi
dc5bfd1fc6 [tests/output] Improve pango tests 2020-04-13 13:43:07 +02:00
tobi-wan-kenobi
9e32cdef5d [core] Rename events for more clarity 2020-04-12 20:11:02 +02:00
tobi-wan-kenobi
4cd6444bbf [core/theme] Improve items that are lists
Until now, using a list as prefix/suffix didn't work as expected,
because the corresponding method for retrieving the value was called
multiple times, and each time, the next icon would be retrieved.

Changed the logic inside the theme to only update the indices every time
that an actual update was happening.
2020-04-12 14:01:51 +02:00
tobi-wan-kenobi
32e5d633f4 [core/output] Add tests for pango formatting 2020-04-07 20:59:26 +02:00
tobi-wan-kenobi
c0cc1ccd75 [core] Remove "intelligent" theme accessors
To simplify code, remove the auto-generated theme accessors for
attributes, and instead use a generic "get" method.
2020-04-07 20:44:01 +02:00
tobi-wan-kenobi
37cca1c3b9 [core/output] Fully switch to i3 block abstraction
According to the unit tests, at least, the old functionality is back
again - with the additional i3 block abstraction in output in place.

Also, pango support is temporarily removed again and will be
re-implemented based on the new architecture.
2020-04-05 13:58:59 +02:00
tobi-wan-kenobi
a43917594e [tests/event] Add some more tests for trigger-time args 2020-04-04 08:44:41 +02:00
tobi-wan-kenobi
52e5ad7b43 [core/input] Handle exceptions for non-existent commands 2020-04-04 08:17:35 +02:00
tobi-wan-kenobi
77443b7802 [tests/theme] Add more theme tests 2020-04-04 08:03:03 +02:00
tobi-wan-kenobi
a71828f0b4 [modules/weather] Small improvements 2020-04-04 07:47:53 +02:00
tobi-wan-kenobi
d0200b656d [core/config] Allow string formatted intervals
Allow users to specify intervals such as '5m', for convenience
2020-04-02 16:55:36 +02:00
tobi-wan-kenobi
0f6dfb3f1a [core/input] do not throw on wrong event type
until now, if a module had registered callbacks, events for nonexistent
buttons caused the trigger mechanism to raise an exception.
2020-04-02 16:21:07 +02:00
tobi-wan-kenobi
885cc09636 [core/output] Add some more tests 2020-03-31 20:57:09 +02:00
tobi-wan-kenobi
95410e4adf [core/input] __ for private variables, use id as property 2020-03-29 14:43:04 +02:00
tobi-wan-kenobi
11ebcee29a [tests] Fix kernel module test 2020-03-29 14:35:20 +02:00
tobi-wan-kenobi
2a93a001b2 [theme] Add unit tests for WAL loading 2020-03-28 14:51:48 +01:00
tobi-wan-kenobi
5ade8e47f0 [core/theme] Add some unit tests 2020-03-28 14:03:50 +01:00
tobi-wan-kenobi
908ef67109 [core/widget] bump test coverage 2020-03-27 13:54:22 +01:00
Tobias Witek
9755a70578 [tests] Make tests pass again (configurable update interval) 2020-03-23 15:40:53 +01:00
Tobias Witek
8efa101380 [util/format] Tests and minor renaming 2020-03-07 13:33:28 +01:00
Tobias Witek
7c866f1476 [tests] Add tests for byte formats 2020-03-06 15:00:03 +01:00
Tobias Witek
48c21a902e [tests/module] Skip failing tests in Python 3.{4,5} 2020-03-06 14:45:09 +01:00
Tobias Witek
51faef9fd4 [modules/kernel] Make widget dynamic (update if kernel changes) 2020-03-06 14:31:08 +01:00
Tobias Witek
efc2e4f94e [modules] Separate modules into core & contrib
Also, improve errors when importing a module fails.

Also, add more tests.
2020-03-06 14:14:34 +01:00
Tobias Witek
47950240d0 [tests/core/module] Add tests for widget retrieval by name 2020-03-05 21:17:06 +01:00
Tobias Witek
d19eb72296 [tests/module] Test generation of error widget
When a module/widget throws, an error widget should be produced.
2020-03-04 21:06:09 +01:00
Tobias Witek
533b8ca0cc [modules] Re-add module nic 2020-03-01 14:36:12 +01:00
Tobias Witek
a1aec8fff6 [core/module] Add error widgets if a module throws
Module should have to care less about thrown exceptions.
2020-03-01 14:08:16 +01:00
Tobias Witek
cb3482ae27 [core/decorators] Simplify and test scrolling 2020-02-29 14:05:02 +01:00
Tobias Witek
b99ac07ef0 [core/decorators] Add more tests 2020-02-27 21:39:04 +01:00
Tobias Witek
37e1deaa6f [tests] Add (partial) decorator tests 2020-02-24 14:20:54 +01:00
Tobias Witek
fd57af9325 [tests] Make tests pass again 2020-02-23 14:55:13 +01:00
Tobias Witek
a2446a36af [core/theme] Better separator handling
Add a generic method to the theme to get the "previous" value of an
attribute.
2020-02-23 14:31:30 +01:00
Tobias Witek
30c539f1f2 [util/cli] Add option to ignore return codes
Add an option that ignores the return code of an execute, instead of
throwing an error (which sometimes causes ugly try/except blocks in
client code)
2020-02-23 13:44:49 +01:00
Tobias Witek
7a1cd4b613 [util] Add 'formatting' utility methods
Add helpers to unify formatting of bool/list/int values.
2020-02-23 13:43:44 +01:00
Tobias Witek
3bb857f250 [core/theme] Add iconset support
Allow themes to specify iconsets. To do so, add a new util library
"util.algorithm", which currently contains support for deep merging of
dicts.
2020-02-22 14:07:24 +01:00
Tobias Witek
38410adcb8 [core/theme|output] Add separators
Add a way for themes to specify custom separators. Doing that, make
nicer interfaces for drawing "supplementary" components (separators)
for widgets and generalize the attribute retrieval within the theme.
2020-02-22 13:42:44 +01:00
Tobias Witek
6e5e297d93 [core/theme] Add true cycling support
Using the freshly introduced eventing system, enable cycling of widget
attributes.
2020-02-16 14:39:10 +01:00
Tobias Witek
c1df1686c1 [core/event] Initial commit of simplistic event engine 2020-02-16 14:27:17 +01:00
Tobias Witek
26ae63b5ad [core/theme] Add preliminary cycling support
Add support for cycling values in a theme, for now as long as the cycle
size is 0 :P
2020-02-16 14:02:21 +01:00
Tobias Witek
affeba5b8f [core/theme] Add simple theme stub
Add support for default fg/bg colors
2020-02-15 14:05:27 +01:00
Tobias Witek
5d971267db [core/theme] Add preparatory work for themes
Add two new parameters: theme and iconset

Add a placeholder class core.theme.Theme, an instance of which is passed
in to the i3 output object (which is the only object that should ever
have need of the theme, hopefully).
2020-02-09 13:46:56 +01:00
Tobias Witek
4e2a645bd3 [core/input] Separate module/widget update and retrieval
To make it easier to update individual modules, separate the call to
update() and the call to actually drawing the status.

Additionally, this avoids the "side effect" of updating when drawing the
status line.
2020-02-09 13:25:34 +01:00
Tobias Witek
cc0139e517 [tests/input] Add test for non-callable callback 2020-02-08 14:09:14 +01:00
Tobias Witek
fca364554e [core/output] Add id of widget and module to output
In the process of that, fix a bug in how the parent class constructors
were invoked.
2020-02-08 13:45:52 +01:00
Tobias Witek
9d4936b596 [util/cli] Add new CLI utilities
For now, this just allows executing commands
2020-02-08 13:39:35 +01:00
Tobias Witek
e0df8b84e5 [core] Add input handling
Add a (half-finished) input library, that for now simply allows
registration and triggering of events.

As next steps, the trigger will happen as part of a separate thread that
reads input events.

Additionally, invoking commands via a execute() will be supported.

Thirdly, there is need of a way to selectively update the affected
modules (widgets), which should be possible given that the event
contains both the instance (widget ID) and name (module name).
2020-02-07 21:28:29 +01:00
Tobias Witek
6adc497f68 [core] Add support for module parameters
Parse '-p' parameters and make them accessible via 'parameter()' from
within a module (basically, restore the previous configuration
facility).

Still TODO: Add support for configuration files.
2020-02-04 21:09:11 +01:00
Tobias Witek
3a531c359f [core/module] Add config to module
Add access for all modules to the commandline parameters (called
"config" in bumblebee-status)
2020-02-03 21:30:06 +01:00
Tobias Witek
854d7dc470 [modules] Add first "real" module: kernel
Since 'kernel' is small and shows static information, have this be the
very first module added.
2020-02-02 14:41:22 +01:00
Tobias Witek
445c5a65f1 [core/output] Move widget/module handling inside output
The core.output module now manages the list of modules and retrieves the
widgets inside draw() itself. That way, details of drawing/updating
widgets are not visible from the outside anymore.
2020-02-02 14:18:13 +01:00
Tobias Witek
66537fbe05 [core/output] Rewrite to hide sys.stout
Add generic "draw()" method that redirects internally to the actual
calls. These can now produce JSON, which is nicer because:

1. Easier to use during testing
2. More flexible
3. Centralizes printing (somewhat)

Still, the "suffix" concept isn't really nice, but so far, I have no
better approach.
2020-02-01 21:37:38 +01:00
Tobias Witek
fbd44618dc [test] Python 3.5 compatibility
Use assert_called_once_with() instead of assert_called_once() to
maintain compatibility with Python 3.5
2020-01-26 14:17:14 +01:00
Tobias Witek
7a9cb8b533 [core/module] Add very basic widget capability 2020-01-26 14:06:09 +01:00
Tobias Witek
fee7cf7882 [core/widget] Add widget class
To maintain backwards compatibility (and because I think it's an OK
design choice), keep the widget concept (a single module can produce
multiple widgets).
2020-01-26 13:58:29 +01:00
Tobias Witek
acf9d6214e [tests] Restructure
Put tests into directory structure equivalent to that of the code
itself, for better separation (hopefully)
2020-01-25 14:27:41 +01:00
Tobias Witek
5a60a23ebd [core/config] Add interval (as parameter store)
Add a generic parameter store to the configuration and use it to set the
parameter "interval" (backwards compatibility)
2020-01-25 14:24:21 +01:00
Tobias Witek
8a2ef5ea5d [core] Add util.store for store-like get/set 2020-01-25 14:20:25 +01:00
Tobias Witek
bd12a51bfb [core] Add simple module loading
Add a way to load modules located in modules/*
2020-01-19 16:06:21 +01:00
Tobias Witek
8622673114 [core] Re-enable preliminary module loading (stubbed)
Add logic for parsing commandline options, and a preliminary stub for
loading modules.

Note: The idea is that core.module.load() will return a valid, but
empty, module that displays an error, if the module cannot be loaded
2020-01-19 15:36:52 +01:00
Tobias Witek
e931bb93c6 [core] Rework core implementation
Experimental re-implementation of core functionality with the aim:
- Depend only on the Python Standard Library for core
- If modules are missing elsewhere, *never* throw
- Unit test *everything*
- Cleaner and more minimal implementation
- Better integration points for existing implementations (charts,
  braille, etc.)
- Full backwards-compatibility with existing module system (except where
  modules can be vastly simplified)
2020-01-19 13:29:34 +01:00
me
d952661b28 add tests with custom format for bumblebee.util.bytefmt() 2020-01-12 20:33:51 +02:00
me
c45c5134a7 add txtbars 2020-01-01 22:22:31 +02:00
Tobias Witek
c4cf1da337 [tests] Fix failing tests
* better checks for "brightness" modules
* add mocking for output config
2019-12-26 13:56:53 +01:00
user
d4946f2c13 hddtemp module 2019-12-25 03:12:06 +02:00
Tobias Witek
f80fcfa60c [tests] Remove test about listing modules
If an import fails, this test fails, which is not the original
intention.

Until such time that the listing of existing modules is fixed, this test
is removed.

fixes #491
2019-12-23 13:35:05 +01:00
Tobias Witek
14813f5fee [tests] improve output
see #491
2019-12-22 14:25:00 +01:00
Tobias Witek
2305ce4622 [tests] Remove generic test_modules
This module doesn't *really* perform tests and causes more trouble than
it is worth at the moment.

see #456 and #457 for reasons why the tests need to be overhauled a bit
anyhow.
2019-10-27 20:25:57 +01:00
WORD559
fb2fb796da add test for asbool 2019-10-04 15:18:11 +01:00
mw
ac418caa59 Add test cases 2019-09-05 20:19:20 +02:00
Tobias Witek
5ee612da2d [doc] Add screenshot for network_traffic
Add http status module

fix

chore: update modules number
2019-07-24 12:37:59 +02:00
Tobias Witek
682d2f47dd [core/theme] State == "" causes backtraces
Empty states ("" rather than None) caused a backtrace in the theme
engine. Fix that by being a bit more robust, and add a test that checks
for regressions.

fixes #406
2019-07-02 20:19:26 +02:00
Tobias Witek
928c37a972 [core+tests] Improved poll handling
- mock poll instead of epoll
- increase timeout for poll (1ms is a lot of system load for nothing)
2019-06-23 16:51:28 +02:00
Frank Scherrer
a6eb5a43a5
fix code for flake8 linter 2018-09-04 10:04:18 +02:00
Frank Scherrer
a52c3e8e12
add further tests for which
* test which for always present binary "ls"
* test which for garbage input
2018-09-04 09:58:52 +02:00
Frank Scherrer
872c2047e5
add test for util.which
* and make runtests.sh dash-compatible for debian-like OS
2018-08-28 14:52:17 +02:00
Tobias Witek
be8669270e [tests] Removed memory test, as psutil is not used anymore
mocking psutil doesn't bring much to the table now...
2017-09-20 06:28:47 +02:00
Tobias Witek
115f03cb0f [module/battery] Add remaining time, if available
Add remaining time directly to widget, if available, and if not on
charge.

see #146
2017-07-26 16:41:30 +02:00
Frederic Junod
37434aa5e5 [module/memory] Add new format string parameter 2017-07-15 09:48:23 +02:00
Tobias Witek
e5061b4d5f [tests/brightness] Disable failing test
Honestly: I don't know why Travis is failing on this test, it works fine
on my machine with Python 2.7. Therefore, I will disable this test until
I can get to the bottom of it.
2017-06-26 20:42:33 +02:00
Tobias Witek
fd7c5f6f0b [tests/brightness] Create open call, if it does not exist
Hopefully, this fixes the failing Travis build.
2017-06-26 20:33:06 +02:00
Tobias Witek
d37218ce4a [tests/brightness] Fix FileNotFoundError for Python 2.7 2017-06-26 19:10:51 +02:00
jmg5e
fc912a8fbc fixed tests for brightness module 2017-06-26 06:07:19 -05:00
Tobias Witek
d69f13f0b4 [modules/battery] Autodetect battery devices
The module now creates a widget for each battery device it detects and
shows the status for each of them (I don't know of anyone with more than
a single battery, but if I'm overhauling the module anyhow, might as
well do it comprehensively).

fixes #117
2017-06-18 11:35:06 +02:00
Tobias Witek
c7e2f39132 [tests/cpu] Fix expectation for CPU module output 2017-06-15 14:06:45 +02:00
Tobias Witek
c75ad75920 [tests/module/disk] Adapt to new input parameters
Open application now defaults to xdg-open, replace with nautilus
manually.
2017-06-01 19:57:50 +02:00
Tobias Witek
94c72a1e6a [tests] Fix failing test for i3bar protocol 2017-04-26 07:50:27 +02:00