autotest_unused: Ignore a few more filepaths

A few filepaths really need to be ignored when grepping:
* BeautifulSoup.py, a clone of an upstream repository
* *_functional_test.py, a suffix used for testing code

This CL always ignores BeautifulSoup, ignores _functional_test.py when
ignoring unittests, and sets up a reusable framework for ignoring other
globs in the future.

BUG=None
TEST=autotest_unused.py -d site_utils

Change-Id: I1bd36863acd1f2d1767348c82ca6b77649b7d6f1
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crostestutils/+/2519198
Tested-by: Greg Edelston <gredelston@google.com>
Auto-Submit: Greg Edelston <gredelston@google.com>
Reviewed-by: Derek Beckett <dbeckett@chromium.org>
Reviewed-by: Kevin Shelton <kmshelton@chromium.org>
Commit-Queue: Greg Edelston <gredelston@google.com>
diff --git a/code_health/autotest_unused.py b/code_health/autotest_unused.py
index fe920d2..b771f7b 100755
--- a/code_health/autotest_unused.py
+++ b/code_health/autotest_unused.py
@@ -24,6 +24,7 @@
 """
 
 import argparse
+import copy
 import logging
 import os
 import re
@@ -45,6 +46,19 @@
 ]
 
 
+# Unix-style globs to always ignore when grepping.
+ALWAYS_IGNORE_GLOBS = [
+    '**/server/cros/faft/fw-testing-configs/**',
+    '**/site_utils/rpm_control_system/BeautifulSoup.py',
+]
+
+# Unix-style globs of unittest paths to sometimes ignore when grepping.
+UNITTEST_GLOBS = [
+    '**_unittest.py',
+    '**_functional_test.py'
+]
+
+
 def require_chroot():
     """Exit with status 2 if not in the chroot."""
     if not os.path.isfile('/etc/cros_chroot_version'):
@@ -107,13 +121,13 @@
         '--no-line-number',
         # Require word-boundaries.
         '-w',
-        # Always exclude fw-testing-configs/.
-        '--iglob',
-        '\'!**/server/cros/faft/fw-testing-configs/**\'',
     ]
+    ignore_globs = copy.copy(ALWAYS_IGNORE_GLOBS)
     if exclude_unittests:
-        flags += ['--iglob', '\'!*_unittest.py\'']
-    cmd = 'rg %s \'%s\' %s' % (' '.join(flags), pattern, ' '.join(paths))
+        ignore_globs.extend(UNITTEST_GLOBS)
+    for glob in ignore_globs:
+        flags.extend(['--iglob', "'!%s'" % glob])
+    cmd = "rg %s '%s' %s" % (' '.join(flags), pattern, ' '.join(paths))
     proc = subprocess.run(cmd,
                           stdout=subprocess.PIPE,
                           universal_newlines=True,