mirror of
https://https.git.savannah.gnu.org/git/findutils.git
synced 2026-01-26 07:37:52 +00:00
* find/testsuite/excuses.txt: remove spurious character (a typo). * find/testsuite/test_escape_c.sh: Add copyright header. * find/testsuite/binary_locations.sh: Likewise. * find/testsuite/checklists.py: Likewise. * find/testsuite/Makefile.am: Likewise. * find/testsuite/sv-bug-32043.sh: Likewise. * find/testsuite/test_escapechars.sh: Likewise. * find/testsuite/test_inode.sh: Likewise. * xargs/testsuite/Makefile.am: Likewise. * locate/testsuite/Makefile.am: Likewise. * build-aux/Makefile.am: Likewise. * doc/Makefile.am: Likewise. * find/print.h: Likewise. * lib/check-regexprops.sh: Likewise.
108 lines
3.2 KiB
Python
108 lines
3.2 KiB
Python
# Copyright (C) 2014, 2015 Free Software Foundation, Inc.
|
|
#
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
#
|
|
"""Check that the list of test files in Makefile.am is complete and not redundant.
|
|
|
|
Usage:
|
|
checklists file-listing-configured-files test-root subdir-1-containing-tests [subdir-2-containing-tests ...]
|
|
"""
|
|
|
|
import os
|
|
import os.path
|
|
import re
|
|
import sys
|
|
|
|
def report_unlisted(filename):
|
|
sys.stderr.write(
|
|
'Error: test file %s is not listed in Makefile.am but exists on disk.\n'
|
|
% (filename,))
|
|
|
|
|
|
def report_missing(filename):
|
|
sys.stderr.write(
|
|
'Error: test file %s is listed in Makefile.am but does not exist on disk.\n'
|
|
% (filename,))
|
|
|
|
def report_dupe(filename):
|
|
sys.stderr.write(
|
|
'Error: test file %s is listed more than once in Makefile.am.\n'
|
|
% (filename,))
|
|
|
|
|
|
def report_problems(problem_filenames, reporting_function):
|
|
for f in problem_filenames:
|
|
reporting_function(f)
|
|
return len(problem_filenames)
|
|
|
|
|
|
def file_names(listfile_name):
|
|
for line in open(listfile_name, 'r').readlines():
|
|
yield line.rstrip('\n')
|
|
|
|
|
|
def configured_file_names(listfile_name):
|
|
dupes = set()
|
|
result = set()
|
|
for filename in file_names(listfile_name):
|
|
if filename in result:
|
|
dupes.add(filename)
|
|
else:
|
|
result.add(filename)
|
|
return dupes, result
|
|
|
|
|
|
def find_test_files(roots):
|
|
testfile_rx = re.compile(r'\.(exp|xo)$')
|
|
for root in roots:
|
|
for parent, dirs, files in os.walk(root):
|
|
for file_basename in files:
|
|
if testfile_rx.search(file_basename):
|
|
yield os.path.join(parent, file_basename)
|
|
|
|
|
|
class TemporaryWorkingDirectory(object):
|
|
|
|
def __init__(self, cwd):
|
|
self.new_cwd = cwd
|
|
self.old_cwd = os.getcwd()
|
|
|
|
def __enter__(self):
|
|
os.chdir(self.new_cwd)
|
|
|
|
def __exit__(self, *unused_args):
|
|
os.chdir(self.old_cwd)
|
|
|
|
|
|
def main(args):
|
|
if len(args) < 3:
|
|
sys.stderr.write(__doc__)
|
|
return 1
|
|
dupes, configured = configured_file_names(args[1])
|
|
with TemporaryWorkingDirectory(args[2]):
|
|
actual = set(find_test_files(args[3:]))
|
|
sys.stdout.write('%d test files configured for find, %s files on-disk'
|
|
% (len(configured), len(actual)))
|
|
problem_count = 0
|
|
problem_count += report_problems(dupes, report_dupe)
|
|
problem_count += report_problems(configured - actual, report_missing)
|
|
problem_count += report_problems(actual - configured, report_unlisted)
|
|
if problem_count:
|
|
return 1
|
|
else:
|
|
return 0
|
|
|
|
if __name__ == '__main__':
|
|
sys.exit(main(sys.argv))
|