From 7a2f9f4633412b57e3e60e710a1a0e1ef33ca122 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Ho=C5=99e=C5=88ovsk=C3=BD?= Date: Sat, 29 Jan 2022 13:10:54 +0100 Subject: [PATCH] Extend checkLicense.py to also check tests --- .../IntrospectiveTests/Clara.tests.cpp | 1 + tools/scripts/checkLicense.py | 57 ++++++++++++------- 2 files changed, 36 insertions(+), 22 deletions(-) diff --git a/tests/SelfTest/IntrospectiveTests/Clara.tests.cpp b/tests/SelfTest/IntrospectiveTests/Clara.tests.cpp index 054cda551f..f6110a7b82 100644 --- a/tests/SelfTest/IntrospectiveTests/Clara.tests.cpp +++ b/tests/SelfTest/IntrospectiveTests/Clara.tests.cpp @@ -1,3 +1,4 @@ + // Copyright Catch2 Authors // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at diff --git a/tools/scripts/checkLicense.py b/tools/scripts/checkLicense.py index 3c2a14f403..634b0bfa95 100755 --- a/tools/scripts/checkLicense.py +++ b/tools/scripts/checkLicense.py @@ -1,32 +1,45 @@ #!/usr/bin/env python3 -import os -import sys - -def get_license(): - with open("src/catch2/catch_all.hpp", "r") as f: - license = f.readlines()[0:7] +import sys +import glob - return license +correct_licence = """\ +// Copyright Catch2 Authors +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// https://www.boost.org/LICENSE_1_0.txt) -def check_license(license): - failed = 0 - base_dir = "src/catch2/" +// SPDX-License-Identifier: BSL-1.0 +""" - # The _ represents the list of directories in base_dir - for root, _, files in os.walk(base_dir): - for file in files: - with open(root + "/" + file, "r") as f: - file_license = f.readlines()[0:7] +def check_licence_in_file(filename: str) -> bool: + with open(filename, 'r') as f: + file_preamble = ''.join(f.readlines()[:7]) - if file_license != license: - print("File %s does not have license" % file) - failed = 1 + if correct_licence != file_preamble: + print('File {} does not have proper licence'.format(filename)) + return False + return True +def check_licences_in_path(path: str) -> int: + failed = 0 + files_to_check = glob.glob(path + '/**/*.cpp', recursive=True) \ + + glob.glob(path + '/**/*.hpp', recursive=True) + for file in files_to_check: + if not check_licence_in_file(file): + failed += 1 return failed - -license = get_license() -status = check_license(license) -sys.exit(status) +def check_licences(): + failed = 0 + roots = ['src/catch2', 'tests'] + for root in roots: + failed += check_licences_in_path(root) + + if failed: + print('{} files are missing licence'.format(failed)) + sys.exit(1) + +if __name__ == "__main__": + check_licences()