2020-03-14 18:51:22 +00:00
|
|
|
#!/usr/bin/env python3
|
|
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
import glob
|
|
|
|
import os
|
|
|
|
|
|
|
|
expected_directories = [
|
|
|
|
"console",
|
|
|
|
"cross",
|
2020-04-04 10:27:43 +00:00
|
|
|
"device/community",
|
|
|
|
"device/main",
|
2020-03-14 18:51:22 +00:00
|
|
|
"device/testing",
|
|
|
|
"firmware",
|
|
|
|
"hybris",
|
|
|
|
"kde",
|
|
|
|
"maemo",
|
|
|
|
"main",
|
|
|
|
"modem",
|
|
|
|
"temp",
|
|
|
|
]
|
|
|
|
|
2020-03-21 21:31:57 +00:00
|
|
|
|
2020-03-14 18:51:22 +00:00
|
|
|
# pmbootstrap allows placing APKBUILDs in arbitrarily nested directories.
|
|
|
|
# This test makes sure all of them are in one of the expected locations.
|
|
|
|
def test_directories():
|
|
|
|
apkbuilds = set(glob.iglob("**/APKBUILD", recursive=True))
|
|
|
|
expected = set(f for d in expected_directories for f in glob.iglob(d + "/*/APKBUILD"))
|
|
|
|
assert apkbuilds == expected, "Found APKBUILD in unexpected directory. " \
|
|
|
|
"Consider adding it to test_directory_structure.py!"
|
|
|
|
|
2020-03-21 21:31:57 +00:00
|
|
|
|
2020-03-14 18:51:22 +00:00
|
|
|
# Make sure files are either:
|
|
|
|
# - in root directory (README.md)
|
|
|
|
# - hidden (.gitlab-ci/, device/.shared-patches/)
|
|
|
|
# - or belong to a package (below a directory with APKBUILD)
|
|
|
|
def test_files_belong_to_package():
|
|
|
|
# Walk directories and set package_dir when we find an APKBUILD
|
|
|
|
# This allows matching files in subdirectories to the package directory.
|
|
|
|
package_dir = None
|
|
|
|
for dirpath, dirs, files in os.walk("."):
|
|
|
|
# Skip "hidden" directories
|
|
|
|
dirs[:] = [d for d in dirs if not d.startswith(".")]
|
|
|
|
# Ignore files in root directory
|
|
|
|
if dirpath == '.':
|
|
|
|
continue
|
|
|
|
|
|
|
|
# Switched to another directory?
|
|
|
|
if package_dir and not dirpath.startswith(package_dir + os.sep):
|
|
|
|
package_dir = None
|
|
|
|
|
|
|
|
if 'APKBUILD' in files:
|
|
|
|
assert not package_dir, f"Nested packages: {package_dir} and {dirpath} " \
|
|
|
|
"both contain an APKBUILD"
|
|
|
|
package_dir = dirpath
|
|
|
|
|
|
|
|
assert not files or package_dir, "Found files that do not belong to any package: " \
|
2020-03-21 21:31:57 +00:00
|
|
|
f"{dirpath}/{files}"
|