1#!/usr/bin/env python 2# 3# Copyright (C) 2020 The Android Open Source Project 4# 5# Licensed under the Apache License, Version 2.0 (the "License"); 6# you may not use this file except in compliance with the License. 7# You may obtain a copy of the License at 8# 9# http://www.apache.org/licenses/LICENSE-2.0 10# 11# Unless required by applicable law or agreed to in writing, software 12# distributed under the License is distributed on an "AS IS" BASIS, 13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14# See the License for the specific language governing permissions and 15# limitations under the License. 16# 17"""Unit tests for construct_context.py.""" 18 19import sys 20import unittest 21 22import construct_context as cc 23 24sys.dont_write_bytecode = True 25 26 27def construct_contexts(arglist): 28 args = cc.parse_args(arglist) 29 return cc.construct_contexts(args) 30 31 32contexts = [ 33 '--host-context-for-sdk', 34 '28', 35 'PCL[out/zdir/z.jar]', 36 '--target-context-for-sdk', 37 '28', 38 'PCL[/system/z.jar]', 39 '--host-context-for-sdk', 40 '29', 41 'PCL[out/xdir/x.jar]#PCL[out/ydir/y.jar]', 42 '--target-context-for-sdk', 43 '29', 44 'PCL[/system/x.jar]#PCL[/product/y.jar]', 45 '--host-context-for-sdk', 46 'any', 47 'PCL[out/adir/a.jar]#PCL[out/bdir/b.jar]', 48 '--target-context-for-sdk', 49 'any', 50 'PCL[/system/a.jar]#PCL[/product/b.jar]', 51] 52 53#pylint: disable=line-too-long 54class ConstructContextTest(unittest.TestCase): 55 56 def test_construct_context_28(self): 57 args = ['--target-sdk-version', '28'] + contexts 58 result = construct_contexts(args) 59 expect = ( 60 '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]}' 61 ' ; ' 62 '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]}') 63 self.assertEqual(result, expect) 64 65 def test_construct_context_29(self): 66 args = ['--target-sdk-version', '29'] + contexts 67 result = construct_contexts(args) 68 expect = ( 69 'class_loader_context_arg=--class-loader-context=PCL[]{PCL[out/adir/a.jar]#PCL[out/bdir/b.jar]}' 70 ' ; ' 71 'stored_class_loader_context_arg=--stored-class-loader-context=PCL[]{PCL[/system/a.jar]#PCL[/product/b.jar]}') 72 self.assertEqual(result, expect) 73 74 def test_construct_context_S(self): 75 args = ['--target-sdk-version', 'S'] + contexts 76 result = construct_contexts(args) 77 expect = ( 78 'class_loader_context_arg=--class-loader-context=PCL[]{PCL[out/adir/a.jar]#PCL[out/bdir/b.jar]}' 79 ' ; ' 80 'stored_class_loader_context_arg=--stored-class-loader-context=PCL[]{PCL[/system/a.jar]#PCL[/product/b.jar]}') 81 self.assertEqual(result, expect) 82#pylint: enable=line-too-long 83 84if __name__ == '__main__': 85 unittest.main(verbosity=2) 86