mirror of
				https://gitlab.gnome.org/GNOME/glib.git
				synced 2025-11-03 17:48:56 +01:00 
			
		
		
		
	This will make it easier and more obvious for developers to run them locally: I'm sure I'm not the only developer who had assumed that `.gitlab-ci/` is private to the CI environment and inappropriate (or perhaps even destructive) to run on a developer/user system. The lint checks are automatically skipped (with TAP SKIP syntax) if we are not in a git checkout, or if git or the lint tool is missing. They can also be disabled explicitly with `meson test --no-suite=lint`, which downstream distributions will probably want to do. By default, most lint checks are reported as an "expected failure" (with TAP TODO syntax) rather than a hard failure, because they do not indicate a functional problem with GLib and there is a tendency for lint tools to introduce additional checks or become more strict over time. Developers can override this by configuring with `-Dwerror=true` (which also makes compiler warnings into fatal errors), or by running the test suite like `LINT_WARNINGS_ARE_ERRORS=1 meson test --suite=lint`. One exception to this is tests/check-missing-install-tag.py, which is checking a functionally significant feature of our build system, and seems like it is unlikely to have false positives: if that one fails, it is reported as a hard failure. run-style-check-diff.sh and run-check-todos.sh are not currently given this treatment, because they require search-common-ancestor.sh, which uses Gitlab-CI-specific information to find out which commits are in-scope for checking. Signed-off-by: Simon McVittie <smcv@collabora.com>
		
			
				
	
	
		
			52 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/env python3
 | 
						|
#
 | 
						|
# Copyright © 2022-2024 Collabora, Ltd.
 | 
						|
#
 | 
						|
# SPDX-License-Identifier: LGPL-2.1-or-later
 | 
						|
#
 | 
						|
# Original author: Xavier Claessens
 | 
						|
 | 
						|
"""
 | 
						|
This script checks Meson configuration logs to verify no installed file is
 | 
						|
missing installation tag.
 | 
						|
"""
 | 
						|
 | 
						|
import argparse
 | 
						|
import json
 | 
						|
from pathlib import Path
 | 
						|
 | 
						|
 | 
						|
def main():
 | 
						|
    parser = argparse.ArgumentParser()
 | 
						|
    parser.add_argument("builddir", type=Path, nargs="?", default=".")
 | 
						|
    args = parser.parse_args()
 | 
						|
 | 
						|
    print("# TAP version 13")
 | 
						|
 | 
						|
    count = 0
 | 
						|
    bad = 0
 | 
						|
    path = args.builddir / "meson-info" / "intro-install_plan.json"
 | 
						|
    with path.open(encoding="utf-8") as f:
 | 
						|
        install_plan = json.load(f)
 | 
						|
        for target in install_plan.values():
 | 
						|
            for info in target.values():
 | 
						|
                count += 1
 | 
						|
 | 
						|
                if not info["tag"]:
 | 
						|
                    bad += 1
 | 
						|
                    dest = info["destination"]
 | 
						|
                    print(f"not ok {bad} - Missing install_tag for {dest}")
 | 
						|
 | 
						|
    if bad == 0:
 | 
						|
        print(f"ok 1 - All {count} installed files have install_tag")
 | 
						|
        print("1..1")
 | 
						|
        return 0
 | 
						|
    else:
 | 
						|
        print(f"# {bad}/{count} installed files do not have install_tag")
 | 
						|
        print(f"1..{bad}")
 | 
						|
        return 1
 | 
						|
 | 
						|
 | 
						|
if __name__ == "__main__":
 | 
						|
    exit(main())
 |