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)
def produce_patterns_from_stream(stream):
patterns = []
allFlagsReader = dict_reader(stream)
for row in allFlagsReader:
# Read in all the signatures into a list and remove member names.
patterns = set()
for row in dict_reader(stream):
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
def main(args):

View File

@@ -28,12 +28,15 @@ class TestGeneratedPatterns(unittest.TestCase):
def test_generate(self):
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;->toString()Ljava/lang/String;,blocked
''')
expected = [
"Ljava/lang/Object;->hashCode()I",
"Ljava/lang/Object;->toString()Ljava/lang/String;",
"java/lang/Character",
"java/lang/Object",
"java/lang/ProcessBuilder",
]
self.assertEqual(expected, patterns)