284f6f1ef8
Add a new test that checks that the unsupported list is not out of date. As the wiki can be edited at any time, add this as a further optional check into the CI pipeline.
54 lines
1.4 KiB
Python
Executable file
54 lines
1.4 KiB
Python
Executable file
#!/usr/bin/env python3
|
|
|
|
import os
|
|
import sys
|
|
import urllib
|
|
import urllib.request
|
|
import re
|
|
|
|
error = False
|
|
|
|
try:
|
|
response = urllib.request.urlopen('https://gitlab.freedesktop.org/libfprint/wiki/-/wikis/Unsupported-Devices.md')
|
|
except:
|
|
print("Could not download current list of unsupported devices, skipping test.")
|
|
sys.exit(77)
|
|
data = response.read().decode('utf-8')
|
|
|
|
devices = []
|
|
devices_re = re.compile(r'^.*([0-9a-fA-F]{4}):([0-9a-fA-F]{4}).*$', re.MULTILINE)
|
|
for m in devices_re.finditer(data):
|
|
vid = m.group(1)
|
|
pid = m.group(2)
|
|
devices.append((vid, pid))
|
|
|
|
generator = open(os.path.join(os.path.dirname(__file__), '..', 'libfprint', 'fprint-list-udev-hwdb.c')).read()
|
|
|
|
id_re = re.compile(' { .vid = 0x([a-fA-F0-9]*), .pid = 0x([a-fA-F0-9]*) }')
|
|
# Check everything is the same
|
|
started = False
|
|
for l in generator.split('\n'):
|
|
m = id_re.match(l)
|
|
if m is None:
|
|
# Stop on the first line that does not match anymore
|
|
if started:
|
|
break
|
|
continue
|
|
else:
|
|
started = True
|
|
|
|
vid_pid = (m.group(1), m.group(2))
|
|
try:
|
|
devices.remove(vid_pid)
|
|
except ValueError:
|
|
print("Generator has entry that is not on wiki: {}:{}".format(*vid_pid))
|
|
error = True
|
|
|
|
for vid_pid in devices:
|
|
print("New entry from wiki is missing: {}:{}".format(*vid_pid))
|
|
error = True
|
|
|
|
if error:
|
|
sys.exit(1)
|
|
else:
|
|
sys.exit(0)
|