generate_test.py (1753B)
1 #!/usr/bin/python 2 3 # Copyright 2025 The Chromium Authors 4 # Use of this source code is governed by a BSD-style license that can be 5 # found in the LICENSE file. 6 7 """Test that the set of gen-* files is the same as the generated files.""" 8 9 import fnmatch 10 import os 11 import sys 12 import generate 13 import logging 14 15 UPDATE_TIP = 'To update the generated tests, run:\n' \ 16 '$ python bluetooth/bidi/generate.py' 17 18 19 def main(): 20 logging.basicConfig(level=logging.INFO) 21 logging.info(UPDATE_TIP) 22 generated_files = set() 23 # Tests data in gen-* files is the same as the data generated. 24 for generated_test in generate.GetGeneratedTests(): 25 generated_files.add(generated_test.path) 26 try: 27 with open(generated_test.path, 'r') as f: 28 data = f.read() 29 if data != generated_test.data: 30 logging.error('%s does not match template', generated_test.path) 31 return -1 32 except IOError as e: 33 if e.errno == 2: 34 logging.error('Missing generated test:\n%s\nFor template:\n%s', 35 generated_test.path, 36 generated_test.template) 37 return -1 38 39 # Tests that there are no obsolete generated files. 40 previous_generated_files = set() 41 current_path = os.path.dirname(os.path.realpath(__file__)) 42 for root, _, filenames in os.walk(current_path): 43 for filename in fnmatch.filter(filenames, 'gen-*.https.window.js'): 44 previous_generated_files.add(os.path.join(root, filename)) 45 46 if previous_generated_files != generated_files: 47 logging.error('There are extra generated tests. Please remove them.') 48 for test_path in previous_generated_files - generated_files: 49 logging.error('%s', test_path) 50 return -1 51 52 53 if __name__ == '__main__': 54 sys.exit(main())