repo-autoindex/tests/test_yum_render_typical.py

450 lines
21 KiB
Python
Raw Permalink Normal View History

2022-07-07 14:02:46 +10:00
from typing import Optional
import textwrap
from repo_autoindex import autoindex
from repo_autoindex._impl.base import GeneratedIndex
REPOMD_XML = textwrap.dedent(
"""
<?xml version="1.0" encoding="UTF-8"?>
<repomd xmlns="http://linux.duke.edu/metadata/repo" xmlns:rpm="http://linux.duke.edu/metadata/rpm">
<revision>1657165688</revision>
<data type="primary">
<checksum type="sha256">d4888f04f95ac067af4d997d35c6d345cbe398563d777d017a3634c9ed6148cf</checksum>
<open-checksum type="sha256">6fc4eddd4e9de89246efba3815b8a9dec9dfe168e4fd3104cc792dff908a0f62</open-checksum>
<location href="repodata/d4888f04f95ac067af4d997d35c6d345cbe398563d777d017a3634c9ed6148cf-primary.xml.gz"/>
<timestamp>1657165688</timestamp>
<size>2932</size>
<open-size>16585</open-size>
</data>
<data type="filelists">
<checksum type="sha256">284769ec79daa9e0a3b0129bb6260cc6271c90c4fe02b43dfa7cdf7635fb803f</checksum>
<open-checksum type="sha256">72f89223c8b0f6c7a2ee6ed7fbd16ee0bb395ca68260038bb3895265af84c29f</open-checksum>
<location href="repodata/284769ec79daa9e0a3b0129bb6260cc6271c90c4fe02b43dfa7cdf7635fb803f-filelists.xml.gz"/>
<timestamp>1657165688</timestamp>
<size>4621</size>
<open-size>36911</open-size>
</data>
<data type="other">
<checksum type="sha256">36c2195bbee0c39ee080969abc6fd59d943c3471114cfd43c6e776ac20d7ed21</checksum>
<open-checksum type="sha256">39f52cf295db14e863abcd7b2eede8e6c5e39ac9b2f194349459d29cd492c90f</open-checksum>
<location href="repodata/36c2195bbee0c39ee080969abc6fd59d943c3471114cfd43c6e776ac20d7ed21-other.xml.gz"/>
<timestamp>1657165688</timestamp>
<size>1408</size>
<open-size>8432</open-size>
</data>
<data type="primary_db">
<checksum type="sha256">55e6bfd00e889c5c1f9a3c9fb35a660158bc5d975ae082d434f3cf81cc2c0c21</checksum>
<open-checksum type="sha256">b2692c49d1d98d68e764e29108d8a81a3dfd9e04fa7665115853a029396d118d</open-checksum>
<location href="repodata/55e6bfd00e889c5c1f9a3c9fb35a660158bc5d975ae082d434f3cf81cc2c0c21-primary.sqlite.bz2"/>
<timestamp>1657165688</timestamp>
<size>7609</size>
<open-size>114688</open-size>
<database_version>10</database_version>
</data>
<data type="filelists_db">
<checksum type="sha256">de63a509812c37f7736fcef0b79e9c55dfe67a2d77006f74fdc442935103e9e6</checksum>
<open-checksum type="sha256">40eb5d53fe547c98d470813256c9bfc8a239b13697d8eb824a1485c9e186a0e3</open-checksum>
<location href="repodata/de63a509812c37f7736fcef0b79e9c55dfe67a2d77006f74fdc442935103e9e6-filelists.sqlite.bz2"/>
<timestamp>1657165688</timestamp>
<size>10323</size>
<open-size>65536</open-size>
<database_version>10</database_version>
</data>
<data type="other_db">
<checksum type="sha256">9aa39b62df200cb3784dea24092d0c1c686afff0cd0990c2ec7a61afe8896e1c</checksum>
<open-checksum type="sha256">3e5cefb10ce805b827e12ca3b4839bba873dc9403fd92b60a364bf6f312bd972</open-checksum>
<location href="repodata/9aa39b62df200cb3784dea24092d0c1c686afff0cd0990c2ec7a61afe8896e1c-other.sqlite.bz2"/>
<timestamp>1657165688</timestamp>
<size>2758</size>
<open-size>32768</open-size>
<database_version>10</database_version>
</data>
</repomd>
"""
).strip()
PRIMARY_XML = textwrap.dedent(
"""
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://linux.duke.edu/metadata/common" xmlns:rpm="http://linux.duke.edu/metadata/rpm" packages="5">
<package type="rpm">
<name>wireplumber</name>
<arch>x86_64</arch>
<version epoch="0" ver="0.4.10" rel="1.fc36"/>
<checksum type="sha256" pkgid="YES">539a773f3f39a7b2b5f971bdd0063f7d4201aab00920f380962e935356dc4d3a</checksum>
<summary>A modular session/policy manager for PipeWire</summary>
<description>WirePlumber is a modular session/policy manager for PipeWire and a
GObject-based high-level library that wraps PipeWire's API, providing
convenience for writing the daemon's modules as well as external tools for
managing PipeWire.</description>
<packager>Fedora Project</packager>
<url>https://pipewire.pages.freedesktop.org/wireplumber/</url>
<time file="1657165671" build="1652194859"/>
<size package="82141" installed="286454" archive="298004"/>
<location href="packages/w/wireplumber-0.4.10-1.fc36.x86_64.rpm"/>
<format>
<rpm:license>MIT</rpm:license>
<rpm:vendor>Fedora Project</rpm:vendor>
<rpm:group>Unspecified</rpm:group>
<rpm:buildhost>buildvm-x86-27.iad2.fedoraproject.org</rpm:buildhost>
<rpm:sourcerpm>wireplumber-0.4.10-1.fc36.src.rpm</rpm:sourcerpm>
<rpm:header-range start="4504" end="20677"/>
<rpm:provides>
<rpm:entry name="pipewire-session-manager"/>
<rpm:entry name="wireplumber" flags="EQ" epoch="0" ver="0.4.10" rel="1.fc36"/>
<rpm:entry name="wireplumber(x86-64)" flags="EQ" epoch="0" ver="0.4.10" rel="1.fc36"/>
</rpm:provides>
<rpm:requires>
<rpm:entry name="/bin/sh"/>
<rpm:entry name="libgcc_s.so.1()(64bit)"/>
<rpm:entry name="libgcc_s.so.1(GCC_3.0)(64bit)"/>
<rpm:entry name="libgcc_s.so.1(GCC_3.3.1)(64bit)"/>
<rpm:entry name="libglib-2.0.so.0()(64bit)"/>
<rpm:entry name="libgobject-2.0.so.0()(64bit)"/>
<rpm:entry name="libpipewire-0.3.so.0()(64bit)"/>
<rpm:entry name="libwireplumber-0.4.so.0()(64bit)"/>
<rpm:entry name="rtld(GNU_HASH)"/>
<rpm:entry name="wireplumber-libs(x86-64)" flags="EQ" epoch="0" ver="0.4.10" rel="1.fc36"/>
<rpm:entry name="libc.so.6(GLIBC_2.34)(64bit)"/>
</rpm:requires>
<rpm:conflicts>
<rpm:entry name="pipewire-session-manager"/>
</rpm:conflicts>
<file type="dir">/etc/wireplumber</file>
<file type="dir">/etc/wireplumber/bluetooth.lua.d</file>
<file type="dir">/etc/wireplumber/common</file>
<file type="dir">/etc/wireplumber/main.lua.d</file>
<file type="dir">/etc/wireplumber/policy.lua.d</file>
<file>/usr/bin/wireplumber</file>
<file>/usr/bin/wpctl</file>
<file>/usr/bin/wpexec</file>
</format>
</package>
<package type="rpm">
<name>wireplumber-libs</name>
<arch>x86_64</arch>
<version epoch="0" ver="0.4.10" rel="1.fc36"/>
<checksum type="sha256" pkgid="YES">1f0d373bd1b8af6b4b7baab1c89e4820aa8cd8691f51fca4fccac9785fe715ea</checksum>
<summary>Libraries for WirePlumber clients</summary>
<description>This package contains the runtime libraries for any application that wishes
to interface with WirePlumber.</description>
<packager>Fedora Project</packager>
<url>https://pipewire.pages.freedesktop.org/wireplumber/</url>
<time file="1657165671" build="1652194859"/>
<size package="325613" installed="1188155" archive="1196460"/>
<location href="packages/w/wireplumber-libs-0.4.10-1.fc36.x86_64.rpm"/>
<format>
<rpm:license>MIT</rpm:license>
<rpm:vendor>Fedora Project</rpm:vendor>
<rpm:group>Unspecified</rpm:group>
<rpm:buildhost>buildvm-x86-27.iad2.fedoraproject.org</rpm:buildhost>
<rpm:sourcerpm>wireplumber-0.4.10-1.fc36.src.rpm</rpm:sourcerpm>
<rpm:header-range start="4504" end="20445"/>
<rpm:provides>
<rpm:entry name="libwireplumber-0.4.so.0()(64bit)"/>
<rpm:entry name="libwireplumber-module-default-nodes-api.so()(64bit)"/>
<rpm:entry name="libwireplumber-module-default-nodes.so()(64bit)"/>
<rpm:entry name="libwireplumber-module-default-profile.so()(64bit)"/>
<rpm:entry name="libwireplumber-module-file-monitor-api.so()(64bit)"/>
<rpm:entry name="libwireplumber-module-logind.so()(64bit)"/>
<rpm:entry name="libwireplumber-module-lua-scripting.so()(64bit)"/>
<rpm:entry name="libwireplumber-module-metadata.so()(64bit)"/>
<rpm:entry name="libwireplumber-module-mixer-api.so()(64bit)"/>
<rpm:entry name="libwireplumber-module-portal-permissionstore.so()(64bit)"/>
<rpm:entry name="libwireplumber-module-reserve-device.so()(64bit)"/>
<rpm:entry name="libwireplumber-module-si-audio-adapter.so()(64bit)"/>
<rpm:entry name="libwireplumber-module-si-audio-endpoint.so()(64bit)"/>
<rpm:entry name="libwireplumber-module-si-node.so()(64bit)"/>
<rpm:entry name="libwireplumber-module-si-standard-link.so()(64bit)"/>
<rpm:entry name="wireplumber-libs" flags="EQ" epoch="0" ver="0.4.10" rel="1.fc36"/>
<rpm:entry name="wireplumber-libs(x86-64)" flags="EQ" epoch="0" ver="0.4.10" rel="1.fc36"/>
</rpm:provides>
<rpm:requires>
<rpm:entry name="libgcc_s.so.1()(64bit)"/>
<rpm:entry name="libgcc_s.so.1(GCC_3.0)(64bit)"/>
<rpm:entry name="libgcc_s.so.1(GCC_3.3.1)(64bit)"/>
<rpm:entry name="libgio-2.0.so.0()(64bit)"/>
<rpm:entry name="libglib-2.0.so.0()(64bit)"/>
<rpm:entry name="libgmodule-2.0.so.0()(64bit)"/>
<rpm:entry name="libgobject-2.0.so.0()(64bit)"/>
<rpm:entry name="liblua-5.4.so()(64bit)"/>
<rpm:entry name="libm.so.6()(64bit)"/>
<rpm:entry name="libm.so.6(GLIBC_2.2.5)(64bit)"/>
<rpm:entry name="libpipewire-0.3.so.0()(64bit)"/>
<rpm:entry name="libsystemd.so.0()(64bit)"/>
<rpm:entry name="libsystemd.so.0(LIBSYSTEMD_209)(64bit)"/>
<rpm:entry name="rtld(GNU_HASH)"/>
<rpm:entry name="libc.so.6(GLIBC_2.14)(64bit)"/>
</rpm:requires>
<rpm:recommends>
<rpm:entry name="wireplumber(x86-64)" flags="EQ" epoch="0" ver="0.4.10" rel="1.fc36"/>
</rpm:recommends>
</format>
</package>
<package type="rpm">
<name>xfce4-panel</name>
<arch>x86_64</arch>
<version epoch="0" ver="4.16.4" rel="1.fc36"/>
<checksum type="sha256" pkgid="YES">1eecad127499d557f9d97562a1c65d9c881f3f63431546007a9ed714997b909c</checksum>
<summary>Next generation panel for Xfce</summary>
<description>This package includes the panel for the Xfce desktop environment.</description>
<packager>Fedora Project</packager>
<url>http://www.xfce.org/</url>
<time file="1657165686" build="1650113596"/>
<size package="1071292" installed="5255122" archive="5281072"/>
<location href="packages/x/xfce4-panel-4.16.4-1.fc36.x86_64.rpm"/>
<format>
<rpm:license>GPLv2+ and LGPLv2+</rpm:license>
<rpm:vendor>Fedora Project</rpm:vendor>
<rpm:group>Unspecified</rpm:group>
<rpm:buildhost>buildvm-x86-16.iad2.fedoraproject.org</rpm:buildhost>
<rpm:sourcerpm>xfce4-panel-4.16.4-1.fc36.src.rpm</rpm:sourcerpm>
<rpm:header-range start="4504" end="38505"/>
<rpm:provides>
<rpm:entry name="application()"/>
<rpm:entry name="application(panel-desktop-handler.desktop)"/>
<rpm:entry name="application(panel-preferences.desktop)"/>
<rpm:entry name="config(xfce4-panel)" flags="EQ" epoch="0" ver="4.16.4" rel="1.fc36"/>
<rpm:entry name="libxfce4panel-2.0.so.4()(64bit)"/>
<rpm:entry name="mimehandler(application/x-desktop)"/>
<rpm:entry name="xfce4-panel" flags="EQ" epoch="0" ver="4.16.4" rel="1.fc36"/>
<rpm:entry name="xfce4-panel(x86-64)" flags="EQ" epoch="0" ver="4.16.4" rel="1.fc36"/>
</rpm:provides>
<rpm:requires>
<rpm:entry name="/usr/bin/sh"/>
<rpm:entry name="libX11.so.6()(64bit)"/>
<rpm:entry name="libXext.so.6()(64bit)"/>
<rpm:entry name="libatk-1.0.so.0()(64bit)"/>
<rpm:entry name="libcairo-gobject.so.2()(64bit)"/>
<rpm:entry name="libcairo.so.2()(64bit)"/>
<rpm:entry name="libdbusmenu-glib.so.4()(64bit)"/>
<rpm:entry name="libdbusmenu-gtk3.so.4()(64bit)"/>
<rpm:entry name="libexo-2.so.0()(64bit)"/>
<rpm:entry name="libgarcon-1.so.0()(64bit)"/>
<rpm:entry name="libgarcon-gtk3-1.so.0()(64bit)"/>
<rpm:entry name="libgdk-3.so.0()(64bit)"/>
<rpm:entry name="libgdk_pixbuf-2.0.so.0()(64bit)"/>
<rpm:entry name="libgio-2.0.so.0()(64bit)"/>
<rpm:entry name="libglib-2.0.so.0()(64bit)"/>
<rpm:entry name="libgmodule-2.0.so.0()(64bit)"/>
<rpm:entry name="libgobject-2.0.so.0()(64bit)"/>
<rpm:entry name="libgthread-2.0.so.0()(64bit)"/>
<rpm:entry name="libgtk-3.so.0()(64bit)"/>
<rpm:entry name="libharfbuzz.so.0()(64bit)"/>
<rpm:entry name="libm.so.6()(64bit)"/>
<rpm:entry name="libm.so.6(GLIBC_2.2.5)(64bit)"/>
<rpm:entry name="libpango-1.0.so.0()(64bit)"/>
<rpm:entry name="libpangocairo-1.0.so.0()(64bit)"/>
<rpm:entry name="libwnck-3.so.0()(64bit)"/>
<rpm:entry name="libxfce4ui-2.so.0()(64bit)"/>
<rpm:entry name="libxfce4util.so.7()(64bit)"/>
<rpm:entry name="libxfconf-0.so.3()(64bit)"/>
<rpm:entry name="libz.so.1()(64bit)"/>
<rpm:entry name="rtld(GNU_HASH)"/>
<rpm:entry name="libc.so.6(GLIBC_2.34)(64bit)"/>
</rpm:requires>
<rpm:obsoletes>
<rpm:entry name="orage" flags="LT" epoch="0" ver="4.12.1" rel="17.fc34"/>
<rpm:entry name="xfce4-cellmodem-plugin" flags="LT" epoch="0" ver="0.0.5" rel="29.fc34"/>
<rpm:entry name="xfce4-embed-plugin" flags="LT" epoch="0" ver="1.6.0" rel="13.fc34"/>
<rpm:entry name="xfce4-hardware-monitor-plugin" flags="LT" epoch="0" ver="1.6.0" rel="11"/>
<rpm:entry name="xfce4-kbdleds-plugins" flags="LT" epoch="0" ver="0.0.6" rel="20.fc34"/>
</rpm:obsoletes>
<file>/etc/xdg/xfce4/panel/default.xml</file>
<file>/usr/bin/xfce4-panel</file>
<file>/usr/bin/xfce4-popup-applicationsmenu</file>
<file>/usr/bin/xfce4-popup-directorymenu</file>
<file>/usr/bin/xfce4-popup-windowmenu</file>
</format>
</package>
<package type="rpm">
<name>xfce4-power-manager</name>
<arch>x86_64</arch>
<version epoch="0" ver="4.16.0" rel="5.fc36"/>
<checksum type="sha256" pkgid="YES">48697b6e83646e702d83523acd4a25df546129a1a11f3fbb81724c30d58e9c21</checksum>
<summary>Power management for the Xfce desktop environment</summary>
<description>Xfce Power Manager uses the information and facilities provided by HAL to
display icons and handle user callbacks in an interactive Xfce session.
Xfce Power Preferences allows authorised users to set policy and change
preferences.</description>
<packager>Fedora Project</packager>
<url>http://goodies.xfce.org/projects/applications/xfce4-power-manager</url>
<time file="1657165686" build="1654865507"/>
<size package="753300" installed="4646874" archive="4674064"/>
<location href="packages/x/xfce4-power-manager-4.16.0-5.fc36.x86_64.rpm"/>
<format>
<rpm:license>GPLv2+</rpm:license>
<rpm:vendor>Fedora Project</rpm:vendor>
<rpm:group>Unspecified</rpm:group>
<rpm:buildhost>buildvm-x86-21.iad2.fedoraproject.org</rpm:buildhost>
<rpm:sourcerpm>xfce4-power-manager-4.16.0-5.fc36.src.rpm</rpm:sourcerpm>
<rpm:header-range start="4504" end="36733"/>
<rpm:provides>
<rpm:entry name="application()"/>
<rpm:entry name="application(xfce4-power-manager-settings.desktop)"/>
<rpm:entry name="config(xfce4-power-manager)" flags="EQ" epoch="0" ver="4.16.0" rel="5.fc36"/>
<rpm:entry name="libxfce4powermanager.so()(64bit)"/>
<rpm:entry name="metainfo()"/>
<rpm:entry name="metainfo(xfce4-power-manager.appdata.xml)"/>
<rpm:entry name="xfce4-power-manager" flags="EQ" epoch="0" ver="4.16.0" rel="5.fc36"/>
<rpm:entry name="xfce4-power-manager(x86-64)" flags="EQ" epoch="0" ver="4.16.0" rel="5.fc36"/>
</rpm:provides>
<rpm:requires>
<rpm:entry name="libX11.so.6()(64bit)"/>
<rpm:entry name="libXext.so.6()(64bit)"/>
<rpm:entry name="libXrandr.so.2()(64bit)"/>
<rpm:entry name="libatk-1.0.so.0()(64bit)"/>
<rpm:entry name="libcairo-gobject.so.2()(64bit)"/>
<rpm:entry name="libcairo.so.2()(64bit)"/>
<rpm:entry name="libgdk-3.so.0()(64bit)"/>
<rpm:entry name="libgdk_pixbuf-2.0.so.0()(64bit)"/>
<rpm:entry name="libgio-2.0.so.0()(64bit)"/>
<rpm:entry name="libglib-2.0.so.0()(64bit)"/>
<rpm:entry name="libgmodule-2.0.so.0()(64bit)"/>
<rpm:entry name="libgobject-2.0.so.0()(64bit)"/>
<rpm:entry name="libgtk-3.so.0()(64bit)"/>
<rpm:entry name="libharfbuzz.so.0()(64bit)"/>
<rpm:entry name="libm.so.6()(64bit)"/>
<rpm:entry name="libm.so.6(GLIBC_2.2.5)(64bit)"/>
<rpm:entry name="libm.so.6(GLIBC_2.27)(64bit)"/>
<rpm:entry name="libnotify.so.4()(64bit)"/>
<rpm:entry name="libpango-1.0.so.0()(64bit)"/>
<rpm:entry name="libpangocairo-1.0.so.0()(64bit)"/>
<rpm:entry name="libupower-glib.so.3()(64bit)"/>
<rpm:entry name="libxfce4panel-2.0.so.4()(64bit)"/>
<rpm:entry name="libxfce4ui-2.so.0()(64bit)"/>
<rpm:entry name="libxfce4util.so.7()(64bit)"/>
<rpm:entry name="libxfconf-0.so.3()(64bit)"/>
<rpm:entry name="libz.so.1()(64bit)"/>
<rpm:entry name="polkit"/>
<rpm:entry name="rtld(GNU_HASH)"/>
<rpm:entry name="upower" flags="GE" epoch="0" ver="0.99"/>
<rpm:entry name="xfce4-panel" flags="GE" epoch="0" ver="4.16"/>
<rpm:entry name="libc.so.6(GLIBC_2.34)(64bit)"/>
</rpm:requires>
<file>/etc/xdg/autostart/xfce4-power-manager.desktop</file>
<file>/etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xfce4-power-manager.xml</file>
<file>/usr/bin/xfce4-power-manager</file>
<file>/usr/bin/xfce4-power-manager-settings</file>
<file>/usr/sbin/xfce4-pm-helper</file>
<file>/usr/sbin/xfpm-power-backlight-helper</file>
</format>
</package>
<package type="rpm">
<name>xfce4-terminal</name>
<arch>x86_64</arch>
<version epoch="0" ver="1.0.3" rel="1.fc36"/>
<checksum type="sha256" pkgid="YES">6b6d0d941c16988b4c68ae473f1af141dedafe691922c0c88f6f3ef82baeef79</checksum>
<summary>Terminal Emulator for the Xfce Desktop environment</summary>
<description>Xfce4-terminal is a lightweight and easy to use terminal emulator application
with many advanced features including drop down, tabs, unlimited scrolling,
full colors, fonts, transparent backgrounds, and more.</description>
<packager>Fedora Project</packager>
<url>http://docs.xfce.org/apps/terminal/start</url>
<time file="1657165686" build="1652445299"/>
<size package="711256" installed="3699394" archive="3715232"/>
<location href="packages/x/xfce4-terminal-1.0.3-1.fc36.x86_64.rpm"/>
<format>
<rpm:license>GPLv2+</rpm:license>
<rpm:vendor>Fedora Project</rpm:vendor>
<rpm:group>Unspecified</rpm:group>
<rpm:buildhost>buildvm-x86-15.iad2.fedoraproject.org</rpm:buildhost>
<rpm:sourcerpm>xfce4-terminal-1.0.3-1.fc36.src.rpm</rpm:sourcerpm>
<rpm:header-range start="4504" end="25361"/>
<rpm:provides>
<rpm:entry name="Terminal" flags="EQ" epoch="0" ver="1.0.3" rel="1.fc36"/>
<rpm:entry name="application()"/>
<rpm:entry name="application(xfce4-terminal-settings.desktop)"/>
<rpm:entry name="application(xfce4-terminal.desktop)"/>
<rpm:entry name="xfce4-terminal" flags="EQ" epoch="0" ver="1.0.3" rel="1.fc36"/>
<rpm:entry name="xfce4-terminal(x86-64)" flags="EQ" epoch="0" ver="1.0.3" rel="1.fc36"/>
</rpm:provides>
<rpm:requires>
<rpm:entry name="dejavu-sans-mono-fonts"/>
<rpm:entry name="libX11.so.6()(64bit)"/>
<rpm:entry name="libcairo.so.2()(64bit)"/>
<rpm:entry name="libgdk-3.so.0()(64bit)"/>
<rpm:entry name="libgdk_pixbuf-2.0.so.0()(64bit)"/>
<rpm:entry name="libgio-2.0.so.0()(64bit)"/>
<rpm:entry name="libglib-2.0.so.0()(64bit)"/>
<rpm:entry name="libgobject-2.0.so.0()(64bit)"/>
<rpm:entry name="libgtk-3.so.0()(64bit)"/>
<rpm:entry name="libpango-1.0.so.0()(64bit)"/>
<rpm:entry name="libvte-2.91.so.0()(64bit)"/>
<rpm:entry name="libxfce4ui-2.so.0()(64bit)"/>
<rpm:entry name="libxfce4util.so.7()(64bit)"/>
<rpm:entry name="libxfconf-0.so.3()(64bit)"/>
<rpm:entry name="rtld(GNU_HASH)"/>
<rpm:entry name="libc.so.6(GLIBC_2.34)(64bit)"/>
</rpm:requires>
<rpm:obsoletes>
<rpm:entry name="Terminal" flags="LT" epoch="0" ver="0.4.8" rel="5"/>
</rpm:obsoletes>
<file>/usr/bin/xfce4-terminal</file>
</format>
</package>
</metadata>
"""
).strip()
class StaticFetcher:
def __init__(self):
self.content: dict[str, str] = {}
async def __call__(self, url: str) -> Optional[str]:
2022-08-08 13:19:32 +10:00
return self.content.get(url)
2022-07-07 14:02:46 +10:00
async def test_typical_index():
fetcher = StaticFetcher()
fetcher.content["https://example.com/repodata/repomd.xml"] = REPOMD_XML
fetcher.content[
"https://example.com/repodata/d4888f04f95ac067af4d997d35c6d345cbe398563d777d017a3634c9ed6148cf-primary.xml.gz"
] = PRIMARY_XML
entries: list[GeneratedIndex] = []
async for entry in autoindex("https://example.com", fetcher=fetcher):
entries.append(entry)
# It should generate some entries
assert entries
entries.sort(key=lambda e: e.relative_dir)
# First check that the directory structure was reproduced.
assert [e.relative_dir for e in entries] == [
"",
"packages",
"packages/w",
"packages/x",
"repodata",
]
by_relative_dir: dict[str, GeneratedIndex] = {}
for entry in entries:
by_relative_dir[entry.relative_dir] = entry
# Sanity check a few links expected to appear in each.
assert '<a href="repodata/">' in by_relative_dir[""].content
assert '<a href="packages/">' in by_relative_dir[""].content
assert '<a href="w/">' in by_relative_dir["packages"].content
assert '<a href="x/">' in by_relative_dir["packages"].content
assert (
'<a href="284769ec79daa9e0a3b0129bb6260cc6271c90c4fe02b43dfa7cdf7635fb803f-filelists.xml.gz">'
in by_relative_dir["repodata"].content
)
assert (
'<a href="wireplumber-libs-0.4.10-1.fc36.x86_64.rpm">'
in by_relative_dir["packages/w"].content
)
assert (
'<a href="xfce4-terminal-1.0.3-1.fc36.x86_64.rpm">'
in by_relative_dir["packages/x"].content
)