Commit Graph

902 Commits

Author SHA1 Message Date
Kevin Zander 6cb2e0fa82 Fix some deprecated calls in code and docs
Add missing newline in test runner
2017-03-30 21:26:50 -05:00
Emmanuel Lepage Vallée b81b2149f6 Merge pull request #1679 from psychon/keyboard-layout-changes
Asynchronously update the keyboard state
2017-03-29 13:59:34 -04:00
Uli Schlachter 2f652a1de9 Speed up tests/run.sh on Travis (#1682)
tests/run.sh waits for awesome to exit via tail's "--pid" option. This
makes tail check once per second if the process still exists and if not,
tail will exit. However, the default of "once per second" causes lots of
wasted time for us.

This commit adds the argument "-s 0.1" to tail which makes tail check
once every 0.1 seconds. This commit changes the time that "tests/run.sh"
runs on Travis from about 60 seconds to about 35 seconds, which is a big
improvement.

Closes: https://github.com/awesomeWM/awesome/issues/1374
Signed-off-by: Uli Schlachter <psychon@znc.in>
2017-03-29 18:46:47 +02:00
Uli Schlachter 9f3a6757e9 Asynchronously update the keyboard state
When the keyboard layout is modified via xmodmap, each single "change"
(line of input to xmodmap) causes an "the keyboard configuration
changed"-event to be sent. Awesome reacted to each of these events by
reloading the keyboard layout. Thus, awesome reloaded the keyboard
layout a lot and appeared to freeze.

Fix this by asynchronously update the keyboard state: When such an event
comes in, instead of reloading things immediately, we set a flag which
makes us update the state at the end of the main loop iteration. This
means that many events still cause only a single (or at least few)
re-quering of the layout. Thus, a lot of time is saved.

This commit removes the argument to the (undocumented!) signal
xkb::group_changed. Previously, the argument was the active group
number. Since this argument was unused and I'm lazy, I just removed it.
The alternative would be that it might be visible to Lua that some "the
active group changed"-events are dropped.

Fixes: https://github.com/awesomeWM/awesome/issues/1494
Signed-off-by: Uli Schlachter <psychon@znc.in>
2017-03-28 15:21:01 +02:00
Kevin Zander 45dadde0dd Move filesystem functions out of awful.util into new gears.filesystem
Update awful.util filesystem function calls to gears.filesystem function calls
Rename getdir to get_dir for consistency
2017-03-15 13:46:33 -05:00
Kevin Zander c3461b535c gears: Move awful.util.table to gears.table (#1641)
* Move table functions out of awful.util into new gears.table

* travis: Use v9999 prefix for full requests

Make sure no newly deprecated functions are used

* Move all `awful.util.table.*` calls to `gears.table.*` calls
Move table test functions from awful/util_spec to new gears/table_spec
Change awful.util.subsets call to gears.math.subsets in awful/key.lua
2017-03-08 15:18:33 -05:00
Emmanuel Lepage Vallée 8f6e80f5c6 Merge pull request #1640 from psychon/add_to_wibox_lists
Add some non-helpful examples
2017-03-07 18:45:29 -05:00
Uli Schlachter 93b53bcf3f Add some non-helpful examples
This makes the scroll and only_on_screen widgets appear in the widget
lists. The examples are not really helpful, but Elv13 told me to add
them. Also, only_on_screen is in awful.widget, but now something in
tests/examples/wibox/container refers to it...

Signed-off-by: Uli Schlachter <psychon@znc.in>
2017-03-07 11:32:17 +01:00
Uli Schlachter 6f803cf3b3 Fix code using awful.util.round
This gets rid of lots of deprecation warnings

Signed-off-by: Uli Schlachter <psychon@znc.in>
2017-03-06 17:11:05 +01:00
getzze bf2d658380 Add tests for grid layout
Update tests

Update tests

Separate spacing and padding tests

Update tests amd add imperative usage

Change fixed_size to homogeneous property

Update tests
2017-03-04 20:57:33 -05:00
Emmanuel Lepage Vallée 971adec0d0 Merge pull request #1622 from Veratil/fix-new-luacheck
Fix Luacheck 0.19.0 release Travis breaks
2017-03-04 13:32:53 -05:00
Daniel Hahler 0bd29ae1e9 Merge pull request #1580 from psychon/only_on_screen
Add a only_on_screen container widget
2017-03-04 04:06:21 +01:00
Kevin Zander 3f6df8ddee Fix Luacheck 0.19.0 release Travis breaks 2017-03-03 16:41:12 -06:00
Uli Schlachter 2b2612314c Add a only_on_screen container widget
Fixes: https://github.com/awesomeWM/awesome/issues/1565
Signed-off-by: Uli Schlachter <psychon@znc.in>
2017-03-03 13:25:28 +01:00
Kevin Zander 7f6763fb00 Add awesome.version to globals for tests. Will always show util.deprecate output 2017-03-02 18:15:59 -06:00
morethanoneanimal 1c71260389 Replace improperly used asserts with warnings.
Add awful.spawn noop function to hooks.lua test. Previously it was nil.
2017-02-21 00:31:33 +01:00
Emmanuel Lepage Vallee e221f8414c tests: Validate wibar geometry in the struts test
Prevent #1523 from regressing
2017-02-13 22:41:25 -05:00
Emmanuel Lepage Vallee 4a4864bb75 doc: Add another declarative syntax example
Better show the composite/encapsulated widgets
2017-02-12 22:19:08 +01:00
Emmanuel Lepage Vallee f448a604b7 cmake: Add a --DOC_NO_DASH option to the doc examples framework
This way it can be used in documentation pages.
2017-02-12 22:19:08 +01:00
Emmanuel Lepage Vallee 7753d830c1 tests: Test the place container. 2017-02-11 16:10:13 -05:00
Emmanuel Lepage Vallée fe4d6404a6 Merge pull request #1376 from Elv13/disable_wibox_in_tests
tests: Add a very dirty hack to break wibox for multiscreen tests
2017-02-07 11:38:33 -05:00
Emmanuel Lepage Vallee 83e176fa32 tests: Break wibox for multiscreen tests (on purpose)
This commit add an option to shim the whole wibox module when
running multi-screen tests. This is intended to lower the test
runtime when coverage is enabled.

In theory, most of that code is already covered by the
test-screen-changes suit.

This makes the coverage builds about twice as fast. This is
necessary because there is a large number of timeouts due to
limited resources on the Travis build system.
2017-02-07 11:37:07 -05:00
Emmanuel Lepage Vallee 631e75a757 ewmh: Use the request:: API in the border_width / wa callback
And stop listening to property::geometry, it's no longer needed.

This also remove messing up the border without saving it
somewhere. The concept is sound, but not the implementation.
2017-02-07 11:13:15 -05:00
Emmanuel Lepage Vallee 3ca363115d tests: Add tests for #1321 2017-02-07 11:12:40 -05:00
Daniel Hahler 52170f575f test-current-desktop: make wait_for_current_desktop fail directly (#1516)
We should get the expected state before already.

Ref: https://github.com/awesomeWM/awesome/issues/1495#issuecomment-277098634
2017-02-06 19:55:08 +01:00
actionless 3cc613fa20 test(awful: hotkeys_popup): add a minimal test 2017-02-05 21:32:43 +01:00
copycat-killer 1a5f6b7ad2 client: Allow clients to have shapes
Also fixes awful.client.shape docs

Closes #1507
2017-02-03 17:48:28 -05:00
Daniel Hahler d005640f92 test-current-desktop: add extra step when killing a client
Ref: https://github.com/awesomeWM/awesome/issues/1495#issuecomment-277098634
2017-02-02 23:02:54 +01:00
Uli Schlachter d494b87fb7 tests/_client.lua: Improve error with Gtk 2 (#1506)
In Gtk 2, the "first" argument to set_geometry_hints() is not optional.
However, this code does not provide any argument here. Improve the error
message in this case by checking for Gtk 3.

Reference: https://github.com/awesomeWM/awesome/issues/1495
Signed-off-by: Uli Schlachter <psychon@znc.in>
2017-02-02 22:30:04 +01:00
actionless 79a60b3009 fix(awful: key): clone table with user data
closes #1401

fix(tests: awesomerc): use `awful.key.execute` instead of local helper function
2017-01-30 18:19:24 +01:00
Emmanuel Lepage Vallee 1a7c816182 doc: Fix the progressbar examples indentation
Correctly, this time
2017-01-27 19:28:46 -05:00
Emmanuel Lepage Vallée 5a914b3496 Merge pull request #1198 from psychon/wibox-shape
Wibox: Add gears.shape support
2017-01-26 05:30:42 -05:00
SammysHP 37f0b7e3bf prompt: Make awful.widget.prompt themeable
Adds new optional properties to the theme:
    prompt_fg
    prompt_bg
    prompt_fg_cursor
    prompt_bg_cursor
    prompt_font
2017-01-23 13:15:09 +01:00
Emmanuel Lepage Vallee a6161d1229 tests: Test the prompt highligher 2017-01-22 01:14:20 -05:00
Emmanuel Lepage Vallee 928f7b04b4 prompt: Add a key filter example 2017-01-20 01:09:30 -05:00
Emmanuel Lepage Vallee f6cce940a5 prompt: Add a Vi like prompt parser
Otherwise hooks that modify the command are not documented well
enough.
2017-01-20 01:09:29 -05:00
Emmanuel Lepage Vallee 4934697817 prompt: Add a more complete hook example 2017-01-20 01:09:29 -05:00
Emmanuel Lepage Vallee 53d32d362a prompt: Unit test the example 2017-01-20 01:09:29 -05:00
Emmanuel Lepage Vallee e8f82c332a shims: Add basic shims for the key and mouse grabbers 2017-01-20 00:22:49 -05:00
Emmanuel Lepage Vallee 5e1d2ce0ad shims: Add the string.wlen function 2017-01-20 00:22:49 -05:00
Yauhen Kirylau 316734a681 move `theme_assets` from xresources theme to `beautiful` module. (#1219) 2017-01-14 04:09:54 +01:00
Daniel Hahler 162685bf30 Merge pull request #1367 from psychon/resizes
Fix some possible errors with resizes.

Fixes https://github.com/awesomeWM/awesome/issues/1368.
2017-01-08 23:42:52 +01:00
Daniel Hahler ec9a981dd7 tests: move coverage setup into tests/run.sh
This allows for `DO_COVERAGE=1 make check` with local tests (where
`CI=true` is not given).
It uses the new environment variables to configure the default theme,
instead of creating a temporary config/theme.
2017-01-08 20:34:13 +01:00
Daniel Hahler eacc49243b tests/examples/CMakeLists.txt: invoke luacov with `lua` directly 2017-01-08 20:34:13 +01:00
Daniel Hahler 6aee6c2053 ci: overhaul coverage processing
- Execute the tests without compiling, and don't mess with the source
   files when coverage is enabled.
   This ensures that the coverage report lines are correct.
   This disables the doc tests, as their results would be unused.
   Hack: it still expands macros on util.lua, because of
   `util.get_themes_dir()` and `util.get_awesome_icon_dir()`, which might
   be moved later.  Ref:
   https://github.com/awesomeWM/awesome/pull/1239#discussion_r93828178.
 - ensure that BUILD_APIDOC and DO_COVERAGE are not used together
 - awesomeConfig.cmake: add DO_COVERAGE as an option
 - Travis: only install codecov with DO_COVERAGE=codecov
 - Travis: do not use set -v; use set -x with DO_COVERAGE
 - do not use trailing slashes with dirs in tests/examples/CMakeLists.txt / .luacov
 - Use latest luacov (0.12.0-1) again
   This reverts parts of 4cc6a815.
   I think it is better to fix any failure that 4cc6a815 tried to work around.
 - Travis: simplify/fix require('luacov') for functionaltests
 - tests/examples/CMakeLists.txt: resolve ../.. in SOURCE_DIR
 - tests/examples/CMakeLists.txt: add DO_COVERAGE to env
 - Cleanup/simplify .luacov: work with SOURCE_DIRECTORY alone
 - tests/run.sh: pass through / set SOURCE_DIRECTORY when running awesome
 - tests/run.sh: resolve source_dir
 - use DO_COVERAGE from env only
2017-01-08 20:34:13 +01:00
Uli Schlachter e659b80f36 Refuse attempts to resize clients to invalid size
X11 does not allow to resize a window to size 0x0. Also, there are some
possibilities of integer overflows in our case. We tried to handle this
already, but there was a loop-hole: If the too-small-value is only
produced after applying size hints, then this was not caught.

Fix this by applying size hints before checking if the resulting size is
valid. However, this means some check needs to be duplicated to handle
the possibility of integer underflows while applying size hints.

Helps-with: https://github.com/awesomeWM/awesome/issues/1340
Signed-off-by: Uli Schlachter <psychon@znc.in>
2017-01-08 15:35:56 +01:00
Uli Schlachter f8b735fa24 test client: Add support for setting some size hints
This adds a new argument to the test client spawning function that will
make the test client window set a resize increment property.

The API here is starting to a bit ugly, but since this is not any user
facing API, that should not be a problem.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2017-01-08 15:35:56 +01:00
Emmanuel Lepage Vallee 6158091422 doc: Partially revert the indentation changes
This messes up the doc
2017-01-03 00:12:28 -05:00
Emmanuel Lepage Vallee 767cda5830 doc: Fix some example tests indentation
When `DOC_NO_USAGE` is set, the examples need 4 spaces as per the
markdown spec.
2017-01-03 00:10:18 -05:00
Emmanuel Lepage Vallee ad203232c4 cmake: Add an extra space to the @usage code
Otherwise commented lines look like ---- My comment
instead of -- -- My comment. This wasn't a problem before the
intentation fix commit, but it is now.
2017-01-03 00:07:57 -05:00
Daniel Hahler 9d69825766 Merge pull request #1345 from psychon/test-runner-speed2
Test runner speedup
2017-01-03 02:13:44 +01:00
Daniel Hahler 4b9e8e232d Merge pull request #1341 from psychon/modeline
Lots of fun with vim modelines
2017-01-02 19:56:06 +01:00
Uli Schlachter f7025e2f73 Fix tests/run.sh
Commit a944636c02 "bashified" tests/run.sh for some reason.
Afterwards, commit 4abd820051 fixed some of the fall-out.
However, there is still a problem left.

We have "set -e" in this script. Thus, whenever some command exits with
status 0, the script abort. When the variable errors is zero/unset, the
command "((errors++))" has exit status zero. Thus, this instruction
caused the shell script to abort. This was not intended.

Fix this by using "((++errors))" instead.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2017-01-02 19:35:13 +01:00
Uli Schlachter 6534208f62 tests/_runner.lua: Use less waiting
Before this, the test runner used a timer which fired every 0.1 seconds
to "do its thing". Many of these waits seem unnecessary.

This commit makes the test runner wait 0 seconds for the first call of a
step function. Only following calls will have a timeout of 0.1 seconds
applied.

A full run of the test suite (tests/run.sh without further arguments)
took about 100 seconds before this change. After this change, we are
down to 60 seconds. This is almost factor two faster! (Well, five thirds
is the exact number, so factor 1.66)

(The numbers are best out of three runs. The "before" number is rounded
down while the "after" number is rounded up.)

Signed-off-by: Uli Schlachter <psychon@znc.in>
2017-01-02 19:34:41 +01:00
Uli Schlachter edff48f133 test-awful-client.lua: Fix indentation
Signed-off-by: Uli Schlachter <psychon@znc.in>
2017-01-02 19:34:41 +01:00
Uli Schlachter a1b5782e90 test-awful-client.lua: Wait for c:kill() to be done
Signed-off-by: Uli Schlachter <psychon@znc.in>
2017-01-02 19:34:41 +01:00
Uli Schlachter 30912c6f24 test-geometry: Wait for c:kill() to be done
Signed-off-by: Uli Schlachter <psychon@znc.in>
2017-01-02 19:34:41 +01:00
Uli Schlachter 0d8106c6dd test-leak-client.lua: Wait for c:kill() to be done
Signed-off-by: Uli Schlachter <psychon@znc.in>
2017-01-02 19:34:41 +01:00
Uli Schlachter 0dff0c308a test-geometry.lua: Fix indentation
Signed-off-by: Uli Schlachter <psychon@znc.in>
2017-01-02 19:34:41 +01:00
Uli Schlachter 5bbe6747fc tests: Add calls to awesome.sync() where needed
Signed-off-by: Uli Schlachter <psychon@znc.in>
2017-01-02 19:34:41 +01:00
Uli Schlachter 0f755c8f12 Fix error handling in _client.lua
Previously we got the following unhelpful error message:

tests/_client.lua:98: bad argument #2 to 'assert' (string expected, got
userdata)

Signed-off-by: Uli Schlachter <psychon@znc.in>
2017-01-02 16:10:38 +01:00
Uli Schlachter c65cf9d3d3 test-struts.lua: Add tests for client struts
These new tests currently fail.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-12-31 15:27:28 +01:00
Uli Schlachter 9089874193 Fix indentation in test-struts.lua
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-12-31 14:51:29 +01:00
Uli Schlachter d893e42440 Add missing modelines to tests/*.lua
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-12-31 14:05:51 +01:00
Uli Schlachter 7d3b7fc48a Add vim modelines to all CMake files
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-12-31 14:02:14 +01:00
Uli Schlachter 46c32d9df1 tests/example: Add vim modelines
This uses DOC_HIDE magic in the actual test code, except for the
template.lua files which do not have it.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-12-31 13:59:38 +01:00
Uli Schlachter af59d52ddf Slightly change DOC_HIDE magic
The following commits will add DOC_HIDE uses that are not at the end of
the line, but the beginning. Hence, drop the requirement that it appears
at the end of the line and change the ".+" at the beginning into ".*".

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-12-31 13:58:35 +01:00
Daniel Hahler 58773488e4 tests: do not set -x by default on Travis (#1318)
This is rather noisy, and the test runner should not require this anymore for debugging.

[ci skip]
2016-12-28 12:43:00 +01:00
Daniel Hahler 68de588f21 tests: fix indenting/style (#1303)
Basically:

> for f in **/*.lua; do vim '+set sw=4' '+norm gg=G' '+wq' "$f"; done
2016-12-27 21:39:08 +01:00
Daniel Hahler 8f8094b57e tests/run.sh: allow to pass full file name
This is easier with shell completion.
2016-12-27 02:43:05 +01:00
Daniel Hahler 8e97ae51c3 tests/run.sh: remove exclamation mark for better copy'n'paste experience
Closes https://github.com/awesomeWM/awesome/pull/1293.
2016-12-27 02:43:05 +01:00
Uli Schlachter 144b9ef697 Add a kind of test for wibox shape support
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-12-26 13:28:34 +01:00
Uli Schlachter 3f9da4269d Fix test in test-spawn.lua (#1298)
Copy-paste-y I was checking for the wrong result. Another unrelated
problem with the test runner caused me to miss this. Sorry!

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-12-25 15:47:09 +01:00
Daniel Hahler 4abd820051 tests: fix incrementing errors (#1297) 2016-12-25 15:13:22 +01:00
Uli Schlachter 59cd409517 Small cleanup to test-spawn.lua
This removes a duplicate test and moves some "spawn with empty string as
argument" up to the long list of similar tests (and adds error
checking).

I do not see the point of the assert(#client.get() == 0) and so it was
just dropped.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-12-25 14:50:39 +01:00
Uli Schlachter 461da9ea4b Fix error handling in awesome.spawn()
Commit 5e6a893 broke error handling in awesome.spawn(): Instead of
returning an error message, it would just return its last argument.

This commit fixes that, removes some not-so-helpful warnings, and adds
lots of tests for this code.

Fixes: https://github.com/awesomeWM/awesome/issues/1281
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-12-25 14:50:39 +01:00
Daniel Hahler fb874122ba tests/run.sh: SHELL=/bin/sh, HOME=/dev/null (#1291) 2016-12-25 03:46:28 +01:00
Daniel Hahler d5b3fa8be0 Merge pull request #1290 from blueyed/tests-run-shellcheck-etc
tests/run.sh: shellcheck and other fixes
2016-12-25 03:43:50 +01:00
Daniel Hahler da415e0f9a Fix tests/test-awesomerc.lua (#1289)
Locally I got this, where only two xterms were opened.

```
% tests/run.sh test-awesomerc.lua
awesome_log: /tmp/tmp.ToAKs6Gw4J/_awesome_test.log
== Running test-awesomerc.lua ==
Error: timeout waiting for signal in step 1/11 (@20).
===> ERROR running test-awesomerc.lua! <===
Error: timeout waiting for signal in step 1/11 (@20).
There were 1 errors!
```
2016-12-25 03:43:24 +01:00
Daniel Hahler 58067834ad tests: remove TEST_QUIT_ON_TIMEOUT/quit_awesome_on_timeout (#1288)
It was set to 1 unconditionally anyway, and does not make sense to parametrize after all.
2016-12-25 03:43:03 +01:00
Daniel Hahler 8c9a1b5491 fixup! tests/run.sh: shellcheck and other fixes 2016-12-25 03:09:43 +01:00
Daniel Hahler a944636c02 tests/run.sh: shellcheck and other fixes 2016-12-25 03:08:35 +01:00
Emmanuel Lepage Vallee 2b462cb2e3 doc: Document the tag `master_fill_policy` 2016-12-21 11:41:30 -05:00
Emmanuel Lepage Vallée 8935ed2a30 Remove traces of the old URL (#1280)
**WARNING**: This breaks the API
2016-12-21 02:03:03 +01:00
Uli Schlachter 11af40b916 Fix luacheck warnings in tests/_multi_screen.lua
This is a partial revert of commit 7901a1c647. The end result is the
same, but the change from that commit is reverted and instead the same
thing is done in a different way.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-12-19 09:44:26 +01:00
Uli Schlachter 939453cabe Fix luacheck warnings in the logo-tests
Ever since these files were added, these problems existed. I have no
idea what alt_fg is supposed to mean, but since a value of nil is
apparently ok, I just pass in nil directly.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-12-18 18:59:58 +01:00
Uli Schlachter 226bb2cc31 Fix luacheck warnings in themes/xresources/assets.lua
These were introduced by commit 12e1bd6747.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-12-18 18:57:58 +01:00
Emmanuel Lepage Vallee 7961b8ec4b tests: Test the wallpapers 2016-12-12 13:05:08 -05:00
Emmanuel Lepage Vallee 1368212fb7 tests: Test the `tag` and `tags` rules with multiple screens 2016-12-12 11:49:11 -05:00
Emmanuel Lepage Vallee 7901a1c647 tests: Disable the wallpaper for multi-screen tests.
I really try to avoid doing this, psychon too, but enough is
enough. We don't have a solution and I would rather add more
tests that work than keeping a test that keep "failing" just
to remind us it's there.
2016-12-12 11:49:11 -05:00
Emmanuel Lepage Vallee beb997f848 tests: Test the xresource theme logo generation
As a side effect, this creates valuable SVG assets
2016-12-11 00:10:39 -05:00
Emmanuel Lepage Vallee e01de8d977 tests: Expose the themes to the examples tests 2016-12-11 00:10:39 -05:00
Uli Schlachter 9f2c4719ed Make the piechart deterministic (#1258)
Previously, the API to set the data that should be displayed was
:set_data(t) where t is a table. This table has the labels to use as its
keys and the numbers as its values. With this API, it was not possible
to influence the order in which the "pie pieces" were drawn.

This commit adds and uses a new API called :set_data_list(t). Here, t is
a table with integer keys and tables as values, thus one can iterate
over this with ipairs() and the order is well-defined. The tables used
as values contain the label as their first entry and the number as their
second entry.

Fixes: https://github.com/awesomeWM/awesome/issues/1249
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-12-07 20:20:09 +01:00
Uli Schlachter 5d81441c76 Make the resize_to_mouse example test deterministic (#1250)
This test has a list of "things" that should be present in the output. This
table is iterated over via pairs(), which means that the output is
non-deterministic and the order of the entries is basically random.

Fix this by using ipairs() to get a deterministic iteration order. This requires
some slight change to the table that is iterated over.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-12-02 21:23:36 +01:00
Uli Schlachter cb61c1884f Remove a case where a pointer appeared in text tests (#1251)
This printed a table. This will make Lua print the address of the table and
hence the output of this test was non-deterministic.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-12-02 20:30:10 +01:00
Emmanuel Lepage Vallée 883b5934c0 Merge pull request #1236 from Elv13/fix_new_tag_rule
rules.new_tag: Fix when the tag screen doesn't match the client
2016-12-01 19:53:17 -05:00
Emmanuel Lepage Vallee 771f5a13c6 tests: Bump the timeout to 3 minutes.
There we go again... When hitting a slow CI node, there is again
timeouts when doing the multi-screen tests. As no solution to
bug leading to this has been found, the only thing to do is
increase the timeout.

Hopefully this commit will be reverted soon.
2016-12-01 19:34:46 -05:00
Uli Schlachter 3a7e14e5d7 Improve API of test/_client.lua
The first return value was always true. How useless...

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-12-01 15:32:31 +01:00
Uli Schlachter f9cdc98c73 Fix spawn callbacks
Spawn callbacks were never invoked when no startup-notification-rules were
given. This commit fixes the code so that "startup done" callbacks are also
called when no rules were given.

Fixes: https://github.com/awesomeWM/awesome/issues/1218
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-12-01 15:32:21 +01:00
Emmanuel Lepage Vallee 28486527e7 tests: Add a `new_tag` rule multi-screen test 2016-11-27 04:57:35 -05:00
Daniel Hahler aeab2a70e9 Fix whitespace warnings reported by luacheck (#1229) 2016-11-21 22:38:23 +01:00
Emmanuel Lepage Vallée 92a494a799 Merge pull request #1182 from psychon/screen_swap
Screen swap
2016-11-07 19:23:48 -05:00
Uli Schlachter b2e0e55fc0 tests/run.sh: Inherit $HEADLESS (#1201)
Via this, I can set HEADLESS=1 in my wrapper-GNUMakefile that I use and
"make check" will no longer open a new window that gets in my way.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-10-31 23:22:31 +01:00
Uli Schlachter 3ba07d77a6 Fix three typos
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-10-30 15:17:27 +01:00
Uli Schlachter 7712383475 Add a test for screen :swap()
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-10-29 09:36:31 +02:00
Uli Schlachter c218b1da72 Test and fix swapping clients
The code in luaA_client_swap() is incorrect, because
luaA_object_emit_signal() already pops the arguments to the signal.
Still, the code here tried to remove the arguments from the Lua stack
again, thereby corrupting the stack (removing more items than there are
in the stack).

Normally, popping more things from the stack than it has entries
silently corrupts the Lua stack. Apparently this doesn't necessarily
cause any immediate issues, because this code has been broken since nine
months and no one noticed. This mistakes was introduced in commit
55190646.

This issue was only noticed by accident. Thus, this commit also adds a
small integration test that exercises this bug. This test catches the
issue, but only on Travis, because there we are building our own version
of Lua 5.3 and that one has assertions enabled.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-10-29 09:34:45 +02:00
Uli Schlachter d07fc822a1 Fix awful.tag.object.get_gap_single_client (#1190)
The usual "a or b"-trick to simulate C's ?:-operator does not work when
"false" is a valid value. Fix the code to handle this correctly and add
a short unit test which would have caught this problem.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-10-26 01:43:45 +02:00
Emmanuel Lepage Vallee 072ff10cf0 tests: Test the slider widget. 2016-10-12 02:24:47 -04:00
Emmanuel Lepage Vallee a2748a1fa3 tests: Test client focus stealing filters. 2016-10-04 01:00:55 -04:00
Daniel Hahler 86bc579649 Improve messages with tests/examples/CMakeLists.txt 2016-10-01 17:24:44 +02:00
Daniel Hahler 84e7875e50 minor: fix doc for tests/examples/CMakeLists.txt 2016-10-01 17:24:03 +02:00
Uli Schlachter da6012da3e Fix memory leak in the default config on screen removal
The default config had tables like mywibox and mywibox[s] was the wibox
that is visible on screen s. When a screen is removed, nothing cleans up
these tables and so the screen and the wibox could not be garbage
collected. The same applies to the layoutbox, taglist etc.

This commit removes the global mywibox table and instead saves it as a
property on the screen. This way, the screen is not explicitly
referenced and when it is removed, the screen, its wibox and all of its
widgets become unreachable and can be garbage collected.

This commit also updates the docs and the tests that referenced things
(mostly the wibox) via mywibox[s] to now use s.mywibox.

Fixes: https://github.com/awesomeWM/awesome/issues/1125
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-09-30 22:46:51 +02:00
Uli Schlachter f9775b91de shims: Add support the new .data property
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-09-30 11:11:55 +02:00
Uli Schlachter 502b4139ba Merge branch 'faster-client-deamon' 2016-09-30 10:17:35 +02:00
Uli Schlachter 8dc6c5f502 Rewrite tests/_client.lua
The new client is hopefully faster. Why, you ask?

Instead of spawning a new Lua process each time a test asks for a new window,
there is a "daemon process" which gets commands to open new windows from its
standard input. That way, Lua doesn't have to load LGI all the time and lots of
pointless work is skipped. The daemon process exits when its stdin is closed and
thus should automatically exit when awesome exits.

Fixes: https://github.com/awesomeWM/awesome/issues/1089
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-09-30 09:58:20 +02:00
Uli Schlachter 61d8d74421 Fix test-tooltip.lua: Run the event loop
This test changes the mouse cursor's position and afterwards has an
assert that checks something on the tooltip. This really looks a lot
like it expects the mouse cursor's position to be already updated and
its enter and leave events to be handled. However, this is now how
things actually work.

Fix this by moving the assert into its own step, so that in between the
normal main loop runs.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-09-30 09:36:47 +02:00
Emmanuel Lepage Vallee f25621c94c tests: Test the graph shape. 2016-09-26 01:20:57 -04:00
Emmanuel Lepage Vallee 549d68dcc5 doc: Add more progressbar shape examples 2016-09-26 01:18:09 -04:00
Emmanuel Lepage Vallee 7b11f1c1b4 tests: Test progressbat paddings, margins and clip 2016-09-26 01:18:09 -04:00
Emmanuel Lepage Vallee a8568eb969 doc: Add examples for vertical and labelled progressbar 2016-09-26 01:18:09 -04:00
Emmanuel Lepage Vallee b49b859fac tests: Use the new progressbar features in the default test. 2016-09-26 01:18:09 -04:00
Emmanuel Lepage Vallee 6990cc15dc tests: Add an helper "before and after" method for the layouts
This will avoid a lot of copy paste as the
remove/set/swap/insert/add/remove_widgets/swap_widgets code
is identical beside the method name.
2016-09-26 00:40:20 -04:00
Emmanuel Lepage Vallee 50b6c82091 shim: Add basic button support 2016-09-25 22:47:35 -04:00
Uli Schlachter cea5d41518 tests/run.sh: Use dbus-send directly with low timeouts (#1116)
run.sh waits for awesome's startup to be done by having awesome execute "return
1" via its dbus interface. However, by default dbus has a 25 second timeout
before it fails a dbus-send invocation. This defeats the purpose of this
exercise.

So instead of using awesome-client, this commit makes the code use dbus-send
directly and specifies a relative low reply timeout (which should still be
plenty so that this doesn't erroneously fail).

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-09-25 20:28:27 +02:00
Daniel Hahler 8dc98e8c51 Merge pull request #1115 from psychon/timeouts
Don't use sleep to implement timeouts in the test runner
2016-09-25 13:00:31 +02:00
Uli Schlachter a430ac1e23 tests/run.sh: Print special message for timeout
The timeout utility guarantees an exit code of 124 when the process died due to
timeout. Since awesome only ever exits with 0 or 1, we can use this to reliably
detect timeouts and print a matching message.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-09-25 06:00:15 +02:00
Daniel Hahler 9b7e655afe Merge pull request #1111 from psychon/assorted-fixes
Some assorted fixes
2016-09-25 01:35:55 +02:00
Emmanuel Lepage Vallee de3a8bb5fb tests: Test the arc chart container. 2016-09-24 14:45:09 -04:00
Emmanuel Lepage Vallee 15102c1fe9 tests: Test the arc shape. 2016-09-24 14:45:09 -04:00
Emmanuel Lepage Vallee 2a976951ea tests: The the piechart widget. 2016-09-24 14:45:09 -04:00
Emmanuel Lepage Vallee 0a3a71dd45 widgets: Add a piechart widget. 2016-09-24 14:45:09 -04:00
Emmanuel Lepage Vallee d2d2d82af8 tests: Test the pie shape. 2016-09-24 14:45:09 -04:00
Emmanuel Lepage Vallee 52cca3b8b7 tests: Test the checkbox widget. 2016-09-24 14:45:09 -04:00
Emmanuel Lepage Vallee 6128e995f2 tests: Test the radical progressbar 2016-09-24 14:45:08 -04:00
Uli Schlachter 60ee10cfff tests/run.sh: Use the "timeout" command
coreutils provides a timeout command. Use that instead of (badly) inventing our
own version of it. This "timeout" command seems to be new. Let's hope everyone
has it and think about alternative solutions only when needed.

Fixes: https://github.com/awesomeWM/awesome/issues/1075
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-09-24 15:56:36 +02:00
Uli Schlachter 62d0961994 tests/run.sh: Show awesome's exit code
When awesome exits with a non-zero code, this is something interesting that we
should log. Do so.

The "set +e" / "set -e" dance is required so that we do not abort because the
wait builtin returns a non-zero code.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-09-24 15:55:24 +02:00
Uli Schlachter 86ee5bb750 tests/run.sh: Don't fail because of grep
This script runs under "set -e", so any command exiting with a non-zero status
makes it abort. However, we do not care about failures from grep to find
anything, so handle that case gracefully.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-09-24 15:53:35 +02:00
Uli Schlachter 489aa4dc24 Improve behaviour of GC'd objects
Before this commit: When we are GC'ing an object, we clear its metatable, since
otherwise crashes could occur in various places. This means that if someone
tries to use such an object, they get an unhelpful error message like "attempt
to index userdata object" and they don't understand what the problem is. Also,
this means that foo.valid does not actually work after GC.

This commit changes this behaviour. Instead of setting an empty metatable, we
now create a metatable with an __index and __newindex method. These metamethods
produce better error messages that they sat the underlying object was already
garbage collected. Better yet, the __index metamethod makes foo.valid be false
instead of causing an error, so that the existing machinery for detecting
invalid objects continues to work.

This commit also adds a functional test that verifies this behaviour.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-09-24 14:37:07 +02:00
Emmanuel Lepage Vallee c7f5a9acd3 tests: Fix awful.screen tests
To ensure that some features such as SNID rules work, we need
to ensure that the screen isn't set by other code paths. Only
a single algorithm can be executed for the screen. As soon
as many algorithms are executed on events such as "manage", it
will most likely regress again.

This commit make sure of that by disabling the default normal source
of c.screen. After that, any other c.screen changes can be
considered bugs.
2016-09-24 00:19:10 -04:00
Daniel Hahler b4d6bfa4db Travis: fix codecov (#1105)
tests/run.sh: no slash with --search lib

Fixes https://github.com/awesomeWM/awesome/issues/1049.
2016-09-20 19:53:10 +02:00
Crazy Lemon ffa7519730 Has the example test runner unset env variables that would interfere (#1106)
with using LUA_PATH for the `package.path` default valua for the shim tests
2016-09-20 19:36:23 +02:00
Uli Schlachter 75ed165ae6 Test & fix a bug with dbus.disconnect_signal (#1096)
The code was written so that it assumes that disconnecting the last signal also
removed the corresponding entry in the signal array. This lead e.g. to an
index-out-of-bounds access in some cases.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-09-18 12:50:40 +02:00
Emmanuel Lepage Vallee 35c0476c86 tests: Increase time limit to 120 seconds
The "test launching client on a specific screen" suit is very slow.

However, it is also necessary to avoid issues such as #1069 or #154
from regressing again.

This is a temporary fix until a faster test client "daemon" is
developped.
2016-09-07 00:40:30 -04:00
Emmanuel Lepage Vallee edf7fb40b3 tests: Test moving tags between screens. 2016-09-05 17:13:53 -04:00
Emmanuel Lepage Vallee 760e72f94a tests: Test spawning client on a specific screen. 2016-09-05 17:13:53 -04:00
Emmanuel Lepage Vallee db73887b9f tests: Add a framework to make it easier to test multiple screens.
While testing using "the real deal" and with all the tests would be
better, it would add a lot of complexity to the testing framework.

This module generate multiple multi-screen scenarios and some obvious
issues that they can cause. Over time, as more steps are added, it
will provide "good enough" testing for multiple screens.

Individual test suits can require() this utility to replicate their
steps for each multi-screen scenarios.
2016-09-05 17:13:53 -04:00
Emmanuel Lepage Vallee a0b40bfd8f tests: Try to detect client "manage" signal race conditions.
See #1028
2016-09-04 02:52:16 -04:00
Uli Schlachter cf89f108ac Make use of awesome-client commands
This uses the new support introduced in f0f31bc305 in the docs and in
tests/run.sh, removing an useless use of cat/echo.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-08-31 17:45:37 +02:00
Emmanuel Lepage Vallee f2bb0ab871 tests: Test the tag index more often 2016-08-22 17:27:48 -04:00
Emmanuel Lepage Vallée ba2750cf91 Merge pull request #929 from Elv13/geometry_overhaul_p3.03
Geometry overhaul part 3.03 (final part for 3.6)
2016-08-20 16:40:36 -04:00
Emmanuel Lepage Vallee 4aada37682 tests: Test tooltips 2016-08-20 16:21:48 -04:00
Emmanuel Lepage Vallée 76d0c458b0 Merge pull request #1031 from Elv13/add_recursive_signal
Add recursive signal for widgets trees.
2016-08-20 16:01:54 -04:00
Emmanuel Lepage Vallee 46f6d28bdf tests: Test recursive signals on mouse events. 2016-08-20 15:41:12 -04:00
Uli Schlachter c22b939630 Be less strict about warnings from "example tests" (#1045)
The build is no longer aborted when one of the "example tests" produces a
message on stderr. However, on Travis this requirement is still made. This
should catch "bad errors" via Travis while not breaking the build for users.

Fixes: https://github.com/awesomeWM/awesome/issues/821
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-08-20 18:59:28 +02:00
Uli Schlachter 71049a67f7 tests/run.sh: Use --search instead of $LUA_PATH
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-08-20 16:04:11 +02:00
Emmanuel Lepage Vallée cbda387677 Merge pull request #1008 from blueyed/tests-run-from-tests-dir
tests/run: change to script dir first
2016-08-20 00:15:57 -04:00
Emmanuel Lepage Vallee 9d69448ac1 tests: Test mouse.move on odd sized clients.
Close #1039
2016-08-12 17:02:33 -04:00
Emmanuel Lepage Vallee da62aec055 tests: Test spawn empty command corner case 2016-08-09 18:50:34 -04:00
Emmanuel Lepage Vallee 3587de5721 tests: Test the declarative widget system on wiboxes 2016-08-01 16:10:53 -04:00
cmertz 2231158adf change test value for client.border_width 2016-07-27 13:43:28 +02:00
cmertz 41133c9836 test client.border_width restore after fullscreen 2016-07-27 09:50:11 +02:00
Daniel Hahler e8dfe36c59 tests/run: change to script dir first
Then use `$source_dir` for detecting the build dir: this way you can run
`./run.sh some-test-file.lua` from `./tests/`.
2016-07-21 19:08:43 +02:00
Daniel Hahler 25b6d31e97 Merge pull request #994 from psychon/fix-drawable-bgimage
Fix drawable bgimage
2016-07-09 19:17:48 +02:00
Uli Schlachter a8834bfcc1 tests/examples: Move common template code into a common file (#993)
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-07-09 19:03:49 +02:00
Uli Schlachter 3e85ddb11d Add a test for drawable:set_bgimage()
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-07-09 10:28:42 +02:00
Emmanuel Lepage Vallée 36e47fb1a9 tests: Don't use arbitrary build dir path (#898)
Calling the test script by hand from the build dir stopped working.
2016-06-12 23:28:32 +02:00
Uli Schlachter 7488f80be7 tests/example/: Print status messages
Running the tests sadly takes much to long. Since I don't have a good idea what
to do about this (I'd like to run all tests in a single Lua process, but that
doesn't seem to be possible easily), instead let's just make it more explicit
what is being done. This commit prints a message for each test that is being
run.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-06-11 10:24:34 +02:00
Uli Schlachter ca074dc689 tests/example/: Remove environment hack
Now that tests are no longer scanned for recursively, the hack of passing values
back and forth via the environment is no longer needed and can be removed.

While at it, this also exchanges the "useless use of regex" for an explicit
string replacement.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-06-11 10:24:34 +02:00
Uli Schlachter a7d6699d5d tests/example/: Replace recursion with iteration
Instead of recursively walking the directory tree, this commit makes the code us
GLOB_RECURSE to find all files and then handles them on after another.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-06-11 10:24:34 +02:00
Uli Schlachter 77f867ff57 tests/example/: Explcitly compute namespace
The namespace of e.g. "tests/examples/awful/mouse/coords.lua" is "_awful_mouse".
This is purely based on the path of the file.

Previously, this was computed while recursively scanning the directory tree.
This commit instead moves this to an extra function that handles this task.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-06-11 10:24:34 +02:00
Uli Schlachter 5fb6ca8194 tests/example/: Make search for template.lua explicit
Previously, while recursively scanning the directory tree, the code in here also
scanned for template.lua files and remembered the latest one it found. This
commit adds a function which finds the right template.lua for a given file name,
making this search explicit and easier to understand.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-06-11 10:24:34 +02:00
Uli Schlachter 2d511e2ab5 gears.object.properties: Implement read-only properties
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-06-08 20:28:31 +02:00
Daniel Hahler d9cd0a4f0e Merge pull request #948 from psychon/deprecate-add-signal
Deprecate add_signal
2016-06-07 22:58:14 +02:00
Uli Schlachter ffe64727fe Silence warnings in examples (#944)
There was a problem that the examples were considered to have failed as soon as
they produced any kind of output, but there were legitimate cases of warnings
being printed that triggered these checks. Commit 4819be4f4f used a
regular expression to detect and ignore this warnings.

This commit reverts the above commit and instead silences the warnings by
monkey-patching the function that prints the warnings into a no-op.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-06-07 22:57:01 +02:00
Daniel Hahler efb8e65b15 Merge pull request #886 from psychon/fake-screen-resize
Fake screen resize
2016-06-07 21:13:35 +02:00
Daniel Hahler eaa80fef9a tests/run: clarify timeout in wait_until_success
Ref: https://github.com/awesomeWM/awesome/pull/937#discussion-diff-65313945
2016-06-05 17:05:23 +02:00
Daniel Hahler 8e221522f7 Travis: kill awesome after max. 60s per test file
This is required for when the test setup fails already, e.g. because of
an assertion error at the top of a test file.
2016-06-05 17:05:23 +02:00
Uli Schlachter 0857f6f1b5 Lua: Remove calls to add_signal()
The requirement to call add_signal() was added to catch typos. However, this
requirement became increasingly annoying with property::<name> signals and e.g.
gears.object allowing arbitrary properties to be changed.

All of this ended up in a single commit because tests/examples fails if I first
let add_signal() emit a deprecation warning.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-06-04 18:23:48 +02:00
Uli Schlachter a21c0baac2 test-screen-changes.lua: Also test moves
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-06-04 17:39:51 +02:00
Uli Schlachter 7830cf076b Fix the test that the previous commit added
There was a race with autofocus. To overcome this, add another step that tests
that moving the client back to a visible tag and focusing it updates
_NET_CURRENT_DESKTOP. Afterwards, we kill the client so that it can no longer
interfere.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-06-04 17:05:42 +02:00
Uli Schlachter 66cadf5af8 Test if _NET_CURRENT_DESKTOP is set correctly
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-06-04 16:01:24 +02:00
Daniel Hahler 007d3d7a14 Merge pull request #926 from psychon/signals-and-hostname
Signals and hostname
2016-06-04 00:29:02 +02:00
Emmanuel Lepage Vallee 505db433d6 shims: Support graph and progresssbar colors 2016-05-30 23:10:03 -04:00
Emmanuel Lepage Vallee c62ca6c665 imagebox: Enable the property system
And add the missing documentation
2016-05-30 23:10:02 -04:00
Emmanuel Lepage Vallee a8505ed019 doc: Add an imagebox widget default screenshot 2016-05-30 18:00:59 -04:00
Emmanuel Lepage Vallee 940a623c34 shims: Add an awesome logo 2016-05-30 18:00:59 -04:00
Emmanuel Lepage Vallee 83a9a9e67a doc: Add a progressbar widget default screenshot 2016-05-30 18:00:59 -04:00
Emmanuel Lepage Vallee f29eeed82e doc: Add a graph widget default screenshot 2016-05-30 18:00:58 -04:00
Emmanuel Lepage Vallee ec2cfc7be2 doc: Add a textbox widget default screenshot 2016-05-30 18:00:58 -04:00
Emmanuel Lepage Vallee ab40a342af doc: Add a stack layout default screenshot 2016-05-30 18:00:58 -04:00
Emmanuel Lepage Vallee 163748c782 doc: Add a ratio layout default screenshot 2016-05-30 18:00:58 -04:00
Emmanuel Lepage Vallee 7fa56cb94c doc: Add a flex layout default screenshot 2016-05-30 18:00:58 -04:00
Emmanuel Lepage Vallee 150026690c doc: Add a fixed layout default screenshot 2016-05-30 18:00:58 -04:00
Emmanuel Lepage Vallee 5ba7af2be2 doc: Add an align layout default screenshot 2016-05-30 18:00:58 -04:00
Emmanuel Lepage Vallee f1ea1c04dd doc: Add a layout demonnstration template.
Draw rectangle with optional text placed by the layout
2016-05-30 18:00:58 -04:00
Emmanuel Lepage Vallee 47a471072a doc: Add a `margin` default screenshot 2016-05-30 18:00:58 -04:00
Emmanuel Lepage Vallee 26cf28b23b doc: Add a `constraint` default screenshot 2016-05-30 18:00:58 -04:00
Emmanuel Lepage Vallee de7ae79c6c doc: Add a `background` default screenshot 2016-05-30 18:00:58 -04:00
Emmanuel Lepage Vallee 46c83b4001 doc: Add a `mirror` default screenshot 2016-05-30 18:00:58 -04:00
Emmanuel Lepage Vallee ab0a9a077e doc: Add a `rotate` default screenshot 2016-05-30 18:00:58 -04:00
Emmanuel Lepage Vallee e57ae1789d doc: Add a container default example template
This will be implemented by each container and then grouped into
a list by CMake and inserted in the widget system documentation.
2016-05-30 18:00:58 -04:00
Emmanuel Lepage Vallee bc2c0cfcb0 doc: Add a wibox.container.rotate example
Also fix the documentation
2016-05-30 17:51:19 -04:00
Emmanuel Lepage Vallee ac7ea4c70f tests: Fix coverage data
As the documentation generation insert increasingly large ammount
of code into the lua files, the coverage data is getting less and
less accurate. This try to fix this by only collecting such data
after the `configure_file` calls are done.
2016-05-30 17:51:19 -04:00
Emmanuel Lepage Vallee ae0d306114 textclock: Move to wibox.widget
It doesn't depend on `awful`, so it doesn't belong in `awful`.
2016-05-30 17:51:19 -04:00
Emmanuel Lepage Vallee 44a4eca40e doc: Port the shape images to the doc example system 2016-05-30 17:51:19 -04:00
Emmanuel Lepage Vallee feb3833fd1 doc: Move the background examples to the container suit 2016-05-30 17:51:19 -04:00
Emmanuel Lepage Vallee d85588babe wibox: Create a container module
Previously, the "containers" were placed in layout or widget.

They all have similar APIs and usage, so lets bring them together.
2016-05-30 17:51:19 -04:00
Emmanuel Lepage Vallee 9f74416ef4 placement: Remove leftover prints 2016-05-29 23:50:37 -04:00
Uli Schlachter badf338542 Add awesome.hostname
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-05-27 19:22:42 +02:00
Uli Schlachter 2d35886a76 Add awesome.{kill,unix_signal}
kill is a wrapper around the POSIX kill() function and unix_signal is a table
that maps signal numbers to their names and signal names to their numeric value.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-05-27 19:22:41 +02:00
Emmanuel Lepage Vallée c1d3f291fe Merge pull request #913 from Elv13/gear_obj_props
Gear.object properties
2016-05-18 15:20:43 -04:00
Emmanuel Lepage Vallee bb5ee50de9 layoutbox: Revert 25f4f24791
Apparently, there is such thing as not leaking enough...

Also try to clear the widgets from mywibox. This seem to help.

Time will tell.

Fixes #914, unfixes #808
2016-05-18 01:45:21 -04:00
Emmanuel Lepage Vallee d6a7b6c645 object: Add a dynamic property example 2016-05-18 01:23:53 -04:00
Emmanuel Lepage Vallee f810d78e7b object: Add a signal example 2016-05-18 01:23:53 -04:00
Emmanuel Lepage Vallee 08df8fbf03 doc: Add a generic template for text only tests 2016-05-18 01:23:53 -04:00
Emmanuel Lepage Vallee 52208bc728 tests: Test wibox attachment, wibars and struts 2016-05-15 17:17:12 -04:00
Emmanuel Lepage Vallee b4f08eb7b6 tests: Add asserts to under_mouse 2016-05-15 17:17:12 -04:00
Emmanuel Lepage Vallee 0dcc545f35 tests: Update the miss handler test 2016-05-15 17:17:11 -04:00
Emmanuel Lepage Vallee f4b2043da5 tests: Fix the wibox template 2016-05-15 17:15:55 -04:00
Emmanuel Lepage Vallee df1cc6d008 tests: Add awful.widget.button mouse release 2016-05-10 16:06:46 -04:00
Uli Schlachter 9d30bf87ae Merge branch 'more-travis-variance' of https://github.com/psychon/awesome 2016-05-09 18:42:09 +02:00
Uli Schlachter 1ab3f43575 Merge branch 'useful-env-vars' of https://github.com/psychon/awesome 2016-05-09 18:41:02 +02:00
Uli Schlachter c62da0dcc7 Merge branch 'fake-screen2' of https://github.com/psychon/awesome 2016-05-09 18:40:50 +02:00
Daniel Hahler 58209cd89e Use an uneven screen width/height (1921x1079) in one Travis job (#870)
This is meant to trigger issues that would need `math.ceil()` fixes etc.

Ref: https://github.com/awesomeWM/awesome/issues/848#issuecomment-216068831
2016-05-08 20:58:19 +02:00
The Personal Things df5ecd4c6f tests: test-resize: use math.ceil to handle uneven screen width (#882)
See https://github.com/awesomeWM/awesome/issues/848#issuecomment-217361136.

This is actually a leftover from 612756f and is meant to fix the failure
at https://github.com/awesomeWM/awesome/pull/870.
2016-05-08 19:00:59 +02:00
Uli Schlachter 7ea816045d "make check": Support out-of-tree builds
Currently, tests/run.sh expects the directory layout that our wrapper Makefile
sets up before running CMake. This commit adds support for any other directory
configuration as well.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-05-08 18:52:18 +02:00
Uli Schlachter beb9b7f950 tests/run.sh: Set up some useful env vars
GDK_SCALE=1 is needed to overwrite other settings that people might have which
would make geometry-related tests fail.

NO_AT_BRIDGE=1 gets rid of the following message that I am seeing:

** (lua:8321): WARNING **: Error retrieving accessibility bus address:
org.freedesktop.DBus.Error.ServiceUnknown: The name org.a11y.Bus was not
provided by any .service files

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-05-08 16:48:24 +02:00
Uli Schlachter 014f68a84d Add a functional test for addition and removal of screens
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-05-08 15:01:06 +02:00
Uli Schlachter 975aac5c0c awful.tag: Delete a screen's tag on removal
Any clients with these tags end up somewhere random (the first tag on the first
remaining screen). This certainly can be improved in the future, but at least
this is a start.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-05-08 14:52:31 +02:00
Uli Schlachter e4c3554c22 tests/_client.lua: Don't use GtkApplication
GtkApplication does magic like ensuring that the application ID is unique and
there is only a single instance of each application running. We don't want nor
need that for the tests.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-05-08 14:52:31 +02:00
Uli Schlachter bcc7c65f77 tests/_client.lua: Allow class to be unspecified
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-05-08 14:52:31 +02:00
Uli Schlachter 2da6ec0912 tests/_client.lua: Add missing modelines
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-05-08 14:51:33 +02:00
Emmanuel Lepage Vallée d497cdf081 Merge pull request #875 from psychon/sn-fix
Startup-Notification fix
2016-05-08 01:03:16 -04:00
Emmanuel Lepage Vallée 504018343b Merge pull request #873 from Elv13/geometry_overhaul_p3.01
Geometry overhaul p3.01
2016-05-05 16:23:11 -04:00
Uli Schlachter 6b4a2625cb test-spawn-snid.lua: Use test client instead of urxvt
Startup notification support in urxvt is optional while GTK always supports
startup notification. Thus, use the new GTK-based test client for the SN tests.

Fixes: https://github.com/awesomeWM/awesome/issues/848
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-05-05 18:48:24 +02:00
Emmanuel Lepage Vallee 66ca66ca87 tests: Add basic drawin shim 2016-05-03 17:12:54 -04:00
Daniel Hahler 087d578755 tests: fail if $AWESOME does not exist / is not executable (#872)
Without this the stdout/stderr rediraction when launching it makes the
error regarding the "program not found" disappear(?!).

[ci skip]
2016-05-03 12:08:00 +02:00
Jajauma 612756ff0e tests: test-resize: use math.ceil to handle uneven screen height
See https://github.com/awesomeWM/awesome/issues/848#issuecomment-216052517.
Closes https://github.com/awesomeWM/awesome/pull/869.
2016-05-02 01:43:11 +02:00
Emmanuel Lepage Vallée dbd0931343 Merge pull request #844 from Elv13/geometry_overhaul_p2
Geometry overhaul part 2.5
2016-04-30 23:29:29 -04:00
Emmanuel Lepage Vallee e41853a47a tests: Test floating client move, snap and resize 2016-04-30 04:27:34 -04:00
Emmanuel Lepage Vallee fc2d359722 doc: Add a coords example
This forced the `coords()` documentation to be moved to Lua.
Keeping it in the C file caused yet another example CMake hack.
2016-04-30 04:27:34 -04:00
Emmanuel Lepage Vallee e8dd707508 tests: The the mouse miss handler 2016-04-30 04:27:34 -04:00
Emmanuel Lepage Vallee f0546b900d tests: Improve the placement compositing tests 2016-04-30 04:27:34 -04:00
Emmanuel Lepage Vallee bb0a2addb4 tests: Add an option to disable @usage ldoc tag 2016-04-30 04:27:34 -04:00
Emmanuel Lepage Vallee 75764108e1 awful.placement: Make all functions return the geometry 2016-04-30 04:27:33 -04:00
Emmanuel Lepage Vallee 3e7a7f23c2 tests: Test awful.placement.resize_to_mouse 2016-04-30 04:27:33 -04:00
Emmanuel Lepage Vallee a072e34194 shims: Add the request:: signals 2016-04-30 03:34:14 -04:00
Uli Schlachter c6fafe06c0 Default config: Remove tags table
Tags are accessible as s.tags on a screen object. Yup, that's harder to find
than a variable that is defined in the default config, but such is life.

Now that awful.rules supports specifying tags by name, I guess that the number
one reason for needing the tags table is gone.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-04-26 09:36:53 +02:00
Emmanuel Lepage Vallee d736850e60 tests: Fix urgent test use of deprecated functions
It caused noise in the test results
2016-04-20 00:11:04 -04:00
Emmanuel Lepage Vallee f2a19690ac tests: Test geometry changes 2016-04-20 00:11:04 -04:00
Emmanuel Lepage Vallee 8875b66d2e tests: Test awful.rules 2016-04-20 00:11:04 -04:00
Emmanuel Lepage Vallee 9798b455cb tests: Add a flexible dummy client.
XTerm isn't really a perfect test candidate.
2016-04-20 00:11:04 -04:00
Emmanuel Lepage Vallee f5a27ab99b tests: Test maximizing and fullscreen 2016-04-20 00:11:04 -04:00
Emmanuel Lepage Vallee 299e155acc client: Extend request::tag instead of awful.tag.withcurrent
There was a regression when refactoring the API. It was no longer
possible to disable the automatic tag selection.

Due to recent changes, it was no longer possible to disable the
default tag selection handler. This commit extend the already
existing request::tag mechanism to let handlers select the tags.
2016-04-20 00:11:04 -04:00
Emmanuel Lepage Vallee fe8beaeaac placement: Fix incorect use of the border_width
The code and tests assumed the border was equaly applied around
the geometry while the {x,y} pair of the geometry include the
border.
2016-04-18 23:56:23 -04:00
Emmanuel Lepage Vallee 798729ff11 tests: Test placement composition 2016-04-18 23:55:52 -04:00
Emmanuel Lepage Vallee bb47aa5861 tests: Test all client layouts 2016-04-18 04:20:23 -04:00
Uli Schlachter 9efc5ca409 test-urgent.lua: Test "tag by name" rules
With this commit, the code added previously to awful.rules is now also tested.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-04-12 09:31:46 +02:00
Emmanuel Lepage Vallee f9add1c49a awful.tag: Rename nmaster to master_count 2016-04-11 23:54:28 -04:00
Emmanuel Lepage Vallee e8908e2c62 awful.tag: Rename mwfact to master_width_factor 2016-04-11 23:54:28 -04:00
Emmanuel Lepage Vallee 194720c821 tests: Test awesomerc keybindings 2016-04-11 23:54:28 -04:00
Emmanuel Lepage Vallee 5e7b1bf507 tests: Test awful.tag against regressions 2016-04-11 23:54:28 -04:00
Emmanuel Lepage Vallee c7fb00dd47 tests: Test awful.screen against regressions 2016-04-11 23:54:28 -04:00
Emmanuel Lepage Vallee f8fc0e27bf tests: Test awful.client against regressions
This make sure the property system did not introduce infinite
dependency loops.
2016-04-11 23:54:28 -04:00
Emmanuel Lepage Vallee dd52f1ce86 awful.tag: Move functions to awful.client and screen 2016-04-11 23:54:28 -04:00
Emmanuel Lepage Vallee 00d782f3d3 awful.screen: Deprecate functions, add methods 2016-04-11 23:54:28 -04:00
Daniel Hahler b6810576b0 tests/run.sh: display number of errors [ci skip] 2016-04-06 01:54:18 +02:00
Emmanuel Lepage Vallee 4819be4f4f build: Do not exit when gears.debug.print_warning are issued 2016-04-03 23:45:56 -04:00
Emmanuel Lepage Vallée c93ac5243f Merge pull request #785 from Elv13/geometry_overhaul_p1
Geometry overhaul part 1
2016-04-02 22:06:23 -04:00
Emmanuel Lepage Vallee 421c10b19a Change autogenerated images name
Github drop files when the leading character is ., ~, # or _

This commit add a prefix in front of the name to avoid leading
underscores.
2016-03-31 23:42:05 -04:00
Emmanuel Lepage Vallee ef5ec333cc tests: Test the remaining existing `awful.placement` methods.
Notes that some asserts are missing because the tests fail. This
will be fixed later. It is not a regression.
2016-03-31 05:04:24 -04:00
Emmanuel Lepage Vallee 4bc3f04ec1 tests: Test `awful.placement.maximize` aliases 2016-03-31 05:04:24 -04:00
Emmanuel Lepage Vallee 7ab83afbbc tests: Test `awful.placement.maximize` 2016-03-31 05:04:24 -04:00
Emmanuel Lepage Vallee 7b7d09edff tests: Test all `awful.placement.stretch` aliases 2016-03-31 05:04:24 -04:00
Emmanuel Lepage Vallee 7b7802f559 tests: Test `awful.placement.stretch` 2016-03-31 05:04:24 -04:00
Emmanuel Lepage Vallee dd0ea33015 tests: Test the new `awful.placement` aliases 2016-03-31 05:04:24 -04:00
Emmanuel Lepage Vallee db2f545411 tests: Test `awful.wibox.align` 2016-03-31 05:04:24 -04:00
Emmanuel Lepage Vallee 61d143fe98 tests: Test `awful.placement.closest_corner`
The output image look fine, some `assert()` could be added.
2016-03-31 05:04:24 -04:00
Emmanuel Lepage Vallee ea40fbd198 shims: Add property::workarea 2016-03-31 05:04:24 -04:00
Emmanuel Lepage Vallee c62116f505 tests: Add wibox.widget.background tests 2016-03-31 04:45:46 -04:00
Emmanuel Lepage Vallee 25c76322a0 tests: Add a template to take screenshots of widgets 2016-03-31 04:45:45 -04:00
Emmanuel Lepage Vallee 9f1565c798 tests: Add a template to test clients, screens, tags and mouse 2016-03-31 04:45:45 -04:00
Emmanuel Lepage Vallee c9f8690a60 tests: Add some shims to emulate CAPI without an X server 2016-03-31 04:45:45 -04:00
Emmanuel Lepage Vallee e7652a053d tests: Add a new testing framework 2016-03-31 04:45:45 -04:00
Emmanuel Lepage Vallee 18ef42abfc tests: Update the miss handler test 2016-03-30 23:25:44 -04:00
Emmanuel Lepage Vallée e8c7e573cb Merge pull request #778 from Elv13/dummy2
Call collectgarbage() more often

This may or may not fix a random test failure on Travis with LuaJIT (5.1).
2016-03-27 17:05:02 -04:00
Uli Schlachter 5ccdb933bf C-API: Return screen objects instead of indicies
This commit makes all C code that previously returned a screen index now return
a screen object, continuing the deprecation of screen indicies. Note that this
is an API break and will likely cause all kinds of problems for users.

The change also breaks some tests which are suitably fixed in this commit.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-03-26 18:09:24 +01:00
Emmanuel Lepage Vallee 182f21b48a tests: Call collectgarbage 3 time
Try to avoid a race condition when testing awful.layout
2016-03-26 05:14:59 -04:00
Uli Schlachter 02cdb5103b Run shape-example-generation under LuaCov
This is ugly, but at least it works. Hopefully...

Signed-off-by: Uli Schlachter <uli.schlachter@informatik.uni-oldenburg.de>
2016-03-17 10:22:42 +01:00
Emmanuel Lepage Vallee b6871833c4 cmake: Generate gears.shape SVG and example code 2016-03-16 18:02:41 -04:00
Emmanuel Lepage Vallee ac15475c58 gears.shape: Add unit tests / examples / SVG generator 2016-03-16 18:02:41 -04:00
Daniel Hahler 9f5e6c3827 Merge pull request #743 from psychon/keygrabber-errors
Keygrabber errors
2016-03-07 00:25:35 +01:00
Daniel Hahler cc5415b389 Merge pull request #736 from blueyed/fix-integration-tests-runner
tests/run.sh: avoid warnings by setting up fg/bg/colors in xrdb
2016-03-06 15:13:16 +01:00
Uli Schlachter 93e50b2e23 Merge branch 'lua-index-handlers' of https://github.com/psychon/awesome 2016-03-06 14:19:00 +01:00
Uli Schlachter e18bece3df Make tests more reliable on "early errors"
When e.g. test-leaks.lua fails, it will cause a Lua error before starting the
test runner. This means that the test will just hang, because nothing causes
awesome to quit.

Handle this by starting a timer when the test runner is loaded and quitting
awesome in there if no test run was started yet. This only works if all tests
load the runner before doing anything that could fail, so the require("_runner")
is moved to the beginning in every test.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-03-06 10:20:45 +01:00
Daniel Hahler 3730086bcc tests/run.sh: avoid warnings by setting up fg/bg/colors in xrdb 2016-03-04 01:41:43 +01:00
actionless 504c105cba feat(awful: widgets): add 'watch' widget 2016-02-28 12:11:57 +01:00
Daniel Hahler bbab321314 Merge pull request #702 from psychon/fix-test-urgent
Fix test-urgent.lua
2016-02-16 01:03:37 +01:00
Daniel Hahler 9257c96b7c Merge pull request #690 from psychon/make-test-runner-more-robust
Make the functional test runner more robust
2016-02-16 01:03:06 +01:00
Uli Schlachter e5d3b2a25c Fix test-urgent.lua
Step 1 starts a client and uses awful.rules to move it to a not-selected tag.
Because this rule still has focus=true, this calls awful.ewmh.activate() via the
request::activate signal. This function makes the client urgent because it is on
a not-selected tag.

Step 3 does the same thing, but also uses switchtotag=true. Now
awful.ewmh.activate() doesn't make the client urgent because it successfully
focused this client. However, the test was wrongly assuming that the client
became urgent (copy&paste error? I don't know).

The fix is of course not to require the client to become urgent.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-02-15 22:09:10 +01:00
Uli Schlachter 99ef5822b0 Merge branch 'more-luacheck-fixes' of https://github.com/psychon/awesome 2016-02-14 14:33:06 +01:00
Uli Schlachter f87da55dfc Make the functional test runner more robust
Currently, an error in the default config in the right place isn't noticed. Fix
this by doing two things:

- Also grep for "error" (this catches runtime errors with a stack trace)
- Make _runner print a "success" message at the end and also grep for that

Fixes: https://github.com/awesomeWM/awesome/issues/689
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-02-13 07:36:59 +01:00
Uli Schlachter 432908dd26 Fix test-leak-client.lua under LuaCov
Both the test runner and the wibox use gears.timer.delayed_call(). The test
runner uses this to call steps and the wibox uses it to trigger redraws. When
running under LuaCov, the Lua code becomes slow enough that the wibox didn't
redraw yet when the leak check is run. This causes the check to fail, because
the client is still referenced by the tasklist and thus cannot be garbage
collected.

Fix this by waiting one more iteration before running the leak check.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-02-12 09:26:29 +01:00
Uli Schlachter bf3b9b5f42 tests: Fix luacheck warnings
This leaves one warning in tests/test-urgent.lua which points out an actual
bug/problem.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-02-12 09:12:41 +01:00
Daniel Hahler 33b2277df9 Merge pull request #649 from psychon/make-benchmark-less-exact
Make benchmarks less exact
2016-02-11 21:26:32 +01:00
Uli Schlachter e2d75dbcfd Add a functional testing for leaks with clients
This opens xterm, closes it and makes sure that the client object representing
xterm is GC'able at the end. The test will fail currently.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-02-04 18:24:53 +01:00
Uli Schlachter 6d6cf20790 Make benchmarks less exact
The benchmarks in tests/test-benchmark.lua have two modes. When CI=1 is set in
the environment, only a "quick" and less exact test is done. Otherwise, a slower
and more exact measurements is taken. This was added so that we do not waste CPU
time on travis.

However, most of the time the user running "make check" doesn't want exact
measurements either. So instead of only being quick when CI=1 is set, this
commit changes the logic to always being quick unless BENCHMARK_EXACT=1 is set.
Additionally, a message is printed next to the benchmark results so that the
user is reminded to set this var if the measurements should actually mean
something.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-01-23 16:08:33 +01:00
Uli Schlachter 781f8d30bb test/run.sh: Handle updated beauitful.init call in default config
While setting up an environment to run the integration tests in, the run.sh
script uses sed to generate versions of several files that refer to the
not-installed version of files. One of these needs to replace the call to
beautiful.init().

Before commit 20c9723c5b, the corresponding line was:

  beautiful.init("@AWESOME_THEMES_PATH@/default/theme.lua")

Now this wants to find and replace the following:

  beautiful.init(awful.util.get_themes_dir() .. "default/theme.lua")

To handle both versions, this commit adds some wildcards to the sed-expression
so that any line containing a call to beautiful.init is found and replaced.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-01-17 16:16:39 +01:00
Daniel Hahler 833b10eb9b Merge pull request #593 from psychon/editorconfig
Vim modelines and editorconfig
2015-12-12 19:13:53 +01:00
Uli Schlachter 63653bed76 Add the right vim modeline to all lua files
Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-12-12 17:42:33 +01:00
Uli Schlachter 5db6c04c42 Add vim modelines to all shell scripts
Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-12-12 17:36:35 +01:00
Uli Schlachter 469433e10a awful.spawn.with_line_callback: Use an arguments table
Having many arguments can easily get confusing and hard to understand. This
commit uses a table instead so that we have names that identify what each
callback does.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-12-12 17:27:33 +01:00
Uli Schlachter 2f5ade49c2 test-spawn.lua: Also test exit statuses
Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-11-29 11:57:35 +01:00
Daniel Hahler 339e2b0ecc Add failing test: c.startup_id should be nil when snid is disabled
When using `spawn` without startup notification support, the
`startup_id` property on the client should be nil.

This adds rxvt-unicode to the Travis build, because it supports startup
notifications, but xterm does not.  We should replace xterm with it in
the existing tests then later.
2015-11-05 23:03:59 +01:00
Uli Schlachter e3199edca1 Merge branch 'snid_callback' of https://github.com/Elv13/awesome-1 2015-10-10 19:52:41 +02:00
Daniel Hahler fa1dea6df4 Improve test runner to be usable for git-bisect 2015-10-03 14:54:17 +02:00
Emmanuel Lepage Vallee 4095eb91a8 Move util.spawn to a new module, add ability to spawn with properties
* This commit add a new module to avoid a (4 level) loop dependency
* It is now possible to call awful.spawn() with a table of properties
* awful.rules is used to execute the rules.

* Everything is public to allow alternative workflow modules such as
    Tyrannical to use their own callback implementation.
2015-09-29 18:05:56 -04:00
Uli Schlachter a5a106f97f Make it possible for Lua to emulate arbitrary properties
This makes it possible to add something similar to a __index / __newindex
metamethod to all our C objects. Based on this, Lua can then easily implement
arbitrary properties on our capi objects.
2015-09-27 17:43:41 +02:00
Uli Schlachter 3e9fdea650 test-leaks: Fix with Lua 5.1
I have no idea why this needs collectgarbage() to be called twice.

On the other hand, I can explain the change in tooltip.lua. Lua 5.2 introduced
"ephermeron tables". This means that in the following sitation, lua 5.2 can
collect the entry from the table, while 5.1 keeps the entry alive, because the
table has a strong reference to the value and that in turn has a strong
reference to the key:

  t = setmetatable({}, { __mode = "k"})
  do
    local k = {}
    t[k] = function() print(k) end
  end
  collectgarbage("collect")
  print(next(t, nil))

To handle this incompatibility, this commit just removes the whole indirection
through the module-level variable "data".

Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-09-27 16:04:20 +02:00
Uli Schlachter 94271e8c91 test-leaks.lua: Also test tooltips
Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-09-27 15:31:42 +02:00
Uli Schlachter f7799cbb7f Refactior test-leaks a bit
I think it looks nicer with this helper function.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-09-27 15:30:04 +02:00
Uli Schlachter cd1ad8b753 Don't measure time for creating wiboxes
Apparently some of the last commits speeds up create_wibox() a lot. This
highlights that this is a bad test: After creating thousands of wiboxes, awesome
needed 15 seconds to draw all of them and in the end some dbus timeout aborted
the test run.

However, it's irrelevant how quickly we can create wibox. The interesting number
is how quickly we can display a new wibox. Thus, this commits changes the code
so that it also measures the time that is needed to update the wibox. This way,
we don't accumulate a huge number of pending repaints and everything's fine.

Some results (but there is nothing to compare this with):
   create&draw wibox: 0.0373947  sec/iter ( 28 iters, 1.59 sec for benchmark)
    update textclock: 0.00198174 sec/iter (515 iters, 1.937 sec for benchmark)
  relayout textclock: 0.000614439 sec/iter (1710 iters, 1.051 sec for benchmark)
    redraw textclock: 0.00116882 sec/iter (865 iters, 2.962 sec for benchmark)
          tag switch: 0.000705579 sec/iter (1498 iters, 3.703 sec for benchmark)

Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-09-27 15:07:22 +02:00
Uli Schlachter dc2147208f tests: Return more widgets from create_wibox()
All of these are checked for being GC'able in test-leaks.lua.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-09-27 14:44:19 +02:00
Uli Schlachter bd47edb4ef leak test: Make the layoutbox test pass
This commit does two things: It gets rid of the reference to the layoutbox that
the default config created and it changes the widget dependency cache to not
keep widgets alive unnecessarily.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-09-27 14:42:39 +02:00
Uli Schlachter abc5a552a4 Make tasklist garbage-collectable
Again, instead of directly connecting to various signals for updating a
tasklist, this commit changes the code so that there is just a single, global
connections and based on this a weak table with all tasklist instances is used
do the updates.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-09-27 14:20:24 +02:00
Uli Schlachter 40db0b7337 Make taglists garbage-collectable
Similar to what the previous commit does for layoutboxes, this changes the code
for the taglist so that there is only a single, global connection to the various
signals and these update all taglists via weak tables.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-09-27 14:03:59 +02:00
Uli Schlachter 901c8f680a tests: Add some memory-leak tests
This creates some random collection of widgets and tests if they can be garbage
collected again.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-09-27 12:36:21 +02:00
Uli Schlachter 225022be84 tests: Move create_wibox() into a helper script
Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-09-27 11:58:35 +02:00
actionless 3fea174c5e test(benchmark): add for tag switch
Closes https://github.com/awesomeWM/awesome/pull/465.
2015-09-23 21:02:29 +02:00
Uli Schlachter 8abce1ff68 Add a benchmark to the test suite
This (ab)uses the integration tests to run a benchmark. This currently only
measures wibox drawing performance. To avoid wasting CPU-cycles, this does only
a quick run under travis while on "normal" runs the function under test is
executed in a loop to improve the precision of the measurement.

This benchmarks hopefully allow to optimize things in a clear fashion instead of
things like "it feels faster to me".

Results when run against the previous commit:

== Running test-benchmark.lua ==
        create wibox: 0.0788958  sec/iter ( 13 iters, 1.103 sec for benchmark)
    update textclock: 0.019493   sec/iter ( 56 iters, 2.507 sec for benchmark)
  relayout textclock: 0.0160725  sec/iter ( 63 iters, 1.029 sec for benchmark)
    redraw textclock: 0.0015601  sec/iter (647 iters, 1.875 sec for benchmark)
W: awesome: a_glib_poll:291: Last main loop iteration took 6.593912 seconds! Increasing limit for this warning to that value.

Results right before the new widget layouts were merged (commit 52154d0f15):

== Running test-benchmark.lua ==
        create wibox: 0.0782874  sec/iter ( 13 iters, 1.095 sec for benchmark)
    update textclock: 0.00736755 sec/iter (136 iters, 1.346 sec for benchmark)
W: awesome: luaA_dofunction:77: error while running function
[...]
error: /home/psychon/projects/awesome/build/lib/gears/object.lua:30: Trying to emit non-existent signal 'widget::layout_changed'

Closes https://github.com/awesomeWM/awesome/pull/451.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-09-19 12:02:44 +02:00
Daniel Hahler 7c8e97ca31 Merge pull request #406 from psychon/spawn_with_pipes2
Spawn with pipes

Closes https://github.com/awesomeWM/awesome/pull/406.
2015-09-02 22:47:09 +02:00
Uli Schlachter 3c4a80ca7e Add a test for awful.util.spawn_with_line_callback
Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-09-02 22:27:47 +02:00
Uli Schlachter 1beda989e5 tests/_runner.lua: Load all dependencies
This tried to use awful, but didn't load awful itself. Kids, this is why you
should make your variables local!

Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-09-02 21:51:20 +02:00
Uli Schlachter 4bfddbb3f8 tests/run.sh: Start Xvfb with -noreset
When using Xephyr, this already starts the server with -noreset, but for Xvfb we
also need this flag. Without this flag, the DPI value that is set via xrdb gets
lost at server reset.

This wasn't a problem before commit 6d4837a53a. That commit moved the launch
of the dbus session after the setting of the DPI. So previously, waiting for
server startup was half broken (the dbus session already tried to connect to the
server to check for when it shuts down), but due to this no server reset
occurred and thus the DPI was correctly applied. After this commit, the server
immediately resets after xrdb is done setting the DPI and the value set is lost.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-08-13 12:59:57 +02:00
Uli Schlachter cbba615748 tests/run.sh: Show full error messages
If an error occurs during startup, tail might not show the full error message.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-08-12 09:49:30 +02:00
Uli Schlachter 0ee24317c7 tests/run.sh: Temporarily disable -x in wait_until_success
Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-08-12 09:49:30 +02:00
Uli Schlachter 17e8827212 tests/run.sh: Factor out a helper function
This factors out a function wait_until_success that runs some command until it
succeeds (with a timeout) and uses this function in the two places where this
was already done before.

Note that this removes the "kill -0" trick for early exit again and instead will
use the timeout in case awesome dies during startup.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-08-12 09:49:28 +02:00
Uli Schlachter 0688e8899e tests/run.sh: Allow execution without installing
When this script is not run under Travis, it will prepare a temporary config
file and a theme file that point to the files that were not yet installed.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-08-12 09:49:08 +02:00
Uli Schlachter d8a1b563e7 tests/run.sh: Use a temporary directory
Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-08-12 09:48:28 +02:00
Uli Schlachter 41d81a4501 tests/run.sh: Move definition of AWESOME_CLIENT up
Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-08-12 09:48:27 +02:00
Uli Schlachter 6d4837a53a tests/run.sh: Start dbus after X server startup
The code does some dances with xrdb to ensure that the server finished starting
up. However, before this it already tries to access the server via dbus-launch.

Since nothing uses dbus in this part of the code, we can just move this down.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-08-12 09:48:27 +02:00
Daniel Hahler 85facc0391 tests/run: handle 'expr 1 - 1' (exitcode 1); check for running awesome 2015-08-11 19:08:35 +02:00
Daniel Hahler 2b224dd954 tests: use root.fake_input instead of xdotool
Ref: https://github.com/awesomeWM/awesome/issues/328.
Closes: https://github.com/awesomeWM/awesome/pull/391.
2015-08-10 23:04:19 +02:00
Daniel Hahler 22624284a2 tests/_runner.lua: use xpcall+traceback with step error handler 2015-07-22 13:52:47 +02:00
Daniel Hahler f070c4e060 tests: wait until DISPLAY is ready; xrdb might complain/abort 2015-07-21 13:09:07 +02:00
Daniel Hahler 2c3c6b5ca8 tests: cleanup, remove sleep/print 2015-07-18 15:08:27 +02:00
Uli Schlachter f4ed41b39a tests: Check if test file is readable before running it
I tried calling this script with "tests/foo.lua" as an argument, but it actually
expects "foo.lua" since it changes into the appropriate directory itself.
Because this file does not exist, "cat $f | awesome-client" failed and thus this
whole script just hung (the test runner was never actually started).

Fix this by testing for the test-file to exist before trying to run it.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-07-18 12:35:57 +02:00
Uli Schlachter f2a079204d tests: Make dbus session automatically exit when X server dies
Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-07-18 10:45:03 +02:00
Uli Schlachter 534084698b tests/run.sh: Use $! instead of pgrep
And yes, $! is specified by POSIX and thus should be portable.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-07-18 10:44:16 +02:00
Daniel Hahler 430fe7f710 tests/run.sh: fix 'waiting for awesome' via pgrep 2015-07-16 17:05:46 +02:00
Daniel Hahler 1e9da0947e Improve tests/run.sh
- `set -x` only for Travis/CI=true.
 - improve waiting for PID and awesome-client success.
 - kill childs via trap always.

Closes https://github.com/awesomeWM/awesome/pull/316.
2015-07-15 01:30:06 +02:00
Daniel Hahler 611438a892 Add functional tests via Xephyr/Xvfb/xdotool
Closes https://github.com/awesomeWM/awesome/pull/133
2015-07-10 15:19:51 +02:00