aboutsummaryrefslogtreecommitdiff
path: root/tests/fc_sort_test.py
blob: accd0a1583c4d160a5a53d2ee9a71496f68d36d2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# 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)