diff options
Diffstat (limited to 'tests/test_alternatives.py')
-rw-r--r-- | tests/test_alternatives.py | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/tests/test_alternatives.py b/tests/test_alternatives.py new file mode 100644 index 0000000..2a42d69 --- /dev/null +++ b/tests/test_alternatives.py @@ -0,0 +1,85 @@ +import textwrap +from typing import Mapping + +from debputy.maintscript_snippet import MaintscriptSnippetContainer +from debputy.packager_provided_files import PackagerProvidedFile +from debputy.packages import BinaryPackage +from debputy.packaging.alternatives import process_alternatives +from debputy.plugin.api import virtual_path_def, VirtualPath +from debputy.plugin.api.impl import plugin_metadata_for_debputys_own_plugin +from debputy.plugin.api.impl_types import PackagerProvidedFileClassSpec +from debputy.plugin.api.test_api import build_virtual_file_system + + +def _ppf_for(pkg: BinaryPackage, path: VirtualPath) -> PackagerProvidedFile: + plugin_metadata = plugin_metadata_for_debputys_own_plugin() + return PackagerProvidedFile( + path, + pkg.name, + "irrelevant", + "irrelevant", + PackagerProvidedFileClassSpec( + plugin_metadata, + "alternatives", + "DEBIAN/alternatives", + 0o0644, + None, + False, + False, + None, + False, + True, + None, + None, + False, + ), + ) + + +def test_alternatives( + package_single_foo_arch_all_cxt_amd64: Mapping[str, BinaryPackage], +) -> None: + pkg = package_single_foo_arch_all_cxt_amd64["foo"] + debian_dir = build_virtual_file_system( + [ + virtual_path_def( + "alternatives", + fs_path="debian/alternatives", + content=textwrap.dedent( + """\ + Name: x-terminal-emulator + Link: /usr/bin/x-terminal-emulator + Alternative: /usr/bin/xterm + Dependents: + /usr/share/man/man1/x-terminal-emulator.1.gz x-terminal-emulator.1.gz /usr/share/man/man1/xterm.1.gz + Priority: 20 + """ + ), + ), + ] + ) + fs_root = build_virtual_file_system( + [ + "./usr/bin/xterm", + "./usr/share/man/man1/xterm.1.gz", + ] + ) + reserved_ppfs = {"alternatives": [_ppf_for(pkg, debian_dir["alternatives"])]} + maintscript_snippets = { + "prerm": MaintscriptSnippetContainer(), + "postinst": MaintscriptSnippetContainer(), + } + process_alternatives( + pkg, + fs_root, + reserved_ppfs, + maintscript_snippets, + ) + + prerm = maintscript_snippets["prerm"].generate_snippet(reverse=True) + postinst = maintscript_snippets["postinst"].generate_snippet(reverse=True) + + assert "--remove x-terminal-emulator /usr/bin/xterm" in prerm + assert ( + "--install /usr/bin/x-terminal-emulator x-terminal-emulator /usr/bin/xterm 20" + ) in postinst |