2021-02-08 17:53:21 +00:00
|
|
|
#!/usr/bin/env python3
|
|
|
|
# Copyright 2021 Oliver Smith
|
|
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
|
|
|
|
import glob
|
|
|
|
import pytest
|
|
|
|
import sys
|
|
|
|
import os
|
|
|
|
|
|
|
|
import add_pmbootstrap_to_import_path
|
|
|
|
import pmb.parse
|
|
|
|
|
|
|
|
|
|
|
|
def deviceinfo_obsolete(info):
|
|
|
|
"""
|
|
|
|
Test for obsolete options used in the deviceinfo file. They must still be
|
|
|
|
defined in pmbootstrap's config/__init__.py.
|
|
|
|
"""
|
|
|
|
obsolete_options = ["weston_pixman_type"]
|
|
|
|
for option in obsolete_options:
|
|
|
|
if info[option]:
|
|
|
|
raise RuntimeError("option '" + option + "' is obsolete, please"
|
|
|
|
" remove it (reasons for removal are at"
|
|
|
|
" <https://postmarketos.org/deviceinfo>)")
|
|
|
|
|
|
|
|
|
|
|
|
def test_deviceinfo(args):
|
|
|
|
"""
|
|
|
|
Parse all deviceinfo files successfully and run checks on the parsed data.
|
|
|
|
"""
|
|
|
|
# Iterate over all devices
|
|
|
|
last_exception = None
|
|
|
|
count = 0
|
|
|
|
for folder in glob.glob(args.aports + "/device/*/device-*"):
|
|
|
|
device = folder[len(args.aports):].split("-", 1)[1]
|
|
|
|
|
2021-09-18 17:00:44 +00:00
|
|
|
f = open(folder[len(args.aports):][1:] + "/deviceinfo")
|
|
|
|
lines = f.read().split("\n")
|
|
|
|
f.close()
|
|
|
|
|
2021-02-08 17:53:21 +00:00
|
|
|
try:
|
2021-09-18 17:00:44 +00:00
|
|
|
# variable can not be empty
|
|
|
|
for line in lines:
|
|
|
|
if '=""' in line:
|
|
|
|
raise RuntimeError("Please remove the empty variable: " + line)
|
|
|
|
|
2021-02-08 17:53:21 +00:00
|
|
|
# Successful deviceinfo parsing / obsolete options
|
|
|
|
info = pmb.parse.deviceinfo(args, device)
|
|
|
|
deviceinfo_obsolete(info)
|
|
|
|
|
|
|
|
# deviceinfo_name must start with manufacturer
|
|
|
|
name = info["name"]
|
|
|
|
manufacturer = info["manufacturer"]
|
|
|
|
if not name.startswith(manufacturer) and \
|
|
|
|
not name.startswith("Google"):
|
|
|
|
raise RuntimeError("Please add the manufacturer in front of"
|
|
|
|
" the deviceinfo_name, e.g.: '" +
|
|
|
|
manufacturer + " " + name + "'")
|
|
|
|
|
|
|
|
# Don't abort on first error
|
|
|
|
except Exception as e:
|
|
|
|
last_exception = e
|
|
|
|
count += 1
|
|
|
|
print(device + ": " + str(e))
|
|
|
|
|
|
|
|
# Raise the last exception
|
|
|
|
if last_exception:
|
|
|
|
print("deviceinfo error count: " + str(count))
|
|
|
|
raise last_exception
|