| 
									
										
										
										
											2020-11-07 22:55:47 +02:00
										 |  |  | #!/usr/bin/env python3 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-29 13:10:54 +01:00
										 |  |  | import sys | 
					
						
							|  |  |  | import glob | 
					
						
							| 
									
										
										
										
											2020-11-07 22:55:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-29 13:10:54 +01:00
										 |  |  | correct_licence = """\
 | 
					
						
							| 
									
										
										
										
											2020-11-07 22:55:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-29 13:10:54 +01:00
										 |  |  | //              Copyright Catch2 Authors | 
					
						
							|  |  |  | // Distributed under the Boost Software License, Version 1.0. | 
					
						
							| 
									
										
										
										
											2022-10-28 11:22:53 +02:00
										 |  |  | //   (See accompanying file LICENSE.txt or copy at | 
					
						
							| 
									
										
										
										
											2022-01-29 13:10:54 +01:00
										 |  |  | //        https://www.boost.org/LICENSE_1_0.txt) | 
					
						
							| 
									
										
										
										
											2020-11-07 22:55:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-29 13:10:54 +01:00
										 |  |  | // SPDX-License-Identifier: BSL-1.0 | 
					
						
							|  |  |  | """
 | 
					
						
							| 
									
										
										
										
											2020-11-07 22:55:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-29 13:10:54 +01:00
										 |  |  | def check_licence_in_file(filename: str) -> bool: | 
					
						
							|  |  |  |     with open(filename, 'r') as f: | 
					
						
							|  |  |  |         file_preamble = ''.join(f.readlines()[:7]) | 
					
						
							| 
									
										
										
										
											2020-11-07 22:55:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-29 13:10:54 +01:00
										 |  |  |     if correct_licence != file_preamble: | 
					
						
							|  |  |  |         print('File {} does not have proper licence'.format(filename)) | 
					
						
							|  |  |  |         return False | 
					
						
							|  |  |  |     return True | 
					
						
							| 
									
										
										
										
											2020-11-07 22:55:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-29 13:10:54 +01:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2020-11-07 22:55:47 +02:00
										 |  |  |     return failed | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-29 13:10:54 +01:00
										 |  |  | def check_licences(): | 
					
						
							|  |  |  |     failed = 0 | 
					
						
							| 
									
										
										
										
											2023-08-24 16:33:15 +02:00
										 |  |  |     # Add 'extras' after the amalgamted files are regenerated with the new script (past 3.4.0) | 
					
						
							|  |  |  |     roots = ['src/catch2', 'tests', 'examples', 'fuzzing'] | 
					
						
							| 
									
										
										
										
											2022-01-29 13:10:54 +01:00
										 |  |  |     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() |