tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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())