Merge "Remove member signature and inner classes from signature-patterns.csv"

This commit is contained in:
Paul Duffin
2021-08-11 09:08:01 +00:00
committed by Gerrit Code Review
2 changed files with 19 additions and 6 deletions

View File

@@ -30,11 +30,21 @@ def produce_patterns_from_file(file):
return produce_patterns_from_stream(f) return produce_patterns_from_stream(f)
def produce_patterns_from_stream(stream): def produce_patterns_from_stream(stream):
patterns = [] # Read in all the signatures into a list and remove member names.
allFlagsReader = dict_reader(stream) patterns = set()
for row in allFlagsReader: for row in dict_reader(stream):
signature = row['signature'] signature = row['signature']
patterns.append(signature) text = signature.removeprefix("L")
# Remove the class specific member signature
pieces = text.split(";->")
qualifiedClassName = pieces[0]
# Remove inner class names as they cannot be separated from the containing outer class.
pieces = qualifiedClassName.split("$", maxsplit=1)
pattern = pieces[0]
patterns.add(pattern)
patterns = list(patterns)
patterns.sort()
return patterns return patterns
def main(args): def main(args):

View File

@@ -28,12 +28,15 @@ class TestGeneratedPatterns(unittest.TestCase):
def test_generate(self): def test_generate(self):
patterns = self.produce_patterns_from_string(''' patterns = self.produce_patterns_from_string('''
Ljava/lang/ProcessBuilder$Redirect$1;-><init>()V,blocked
Ljava/lang/Character$UnicodeScript;->of(I)Ljava/lang/Character$UnicodeScript;,public-api
Ljava/lang/Object;->hashCode()I,public-api,system-api,test-api Ljava/lang/Object;->hashCode()I,public-api,system-api,test-api
Ljava/lang/Object;->toString()Ljava/lang/String;,blocked Ljava/lang/Object;->toString()Ljava/lang/String;,blocked
''') ''')
expected = [ expected = [
"Ljava/lang/Object;->hashCode()I", "java/lang/Character",
"Ljava/lang/Object;->toString()Ljava/lang/String;", "java/lang/Object",
"java/lang/ProcessBuilder",
] ]
self.assertEqual(expected, patterns) self.assertEqual(expected, patterns)