60 lines
2.1 KiB
Python
60 lines
2.1 KiB
Python
# 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)
|