blob: 2d8d2d809a02879a7221b4ef5922a9994f9fb5cf [file] [log] [blame]
# 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)