Apply pylint to scripts/construct_context*.py

1. Run pyformat scripts/construct_context.py -s 4 --force_quote_type
none -i to fix formatting
2. Wrap #pylint: [disable|enable]=line-too-long in tests

Test: m construct_context construct_context_test
Test: pylint --rcfile tools/repohooks/tools/pylintrc
build/soong/scripts/construct_context.py
build/soong/scripts/construct_context_test.py
Bug: 195738175

Change-Id: I2e756b17aae3e70ddaa03356c78f1f2f85c0f6a5
This commit is contained in:
Spandan Das
2021-08-25 18:42:40 +00:00
parent 7c16dabfa5
commit ec555f1a99
2 changed files with 107 additions and 76 deletions

View File

@@ -25,57 +25,78 @@ from manifest import compare_version_gt
def parse_args(args):
"""Parse commandline arguments."""
parser = argparse.ArgumentParser()
parser.add_argument('--target-sdk-version', default='', dest='sdk',
help='specify target SDK version (as it appears in the manifest)')
parser.add_argument('--host-context-for-sdk', dest='host_contexts',
action='append', nargs=2, metavar=('sdk','context'),
help='specify context on host for a given SDK version or "any" version')
parser.add_argument('--target-context-for-sdk', dest='target_contexts',
action='append', nargs=2, metavar=('sdk','context'),
help='specify context on target for a given SDK version or "any" version')
return parser.parse_args(args)
"""Parse commandline arguments."""
parser = argparse.ArgumentParser()
parser.add_argument(
'--target-sdk-version',
default='',
dest='sdk',
help='specify target SDK version (as it appears in the manifest)')
parser.add_argument(
'--host-context-for-sdk',
dest='host_contexts',
action='append',
nargs=2,
metavar=('sdk', 'context'),
help='specify context on host for a given SDK version or "any" version')
parser.add_argument(
'--target-context-for-sdk',
dest='target_contexts',
action='append',
nargs=2,
metavar=('sdk', 'context'),
help='specify context on target for a given SDK version or "any" '
'version'
)
return parser.parse_args(args)
# Special keyword that means that the context should be added to class loader
# context regardless of the target SDK version.
any_sdk = 'any'
# We assume that the order of context arguments passed to this script is
# correct (matches the order computed by package manager). It is possible to
# sort them here, but Soong needs to use deterministic order anyway, so it can
# as well use the correct order.
def construct_context(versioned_contexts, target_sdk):
context = []
for [sdk, ctx] in versioned_contexts:
if sdk == any_sdk or compare_version_gt(sdk, target_sdk):
context.append(ctx)
return context
context = []
for [sdk, ctx] in versioned_contexts:
if sdk == any_sdk or compare_version_gt(sdk, target_sdk):
context.append(ctx)
return context
def construct_contexts(args):
host_context = construct_context(args.host_contexts, args.sdk)
target_context = construct_context(args.target_contexts, args.sdk)
context_sep = '#'
return ('class_loader_context_arg=--class-loader-context=PCL[]{%s} ; ' % context_sep.join(host_context) +
'stored_class_loader_context_arg=--stored-class-loader-context=PCL[]{%s}' % context_sep.join(target_context))
host_context = construct_context(args.host_contexts, args.sdk)
target_context = construct_context(args.target_contexts, args.sdk)
context_sep = '#'
return (
'class_loader_context_arg=--class-loader-context=PCL[]{%s} ; ' %
context_sep.join(host_context) +
'stored_class_loader_context_arg=--stored-class-loader-context=PCL[]{%s}' #pylint: disable=line-too-long
% context_sep.join(target_context))
def main():
"""Program entry point."""
try:
args = parse_args(sys.argv[1:])
if not args.sdk:
raise SystemExit('target sdk version is not set')
if not args.host_contexts:
args.host_contexts = []
if not args.target_contexts:
args.target_contexts = []
"""Program entry point."""
try:
args = parse_args(sys.argv[1:])
if not args.sdk:
raise SystemExit('target sdk version is not set')
if not args.host_contexts:
args.host_contexts = []
if not args.target_contexts:
args.target_contexts = []
print(construct_contexts(args))
print(construct_contexts(args))
# pylint: disable=broad-except
except Exception as err:
print('error: ' + str(err), file=sys.stderr)
sys.exit(-1)
# pylint: disable=broad-except
except Exception as err:
print('error: ' + str(err), file=sys.stderr)
sys.exit(-1)
if __name__ == '__main__':
main()
main()

View File

