# Copyright 2021 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import unittest import fc_sort class FcSortTest(unittest.TestCase): def testGetStemLen(self): self.assertEqual(fc_sort.get_stem_len("/data"), 5) self.assertEqual(fc_sort.get_stem_len("/data/system"), 12) self.assertEqual(fc_sort.get_stem_len("/data/(system)?"), 6) def testIsMeta(self): self.assertEqual(fc_sort.is_meta("/data"), False) self.assertEqual(fc_sort.is_meta("/data$"), True) self.assertEqual(fc_sort.is_meta(r"\$data"), False) def testLesserThan(self): n1 = fc_sort.FileContextsNode.create("/data u:object_r:rootfs:s0") # shorter stem_len n2 = fc_sort.FileContextsNode.create("/d u:object_r:rootfs:s0") # is meta n3 = fc_sort.FileContextsNode.create("/data/l(/.*)? u:object_r:log:s0") # with file_type n4 = fc_sort.FileContextsNode.create("/data -- u:object_r:rootfs:s0") contexts = [n1, n2, n3, n4] contexts.sort() self.assertEqual(contexts, [n3, n2, n1, n4]) def testReadFileContexts(self): content = """# comment / u:object_r:rootfs:s0 # another comment /adb_keys u:object_r:adb_keys_file:s0 """ fcs = fc_sort.read_file_contexts(content.splitlines()) self.assertEqual(len(fcs), 2) self.assertEqual(fcs[0].path, "/") self.assertEqual(fcs[0].type, "rootfs") self.assertEqual(fcs[1].path, "/adb_keys") self.assertEqual(fcs[1].type, "adb_keys_file") if __name__ == '__main__': unittest.main(verbosity=2)