Extending/debugging scripts in the gitlab CI directly is a pain, the
turnaround cycle is terrible. Let's move this into a shellscript that we can
just call directly.
Bonus side-effect: if we wanted to extend the script: set somewhere, this is
now much easier to override.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This script was written by Emmanuele Bassi, copied from
https://gist.github.com/ebassi/e5296ec77ae9e0d3a33fd483b5613b09/
It converts meson test results into a junit file which we can then use to
display in the merge request GUI.
Note that as litest writes out junit files as well, some tests are reported
twice. Specifically: where litest fails the failure will be reported once
through litest itself and once by meson test. Oh well.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
libcheck has the ability to write out XML files for test results, but
converting those into junit isn't ideal, for a number of reasons:
- junit xml is different to libcheck's xml, so not all data is available or
useful. Especially with our litest wrappers around it.
- litest forking off tests means we have to wrap around everything anyway to
avoid multiple forks writing to the same test file.
This is the minimal implementation since it's only user is likely the CI which
we control fairly tightly. So there are a few corners we can skip:
- no filename validation is performed by litest
- we write out a lot of junit xml files (one per litest fork). Rather than
collating those we just rely on the CI to find the files.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Let's stop merge requests from users that don't set their git author name and
email address. Aside from it looking stange in the history it'll also make it
virtually impossible to ever find that user again should something important
arise in the future - especially if we switch off gitlab.
The rest is basic style, short subject lines, Signed-off-by lines and correct
formatting.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
[bentiss: use /usr/bin/env python3 as requested by the CI]
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
We want to retry if we have a system/timeout/stuck failure. And our jobs are
all interruptible, we want to cancel them when the branch has new commits.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
If we want to record multiple events, let's just specify multiple event nodes.
No need for a specific extra argument here.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
When multiple devices are recorded, the event times are offset from a global
baseline. Each device thus has a different offset for the first event. To
replay correctly, we must figure out the offset of the first event (across all
devices) and use that for all of them.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Nothing sophisticated but easier to debug certain tablet oddities.
It shows a bar for each axis on the tablet (and the evdev axis) and prints
that relative to the axis range. This makes it easy to check if we do hit the
full range (especially for distance/pressure/tilt) and whether that matches
with what the device gives us.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Start counting the timestamps from the first time we get something off the
actual fd. This makes it easier to match up timestamps with the output from
libinput record.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
draw.io is playing up with old files and sending me into a redirect loop.
Duplicating files works but that changes the links. So to avoid dead links,
let's just remove the direct link and let anyone who cares enough about it ask
me.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
A unique substring of a test/group/device should be enough to filter, even
without surrounding it with asterisks.
This allows for things like --filter-device=t440 as opposed to the previous
--filter-device="*t440*".
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
In the current implementation, movements > threshold and timeouts usually move
to HOLD state and continue from there. Where a finger is lifted, we go back
up the diagram into the previous finger count's HOLD state.
The side-effect of this is that a tap of a finger can be counted as tap even
after a movement:
- two fingers down, move to scroll, hold down
- third finger down, third finger up
This sequence triggers an erroneous three-finger tap. Once the motion
threshold is hit by any touch, no finger must trigger 2/3 finger tap events
while any touch is down.
The false tap is only triggered where the new finger can execute a tap without
any other finger changing any property. This can be triggered on the
reporter's Dell Precision 5520 but on most other touchpads, a new finger down
will trigger slight movement, pressure or touch size updates and thus the bug
cannot be triggered.
Fixes#382
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
The motion event here was intended to offset the light pressure from the
extended touch down. This also causes motion past the tap threshold and won't
work with a future patch.
Make the touch "real" by simply plaing a normal movement in the current
position - the kernel will filter and we'll just update the pressure.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Multiline commands are currently collapsed with no way of uncollapsing them
(https://gitlab.com/gitlab-org/gitlab-runner/issues/3392), so we never see the
skopeo invocations. Work around this by touching a file when scheduled and
using that to break up the conditions.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
The qemu jobs themselves already have this tag so let's add it to the
container prep itself too. Unfortunately the CI doesn't have a conditional
allow-failure (ideally we want retry's stuck_or_timeout_failure condition).
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
As of d20bbfa5cb we handle the direct tool switch correctly so there's
no more warning. Which means testing for the warning is pointless.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Both of these are normalized so let's draw a bar that shows the values
accordingly. This makes it a lot easier to check whether pressure values go to
the maximum, etc.
A little extra square is shown whenever the tip is logically down.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
The tests are split by topic but have varying runtime. Specifically, the
longest test (touchpad) takes ~170s whereas many of the others can take less
than a second. Splitting them all up into separate VMs costs too much in
startup time so here's the middle ground of some custom grouping to make the
tests roughly run the same time.
This list will need to be manually maintained but given that groups are rarely
added anyway this shouldn't be too much of a maintenance burden. And bonus:
since the kvm tests often fail due to timing issues, re-running one is
significantly faster now.
This shaves about 8min of the CI run
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
copy/paste error that makes coverity unhappy. This is the code to correctly
release all touches and the buttons have already been processed above - no
need to reassign here.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Coverity complains that we call libinput_event_destroy() twice on the variable
(once in and once just outside the condition). This is technically correct but
never true because we always break the loop early for the touch up/frame events.
Let's just reset the pointers so coverity is happy.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
x/y assigned but never used. Dropping those few lines gets rid of the warning
and checks the coordinates correctly now too.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>