@@ -23,53 +23,63 @@ import construct_context as cc
sys.dont_write_bytecode = True
def construct_contexts(arglist):
args = cc.parse_args(arglist)
return cc.construct_contexts(args)
args = cc.parse_args(arglist)
return cc.construct_contexts(args)
contexts = [
'--host-context-for-sdk', '28', 'PCL[out/zdir/z.jar]',
'--target-context-for-sdk', '28', 'PCL[/system/z.jar]',
'--host-context-for-sdk', '29', 'PCL[out/xdir/x.jar]#PCL[out/ydir/y.jar]',
'--target-context-for-sdk', '29', 'PCL[/system/x.jar]#PCL[/product/y.jar]',
'--host-context-for-sdk', 'any', 'PCL[out/adir/a.jar]#PCL[out/bdir/b.jar]',
'--target-context-for-sdk', 'any', 'PCL[/system/a.jar]#PCL[/product/b.jar]',
'--host-context-for-sdk',
'28',
'PCL[out/zdir/z.jar]',
'--target-context-for-sdk',
'28',
'PCL[/system/z.jar]',
'--host-context-for-sdk',
'29',
'PCL[out/xdir/x.jar]#PCL[out/ydir/y.jar]',
'--target-context-for-sdk',
'29',
'PCL[/system/x.jar]#PCL[/product/y.jar]',
'--host-context-for-sdk',
'any',
'PCL[out/adir/a.jar]#PCL[out/bdir/b.jar]',
'--target-context-for-sdk',
'any',
'PCL[/system/a.jar]#PCL[/product/b.jar]',
]
#pylint: disable=line-too-long
class ConstructContextTest(unittest.TestCase):
def test_construct_context_28(self):
args = ['--target-sdk-version', '28'] + contexts
result = construct_contexts(args)
expect = ('class_loader_context_arg=--class-loader-context=PCL[]{PCL[out/xdir/x.jar]'
'#PCL[out/ydir/y.jar]'
'#PCL[out/adir/a.jar]'
'#PCL[out/bdir/b.jar]}'
' ; '
'stored_class_loader_context_arg=--stored-class-loader-context=PCL[]{PCL[/system/x.jar]'
'#PCL[/product/y.jar]'
'#PCL[/system/a.jar]'
'#PCL[/product/b.jar]}')
self.assertEqual(result, expect)
def test_construct_context_29(self):
args = ['--target-sdk-version', '29'] + contexts
result = construct_contexts(args)
expect = ('class_loader_context_arg=--class-loader-context=PCL[]{PCL[out/adir/a.jar]'
'#PCL[out/bdir/b.jar]}'
' ; '
'stored_class_loader_context_arg=--stored-class-loader-context=PCL[]{PCL[/system/a.jar]'
'#PCL[/product/b.jar]}')
self.assertEqual(result, expect)
def test_construct_context_28(self):
args = ['--target-sdk-version', '28'] + contexts
result = construct_contexts(args)
expect = (
'class_loader_context_arg=--class-loader-context=PCL[]{PCL[out/xdir/x.jar]#PCL[out/ydir/y.jar]#PCL[out/adir/a.jar]#PCL[out/bdir/b.jar]}'
' ; '
'stored_class_loader_context_arg=--stored-class-loader-context=PCL[]{PCL[/system/x.jar]#PCL[/product/y.jar]#PCL[/system/a.jar]#PCL[/product/b.jar]}')
self.assertEqual(result, expect)
def test_construct_context_S(self):
args = ['--target-sdk-version', 'S'] + contexts
result = construct_contexts(args)
expect = ('class_loader_context_arg=--class-loader-context=PCL[]{PCL[out/adir/a.jar]'
'#PCL[out/bdir/b.jar]}'
' ; '
'stored_class_loader_context_arg=--stored-class-loader-context=PCL[]{PCL[/system/a.jar]'
'#PCL[/product/b.jar]}')
self.assertEqual(result, expect)
def test_construct_context_29(self):
args = ['--target-sdk-version', '29'] + contexts
result = construct_contexts(args)
expect = (
'class_loader_context_arg=--class-loader-context=PCL[]{PCL[out/adir/a.jar]#PCL[out/bdir/b.jar]}'
' ; '
'stored_class_loader_context_arg=--stored-class-loader-context=PCL[]{PCL[/system/a.jar]#PCL[/product/b.jar]}')
self.assertEqual(result, expect)
def test_construct_context_S(self):
args = ['--target-sdk-version', 'S'] + contexts
result = construct_contexts(args)
expect = (
'class_loader_context_arg=--class-loader-context=PCL[]{PCL[out/adir/a.jar]#PCL[out/bdir/b.jar]}'
' ; '
'stored_class_loader_context_arg=--stored-class-loader-context=PCL[]{PCL[/system/a.jar]#PCL[/product/b.jar]}')
self.assertEqual(result, expect)
#pylint: enable=line-too-long
if __name__ == '__main__':
unittest.main(verbosity=2)
unittest.main(verbosity=2)