aboutsummaryrefslogtreecommitdiffstats
path: root/tools/scripts/checkLicense.py
diff options
context:
space:
mode:
authorLexi Winter <lexi@le-fay.org>2025-06-29 19:25:29 +0100
committerLexi Winter <lexi@le-fay.org>2025-06-29 19:25:29 +0100
commitbc524d70253a4ab2fe40c3ca3e5666e267c0a4d1 (patch)
tree1e629e7b46b1d9972a973bc93fd100bcebd395be /tools/scripts/checkLicense.py
downloadnihil-548ea226e1944e077d3ff305df43ef6b366b03f4.tar.gz
nihil-548ea226e1944e077d3ff305df43ef6b366b03f4.tar.bz2
Diffstat (limited to 'tools/scripts/checkLicense.py')
-rwxr-xr-xtools/scripts/checkLicense.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/tools/scripts/checkLicense.py b/tools/scripts/checkLicense.py
new file mode 100755
index 0000000..7078d3e
--- /dev/null
+++ b/tools/scripts/checkLicense.py
@@ -0,0 +1,46 @@
+#!/usr/bin/env python3
+
+import sys
+import glob
+
+correct_licence = """\
+
+// Copyright Catch2 Authors
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE.txt or copy at
+// https://www.boost.org/LICENSE_1_0.txt)
+
+// SPDX-License-Identifier: BSL-1.0
+"""
+
+def check_licence_in_file(filename: str) -> bool:
+ with open(filename, 'r') as f:
+ file_preamble = ''.join(f.readlines()[:7])
+
+ 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
+
+def check_licences():
+ failed = 0
+ # Add 'extras' after the amalgamted files are regenerated with the new script (past 3.4.0)
+ roots = ['src/catch2', 'tests', 'examples', 'fuzzing']
+ 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()