]
}
+ whitelisted = [
+ 'firebase-jobdispatcher', # https://github.com/firebase/firebase-jobdispatcher-android/blob/master/LICENSE
+ 'com.firebaseui', # https://github.com/firebase/FirebaseUI-Android/blob/master/LICENSE
+ 'geofire-android' # https://github.com/firebase/geofire-java/blob/master/LICENSE
+ ]
+
+ def is_whitelisted(s):
+ return any(wl in s for wl in whitelisted)
+
def suspects_found(s):
for n, r in usual_suspects.items():
- if r.match(s):
+ if r.match(s) and not is_whitelisted(s):
yield n
gradle_mavenrepo = re.compile(r'maven *{ *(url)? *[\'"]?([^ \'"]*)[\'"]?')
elif ext == 'jar':
for name in suspects_found(curfile):
- count += handleproblem('usual supect \'%s\'' % name, path_in_build_dir, filepath)
+ count += handleproblem('usual suspect \'%s\'' % name, path_in_build_dir, filepath)
if curfile == 'gradle-wrapper.jar':
removeproblem('gradle-wrapper.jar', path_in_build_dir, filepath)
else:
for i, line in enumerate(lines):
if is_used_by_gradle(line):
for name in suspects_found(line):
- count += handleproblem('usual supect \'%s\' at line %d' % (name, i + 1), path_in_build_dir, filepath)
+ count += handleproblem('usual suspect \'%s\' at line %d' % (name, i + 1), path_in_build_dir, filepath)
noncomment_lines = [l for l in lines if not common.gradle_comment.match(l)]
joined = re.sub(r'[\n\r\s]+', ' ', ' '.join(noncomment_lines))
for m in gradle_mavenrepo.finditer(joined):
--- /dev/null
+#!/usr/bin/env python3
+
+import unittest
+import optparse
+from pathlib import Path
+from os.path import basename, dirname, realpath
+
+from fdroidserver import scanner
+from fdroidserver.metadata import Build
+import fdroidserver.common
+
+
+class ScannerTest(unittest.TestCase):
+ def test_scan_source_files(self):
+ source_files = Path(dirname(realpath(__file__)), 'source-files')
+ projects = {
+ 'Zillode': 1,
+ 'firebase-suspect': 1
+ }
+ for d in (str(p) for p in source_files.iterdir()):
+ fatal_problems = scanner.scan_source(d, Build())
+ self.assertEqual(projects.get(basename(d), 0), fatal_problems)
+
+
+if __name__ == "__main__":
+ parser = optparse.OptionParser()
+ parser.add_option("-v", "--verbose", action="store_true", default=False,
+ help="Spew out even more information than normal")
+ (fdroidserver.common.options, args) = parser.parse_args(['--verbose'])
+
+ newSuite = unittest.TestSuite()
+ newSuite.addTest(unittest.makeSuite(ScannerTest))
+ unittest.main(failfast=False)