File: test_kmod.py

package info (click to toggle)
mkosi 26-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,564 kB
  • sloc: python: 20,615; sh: 640; makefile: 12
file content (60 lines) | stat: -rw-r--r-- 3,780 bytes parent folder | download
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
60
# SPDX-License-Identifier: LGPL-2.1-or-later

from mkosi import kmod


def test_globs_match_module() -> None:
    assert kmod.globs_match_module("drivers/ata/ahci.ko.xz", ["ahci"])
    assert not kmod.globs_match_module("drivers/ata/ahci.ko.xz.2", ["ahci"])
    assert not kmod.globs_match_module("drivers/ata/ahci.ko.xz", ["ata"])
    assert not kmod.globs_match_module("drivers/ata/ahci.ko.xz", ["drivers"])
    assert not kmod.globs_match_module("drivers/ata/ahci.ko.xz", ["/drivers"])
    assert not kmod.globs_match_module("drivers/ata/ahci.ko.xz", ["/drivers"])
    assert not kmod.globs_match_module("drivers/ata/ahci-2.ko.xz", ["ahci"])
    assert not kmod.globs_match_module("drivers/ata/ahci2.ko.zst", ["ahci"])
    assert kmod.globs_match_module("drivers/ata/ahci.ko", ["ata/*"])
    assert not kmod.globs_match_module("drivers/ata/ahci.ko.xz", ["/ata/*"])
    assert kmod.globs_match_module("drivers/ata/ahci.ko", ["drivers/*"])
    assert kmod.globs_match_module("drivers/ata/ahci.ko", ["/drivers/*"])
    assert not kmod.globs_match_module("drivers/ata/ahci.ko", ["ahci/*"])
    assert not kmod.globs_match_module("drivers/ata/ahci.ko", ["bahci*"])
    assert kmod.globs_match_module("drivers/ata/ahci.ko.zst", ["ahci*"])
    assert kmod.globs_match_module("drivers/ata/ahci.ko.xz", ["ahc*"])
    assert kmod.globs_match_module("drivers/ata/ahci.ko", ["ah*"])
    assert kmod.globs_match_module("drivers/ata/ahci.ko", ["*"])
    assert kmod.globs_match_module("drivers/ata/ahci.ko", ["ata/"])
    assert kmod.globs_match_module("drivers/ata/ahci.ko", ["drivers/"])
    assert kmod.globs_match_module("drivers/ata/ahci.ko", ["drivers/ata/"])

    assert kmod.globs_match_module("drivers/ata/ahci.ko", ["-ahci", "*"])
    assert kmod.globs_match_module("drivers/ata/ahci.ko", ["-ahci", "*", "ahciahci"])
    assert kmod.globs_match_module("drivers/ata/ahci.ko.xz", ["-ahci", "*"])
    assert kmod.globs_match_module("drivers/ata/ahci.ko.zst", ["-ahci", "*"])
    assert kmod.globs_match_module("drivers/ata/ahci.ko.gz", ["-ahci", "*"])
    assert kmod.globs_match_module("drivers/ata/ahci.ko.gz", ["-ahci", "drivers/"])
    assert kmod.globs_match_module("drivers/ata/ahci.ko.gz", ["-ahci", "ata/"])
    assert not kmod.globs_match_module("drivers/ata/ahci.ko.gz", ["-ahci", "ata/ata/"])
    assert kmod.globs_match_module("drivers/ata/ahci.ko.gz", ["-ahci", "drivers/ata/"])
    assert not kmod.globs_match_module("drivers/ata/ahci.ko", ["*", "-ahci"])
    assert not kmod.globs_match_module("drivers/ata/ahci.ko", ["ahci", "-*"])
    assert not kmod.globs_match_module("drivers/ata/ahci.ko.zst", ["-*"])
    assert not kmod.globs_match_module("drivers/ata/ahci.ko.xz", ["-*"])

    # absolute glob behavior unchanged when paths are relative to /lib/module/<kver>
    assert kmod.globs_match_module("kernel/drivers/ata/ahci.ko", ["drivers/*"])
    assert kmod.globs_match_module("kernel/drivers/ata/ahci.ko", ["/drivers/*"])
    assert not kmod.globs_match_module("kernel/drivers/ata/ahci.ko.xz", ["/ata/*"])

    # absolute globs match both relative to kernel/ and module_dir root
    assert kmod.globs_match_module("kernel/drivers/ata/ahci.ko.xz", ["/drivers/ata/ahci"])
    assert kmod.globs_match_module("kernel/drivers/ata/ahci.ko.xz", ["/kernel/drivers/ata/ahci"])


def test_normalize_module_glob() -> None:
    assert kmod.normalize_module_glob("raid[0-9]") == "raid[0-9]"
    assert kmod.normalize_module_glob("raid[0_9]") == "raid[0_9]"
    assert kmod.normalize_module_glob("raid[0_9]a_z") == "raid[0_9]a-z"
    assert kmod.normalize_module_glob("0_9") == "0-9"
    assert kmod.normalize_module_glob("[0_9") == "[0_9"
    assert kmod.normalize_module_glob("0_9]") == "0-9]"
    assert kmod.normalize_module_glob("raid[0_9]a_z[a_c]") == "raid[0_9]a-z[a_c]"