From cf5c1b91ed7a4a363b7c02814ec16f675441749b Mon Sep 17 00:00:00 2001 From: bbhtt Date: Mon, 1 Jul 2024 23:33:37 +0530 Subject: [PATCH] Change rDNS check implementation io.github.foo.... -> User must be reachable at https://github.com/foo page.codeberg.foo... -> User must be reachable at https://codeberg.org/foo io.sourceforge.foo... or net.sourceforge.foo -> Project must be reachable at https://sourceforge.net/projects/foo io.gitlab.foo, io.frama.foo, org.gnome.gitlab.foo, org.freedesktop..gitlab.foo -> foo must be a user (/api/v4/users?username=foo) or a toplevel group (/api/v4/groups/foo) Anything else: reverse everything except last component and check website --- flatpak_builder_lint/checks/appid.py | 81 +++++++---- flatpak_builder_lint/domainutils.py | 127 ++++++++++++++++-- ...> io.gitlab.wwwwwwwwwwwwwwwwwwwww.bar.png} | 0 ...io.gitlab.wwwwwwwwwwwwwwwwwwwww.bar.xml.gz | Bin 0 -> 705 bytes .../org.freedesktop.gitlab.foo.bar.xml.gz | Bin 688 -> 0 bytes ...lab.wwwwwwwwwwwwwwwwwwwww.bar.appdata.xml} | 4 +- ....gitlab.wwwwwwwwwwwwwwwwwwwww.bar.desktop} | 2 +- ...> io.gitlab.wwwwwwwwwwwwwwwwwwwww.bar.png} | 0 tests/builddir/wrong-rdns-appid/metadata | 2 +- .../io.frama.wwwwwwwwwwwww.bar.json | 13 ++ .../io.github.wwwwwwwwwwwww.bar.json | 13 ++ .../io.github.wwwwwwwwwwwww.foo.bar.json | 13 ++ .../io.gitlab.deeplomatics.bar.json | 13 ++ ...oo.bar.json => io.gitlab.flathub.foo.json} | 2 +- .../io.gitlab.wwwwwwwwwwwww.bar.json | 13 ++ ...bar.json => io.sourceforge.xampp.bar.json} | 2 +- .../org.freedesktop.gitlab.bbhtt.foo.json | 13 ++ .../org.freedesktop.gitlab.mesa.foo.json | 13 ++ ....freedesktop.gitlab.wwwwwwwwwwwww.bar.json | 13 ++ .../org.gnome.gitlab.World.Identity.json | 13 ++ .../org.gnome.gitlab.wwwwwwwwwwwww.bar.json | 13 ++ ...ar.json => page.codeberg.forgejo.foo.json} | 2 +- .../page.codeberg.wwwwwwwwwwwww.foo.json | 13 ++ tests/test_manifest.py | 16 ++- 24 files changed, 333 insertions(+), 48 deletions(-) rename tests/builddir/wrong-rdns-appid/files/share/app-info/icons/flatpak/128x128/{org.freedesktop.gitlab.foo.bar.png => io.gitlab.wwwwwwwwwwwwwwwwwwwww.bar.png} (100%) create mode 100644 tests/builddir/wrong-rdns-appid/files/share/app-info/xmls/io.gitlab.wwwwwwwwwwwwwwwwwwwww.bar.xml.gz delete mode 100644 tests/builddir/wrong-rdns-appid/files/share/app-info/xmls/org.freedesktop.gitlab.foo.bar.xml.gz rename tests/builddir/wrong-rdns-appid/files/share/appdata/{org.freedesktop.gitlab.foo.bar.appdata.xml => io.gitlab.wwwwwwwwwwwwwwwwwwwww.bar.appdata.xml} (86%) rename tests/builddir/wrong-rdns-appid/files/share/applications/{org.freedesktop.gitlab.foo.bar.desktop => io.gitlab.wwwwwwwwwwwwwwwwwwwww.bar.desktop} (76%) rename tests/builddir/wrong-rdns-appid/files/share/icons/hicolor/128x128/apps/{org.freedesktop.gitlab.foo.bar.png => io.gitlab.wwwwwwwwwwwwwwwwwwwww.bar.png} (100%) create mode 100644 tests/manifests/domain_checks/io.frama.wwwwwwwwwwwww.bar.json create mode 100644 tests/manifests/domain_checks/io.github.wwwwwwwwwwwww.bar.json create mode 100644 tests/manifests/domain_checks/io.github.wwwwwwwwwwwww.foo.bar.json create mode 100644 tests/manifests/domain_checks/io.gitlab.deeplomatics.bar.json rename tests/manifests/domain_checks/{io.gitlab.foo.bar.json => io.gitlab.flathub.foo.json} (84%) create mode 100644 tests/manifests/domain_checks/io.gitlab.wwwwwwwwwwwww.bar.json rename tests/manifests/domain_checks/{io.github.ghost.foo.bar.json => io.sourceforge.xampp.bar.json} (83%) create mode 100644 tests/manifests/domain_checks/org.freedesktop.gitlab.bbhtt.foo.json create mode 100644 tests/manifests/domain_checks/org.freedesktop.gitlab.mesa.foo.json create mode 100644 tests/manifests/domain_checks/org.freedesktop.gitlab.wwwwwwwwwwwww.bar.json create mode 100644 tests/manifests/domain_checks/org.gnome.gitlab.World.Identity.json create mode 100644 tests/manifests/domain_checks/org.gnome.gitlab.wwwwwwwwwwwww.bar.json rename tests/manifests/domain_checks/{io.github.ghost.bar.json => page.codeberg.forgejo.foo.json} (83%) create mode 100644 tests/manifests/domain_checks/page.codeberg.wwwwwwwwwwwww.foo.json diff --git a/flatpak_builder_lint/checks/appid.py b/flatpak_builder_lint/checks/appid.py index 891017ff..e146cb63 100644 --- a/flatpak_builder_lint/checks/appid.py +++ b/flatpak_builder_lint/checks/appid.py @@ -58,37 +58,68 @@ def _validate(self, appid: Optional[str], is_extension: bool) -> None: return if domainutils.is_app_on_flathub(appid): return - appid_domain = domainutils.get_domain(appid) - if appid_domain is None: - self.errors.add("appid-domain-not-found") - self.info.add( - f"appid-domain-not-found: Domain for {appid}" - + " cannot be determined" + if ( + appid.startswith( + ( + "io.github.", + "page.codeberg.", + "io.sourceforge.", + "net.sourceforge.", + ) ) - return - else: - url_http = f"http://{appid_domain}" - url_https = f"https://{appid_domain}" - if appid_domain.endswith( - (".github.io", ".gitlab.io", ".codeberg.io", ".frama.io") - ) or appid_domain.startswith("sourceforge.net/projects/"): - if appid_domain.endswith(".gitlab.io"): - if not domainutils.check_url_ok(url_https): - self.errors.add("appid-url-not-reachable") - self.info.add(f"appid-url-not-reachable: Tried {url_https}") - else: - if not domainutils.check_url(url_https): - self.errors.add("appid-url-not-reachable") - self.info.add(f"appid-url-not-reachable: Tried {url_https}") - else: + and domainutils.get_user_url(appid) is not None + ): + url = f"https://{domainutils.get_user_url(appid)}" + if not domainutils.check_url(url): + self.errors.add("appid-url-not-reachable") + self.info.add(f"appid-url-not-reachable: Tried {url}") + if appid.startswith( + ( + "io.gitlab.", + "io.frama.", + "org.gnome.gitlab.", + "org.freedesktop.gitlab.", + ) + ): + # Toplevel group names cannot be the same as username + if ( + domainutils.get_gitlab_user(appid) is not None + and domainutils.get_gitlab_group(appid) is not None + ): + url_user = f"https://{domainutils.get_gitlab_user(appid)}" + url_group = f"https://{domainutils.get_gitlab_group(appid)}" if not ( - domainutils.check_url(url_https) - or domainutils.check_url(url_http) + domainutils.check_gitlab_user(url_user) + or domainutils.check_gitlab_group(url_group) ): self.errors.add("appid-url-not-reachable") self.info.add( - f"appid-url-not-reachable: Tried {url_http}, {url_https}" + f"appid-url-not-reachable: Tried {url_user}, {url_group}" ) + if ( + not appid.startswith( + ( + "io.github.", + "io.frama.", + "page.codeberg.", + "io.sourceforge.", + "net.sourceforge.", + "io.gitlab.", + "org.gnome.gitlab.", + "org.freedesktop.gitlab.", + ) + ) + and domainutils.get_domain(appid) is not None + ): + url_http = f"http://{domainutils.get_domain(appid)}" + url_https = f"https://{domainutils.get_domain(appid)}" + if not ( + domainutils.check_url(url_https) or domainutils.check_url(url_http) + ): + self.errors.add("appid-url-not-reachable") + self.info.add( + f"appid-url-not-reachable: Tried {url_http}, {url_https}" + ) def check_manifest(self, manifest: dict) -> None: appid = manifest.get("id") diff --git a/flatpak_builder_lint/domainutils.py b/flatpak_builder_lint/domainutils.py index 644f343c..96d6e4aa 100644 --- a/flatpak_builder_lint/domainutils.py +++ b/flatpak_builder_lint/domainutils.py @@ -13,12 +13,24 @@ def check_url(url: str) -> bool: return ret -def check_url_ok(url: str) -> bool: - assert url.endswith(".gitlab.io") +def check_gitlab_user(url: str) -> bool: + assert url.startswith("https://") ret = False try: r = requests.get(url, allow_redirects=False, timeout=10) - if r.status_code == 200: + if len(r.json()) > 0 and isinstance(r.json()[0].get("id"), int): + ret = True + except requests.exceptions.RequestException: + pass + return ret + + +def check_gitlab_group(url: str) -> bool: + assert url.startswith("https://") + ret = False + try: + r = requests.get(url, allow_redirects=False, timeout=10) + if len(r.json()) > 0 and isinstance(r.json().get("id"), int): ret = True except requests.exceptions.RequestException: pass @@ -32,22 +44,111 @@ def demangle(name: str) -> str: return name +def get_user_url(appid: str) -> str | None: + assert appid.startswith( + ("io.github.", "page.codeberg.", "io.sourceforge.", "net.sourceforge.") + ) + assert appid.count(".") >= 2 + + url = None + # None of these have subdomains so all + # we need is the third or fourth component of appid + # to get user url + # as long as the user exists, only they can deploy a pages site + # at user.github.io + third_cpt = demangle(appid.split(".")[2]).lower() + + if appid.startswith("io.github."): + url = f"github.com/{third_cpt}" + elif appid.startswith("page.codeberg."): + url = f"codeberg.org/{third_cpt}" + # third component is project name in case of sourceforge + elif appid.startswith(("io.sourceforge.", "net.sourceforge.")): + url = f"sourceforge.net/projects/{third_cpt}" + + return url + + +def get_gitlab_user(appid: str) -> str | None: + assert appid.startswith( + ("io.gitlab.", "io.frama.", "org.gnome.gitlab.", "org.freedesktop.gitlab.") + ) + assert appid.count(".") >= 2 + + url = None + third_cpt = demangle(appid.split(".")[2]).lower() + fourth_cpt = demangle(appid.split(".")[3]).lower() + + # The third component/fourth component can be the username + # or a toplevel group name. Return the username API url here + + # API is used because gitlab returns HTTP 200 on non existent + # user URLs. This is to be passed in check_gitlab_user() + + if appid.startswith("io.gitlab."): + url = f"gitlab.com/api/v4/users?username={third_cpt}" + elif appid.startswith("io.frama."): + url = f"framagit.org/api/v4/users?username={third_cpt}" + elif appid.startswith("org.gnome.gitlab."): + url = f"gitlab.gnome.org/api/v4/users?username={fourth_cpt}" + elif appid.startswith("org.freedesktop.gitlab."): + url = f"gitlab.freedesktop.org/api/v4/users?username={fourth_cpt}" + + return url + + +def get_gitlab_group(appid: str) -> str | None: + assert appid.startswith( + ("io.gitlab.", "io.frama.", "org.gnome.gitlab.", "org.freedesktop.gitlab.") + ) + assert appid.count(".") >= 2 + + url = None + third_cpt = demangle(appid.split(".")[2]).lower() + fourth_cpt = demangle(appid.split(".")[3]).lower() + + # The third component/fourth component can be the toplevel + # group name. Return the groupname API url here + + # API is used because gitlab returns HTTP 200 on non existent + # user URLs. This is to be passed in check_gitlab_group() + + if appid.startswith("io.gitlab."): + url = f"gitlab.com/api/v4/groups/{third_cpt}" + elif appid.startswith("io.frama."): + url = f"framagit.org/api/v4/groups/{third_cpt}" + elif appid.startswith("org.gnome.gitlab."): + url = f"gitlab.gnome.org/api/v4/groups/{fourth_cpt}" + elif appid.startswith("org.freedesktop.gitlab."): + url = f"gitlab.freedesktop.org/api/v4/groups/{fourth_cpt}" + + return url + + def get_domain(appid: str) -> str | None: + assert not appid.startswith( + ( + "io.github.", + "io.frama.", + "io.gitlab.", + "page.codeberg.", + "io.sourceforge.", + "net.sourceforge.", + "org.gnome.gitlab.", + "org.freedesktop.gitlab.", + ) + ) + assert appid.count(".") >= 2 + domain = None - if appid.startswith("org.gnome."): + if appid.startswith("org.gnome.") and not appid.startswith("org.gnome.gitlab."): domain = "gnome.org" elif appid.startswith("org.kde."): domain = "kde.org" - elif appid.startswith("org.freedesktop."): + elif appid.startswith("org.freedesktop.") and not appid.startswith( + "org.freedesktop.gitlab." + ): domain = "freedesktop.org" - elif appid.startswith(("io.github.", "io.gitlab.", "page.codeberg.", "io.frama.")): - tld = appid.split(".")[0] - demangled = [demangle(i) for i in appid.split(".")[1:3]] - demangled.insert(0, tld) - domain = ".".join(reversed(demangled)).lower() - elif appid.startswith(("io.sourceforge.", "net.sourceforge.")): - proj = demangle(appid.split(".")[2]) - domain = f"sourceforge.net/projects/{proj}".lower() else: tld = appid.split(".")[0] demangled = [demangle(i) for i in appid.split(".")[:-1][1:]] diff --git a/tests/builddir/wrong-rdns-appid/files/share/app-info/icons/flatpak/128x128/org.freedesktop.gitlab.foo.bar.png b/tests/builddir/wrong-rdns-appid/files/share/app-info/icons/flatpak/128x128/io.gitlab.wwwwwwwwwwwwwwwwwwwww.bar.png similarity index 100% rename from tests/builddir/wrong-rdns-appid/files/share/app-info/icons/flatpak/128x128/org.freedesktop.gitlab.foo.bar.png rename to tests/builddir/wrong-rdns-appid/files/share/app-info/icons/flatpak/128x128/io.gitlab.wwwwwwwwwwwwwwwwwwwww.bar.png diff --git a/tests/builddir/wrong-rdns-appid/files/share/app-info/xmls/io.gitlab.wwwwwwwwwwwwwwwwwwwww.bar.xml.gz b/tests/builddir/wrong-rdns-appid/files/share/app-info/xmls/io.gitlab.wwwwwwwwwwwwwwwwwwwww.bar.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..09e12d8714880085141460beaafc7fa1623dd36c GIT binary patch literal 705 zcmV;y0zUm8iwFpE>4Ihe18HwAXK8e7VPYeelu7#Iu6Yu}`#2aP{inw8eVl9*p zT9a?R`M4S!u4`LnpO3z6cnf-R46q8GKxzYaJuuqiLI0?s408mz%gp(h#jKA8E>G9NCTp7{3^=k5wcXi zIexw;G_g@NhKIk0JxTL3egFL-e$)yzCLY{i2&U)qC-}X#yMmrA!yfv2Q(>(B1Kh7M zcAy-T-+%p>r1A6%#_W}6z;{-Tq8i<(k_ zdcrpjz>BvV#e@u5nk|x01nE2+Udi}EDz#uVy%0&!cm|AR8rPkew9I+16uAz_{U&U& zS>CdAx=8XY%a-|ap7O;kgXKKQmYa;_9}<(zLd7NN)wCejA)9@!lqAj0TGA`#1-TB$ z{kdZ1X-LfN;(Ccet^;ykSqx`G|GXz$Ye~js-&QXAYTswVO;4TYpDutCNqL+{Yl}@A zJM|DE&8(XwaT3uHWkCXS7fo(75RZSp^QZ_bVzJB@w`o3|MwfFlnZ@auhrT2#B`}*;SFKA#o4qAGiv^b-~0?+*m7h?pk*#`gsWJFP+ literal 0 HcmV?d00001 diff --git a/tests/builddir/wrong-rdns-appid/files/share/app-info/xmls/org.freedesktop.gitlab.foo.bar.xml.gz b/tests/builddir/wrong-rdns-appid/files/share/app-info/xmls/org.freedesktop.gitlab.foo.bar.xml.gz deleted file mode 100644 index b51bbf2b01dcfdeb95c5a149d037a656a37024cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 688 zcmV;h0#E%PiwForLUv{V18;I?E@pCNWn^V@YjkgLE@x?UY++(9W^ZpUVqtPFcx`L| zy;Z@En=lZ)?^js9R>6S;mQ;jQd)Qv8s)zQxGBAJ}V_UY_WdFWHAR)WeYTGK>1Cl-S z{Kjv_%w%_mPLfBkPH45IVX&kGRH-YWnl1hL<9?CSyZk0Ab!W5!$rV7`s(@1*vT=%DtH8`4cLc~2`}CDMaEv(PheMCVLYnIGn40^6oCWp zj07@WlyGCDDER;(d*NHMw^}vCR?20}MzSR0s`L8r*1@O;7nZ@Oy1{89Q6XGwkJ|%vk*kO8tR5>Dppc9q@bnBy6s26N{e08e zc7A^~@1>_F#E`oV*(bNty)7?7^+sx51$(g*9aMr3G1;&)!;azW?zD1@GhVYF{b5Sp zK=?`kym(hAF63OGRUFQxkJfYWN(L8FnFXWSg-CWR>qIz-ApLn5L$Z2bDPfeHwM18}3vwNh z`+dc%qq#7*@%0LWTnFU7rkLy^{;8k*@o(c`Q69(2gT)4nU3V0&xpj*$2q~LT79? - org.freedesktop.gitlab.foo.bar + io.gitlab.wwwwwwwwwwwwwwwwwwwww.bar org.freedesktop.gitlab.foo.bar.desktop - org.freedesktop.gitlab.foo.bar.desktop + io.gitlab.wwwwwwwwwwwwwwwwwwwww.bar.desktop CC0-1.0 GPL-2.0+ Foo Bar diff --git a/tests/builddir/wrong-rdns-appid/files/share/applications/org.freedesktop.gitlab.foo.bar.desktop b/tests/builddir/wrong-rdns-appid/files/share/applications/io.gitlab.wwwwwwwwwwwwwwwwwwwww.bar.desktop similarity index 76% rename from tests/builddir/wrong-rdns-appid/files/share/applications/org.freedesktop.gitlab.foo.bar.desktop rename to tests/builddir/wrong-rdns-appid/files/share/applications/io.gitlab.wwwwwwwwwwwwwwwwwwwww.bar.desktop index 10396959..266806cf 100644 --- a/tests/builddir/wrong-rdns-appid/files/share/applications/org.freedesktop.gitlab.foo.bar.desktop +++ b/tests/builddir/wrong-rdns-appid/files/share/applications/io.gitlab.wwwwwwwwwwwwwwwwwwwww.bar.desktop @@ -3,7 +3,7 @@ Name=Example GenericName=Example Comment=Example Exec=Example %U -Icon=org.freedesktop.gitlab.foo.bar +Icon=io.gitlab.wwwwwwwwwwwwwwwwwwwww.bar Type=Application Categories=Network; Version=1.1 diff --git a/tests/builddir/wrong-rdns-appid/files/share/icons/hicolor/128x128/apps/org.freedesktop.gitlab.foo.bar.png b/tests/builddir/wrong-rdns-appid/files/share/icons/hicolor/128x128/apps/io.gitlab.wwwwwwwwwwwwwwwwwwwww.bar.png similarity index 100% rename from tests/builddir/wrong-rdns-appid/files/share/icons/hicolor/128x128/apps/org.freedesktop.gitlab.foo.bar.png rename to tests/builddir/wrong-rdns-appid/files/share/icons/hicolor/128x128/apps/io.gitlab.wwwwwwwwwwwwwwwwwwwww.bar.png diff --git a/tests/builddir/wrong-rdns-appid/metadata b/tests/builddir/wrong-rdns-appid/metadata index abd311e1..1614b455 100644 --- a/tests/builddir/wrong-rdns-appid/metadata +++ b/tests/builddir/wrong-rdns-appid/metadata @@ -1,5 +1,5 @@ [Application] -name=io.gitlab.foo.bar +name=io.gitlab.wwwwwwwwwwwwwwwwwwwww.bar runtime=org.gnome.Platform/x86_64/45 sdk=org.gnome.Sdk/x86_64/45 command=foo diff --git a/tests/manifests/domain_checks/io.frama.wwwwwwwwwwwww.bar.json b/tests/manifests/domain_checks/io.frama.wwwwwwwwwwwww.bar.json new file mode 100644 index 00000000..3573c787 --- /dev/null +++ b/tests/manifests/domain_checks/io.frama.wwwwwwwwwwwww.bar.json @@ -0,0 +1,13 @@ +{ + "app-id": "io.frama.wwwwwwwwwwwww.bar", + "runtime": "foo", + "sdk": "bar", + "command": "foo", + "finish-args": ["--foo=bar"], + "modules": [ + { + "name": "module2", + "buildsystem": "autotools" + } + ] +} diff --git a/tests/manifests/domain_checks/io.github.wwwwwwwwwwwww.bar.json b/tests/manifests/domain_checks/io.github.wwwwwwwwwwwww.bar.json new file mode 100644 index 00000000..535ce892 --- /dev/null +++ b/tests/manifests/domain_checks/io.github.wwwwwwwwwwwww.bar.json @@ -0,0 +1,13 @@ +{ + "app-id": "io.github.wwwwwwwwwwwww.bar", + "runtime": "foo", + "sdk": "bar", + "command": "foo", + "finish-args": ["--foo=bar"], + "modules": [ + { + "name": "module2", + "buildsystem": "autotools" + } + ] +} diff --git a/tests/manifests/domain_checks/io.github.wwwwwwwwwwwww.foo.bar.json b/tests/manifests/domain_checks/io.github.wwwwwwwwwwwww.foo.bar.json new file mode 100644 index 00000000..5eaa5de2 --- /dev/null +++ b/tests/manifests/domain_checks/io.github.wwwwwwwwwwwww.foo.bar.json @@ -0,0 +1,13 @@ +{ + "app-id": "io.github.wwwwwwwwwwwww.foo.bar", + "runtime": "foo", + "sdk": "bar", + "command": "foo", + "finish-args": ["--foo=bar"], + "modules": [ + { + "name": "module2", + "buildsystem": "autotools" + } + ] +} diff --git a/tests/manifests/domain_checks/io.gitlab.deeplomatics.bar.json b/tests/manifests/domain_checks/io.gitlab.deeplomatics.bar.json new file mode 100644 index 00000000..e11c5f8a --- /dev/null +++ b/tests/manifests/domain_checks/io.gitlab.deeplomatics.bar.json @@ -0,0 +1,13 @@ +{ + "app-id": "io.gitlab.deeplomatics.bar", + "runtime": "foo", + "sdk": "bar", + "command": "foo", + "finish-args": ["--foo=bar"], + "modules": [ + { + "name": "module2", + "buildsystem": "autotools" + } + ] +} diff --git a/tests/manifests/domain_checks/io.gitlab.foo.bar.json b/tests/manifests/domain_checks/io.gitlab.flathub.foo.json similarity index 84% rename from tests/manifests/domain_checks/io.gitlab.foo.bar.json rename to tests/manifests/domain_checks/io.gitlab.flathub.foo.json index 9cabeefe..83ab45be 100644 --- a/tests/manifests/domain_checks/io.gitlab.foo.bar.json +++ b/tests/manifests/domain_checks/io.gitlab.flathub.foo.json @@ -1,5 +1,5 @@ { - "app-id": "io.gitlab.foo.bar", + "app-id": "io.gitlab.flathub.foo", "runtime": "foo", "sdk": "bar", "command": "foo", diff --git a/tests/manifests/domain_checks/io.gitlab.wwwwwwwwwwwww.bar.json b/tests/manifests/domain_checks/io.gitlab.wwwwwwwwwwwww.bar.json new file mode 100644 index 00000000..cade058d --- /dev/null +++ b/tests/manifests/domain_checks/io.gitlab.wwwwwwwwwwwww.bar.json @@ -0,0 +1,13 @@ +{ + "app-id": "io.gitlab.wwwwwwwwwwwww.bar", + "runtime": "foo", + "sdk": "bar", + "command": "foo", + "finish-args": ["--foo=bar"], + "modules": [ + { + "name": "module2", + "buildsystem": "autotools" + } + ] +} diff --git a/tests/manifests/domain_checks/io.github.ghost.foo.bar.json b/tests/manifests/domain_checks/io.sourceforge.xampp.bar.json similarity index 83% rename from tests/manifests/domain_checks/io.github.ghost.foo.bar.json rename to tests/manifests/domain_checks/io.sourceforge.xampp.bar.json index 5fc51d54..1d7247ff 100644 --- a/tests/manifests/domain_checks/io.github.ghost.foo.bar.json +++ b/tests/manifests/domain_checks/io.sourceforge.xampp.bar.json @@ -1,5 +1,5 @@ { - "app-id": "io.github.ghost.foo.bar", + "app-id": "io.sourceforge.xampp.bar", "runtime": "foo", "sdk": "bar", "command": "foo", diff --git a/tests/manifests/domain_checks/org.freedesktop.gitlab.bbhtt.foo.json b/tests/manifests/domain_checks/org.freedesktop.gitlab.bbhtt.foo.json new file mode 100644 index 00000000..6f17a09a --- /dev/null +++ b/tests/manifests/domain_checks/org.freedesktop.gitlab.bbhtt.foo.json @@ -0,0 +1,13 @@ +{ + "app-id": "org.freedesktop.gitlab.bbhtt.foo", + "runtime": "foo", + "sdk": "bar", + "command": "foo", + "finish-args": ["--foo=bar"], + "modules": [ + { + "name": "module2", + "buildsystem": "autotools" + } + ] +} diff --git a/tests/manifests/domain_checks/org.freedesktop.gitlab.mesa.foo.json b/tests/manifests/domain_checks/org.freedesktop.gitlab.mesa.foo.json new file mode 100644 index 00000000..473a6c28 --- /dev/null +++ b/tests/manifests/domain_checks/org.freedesktop.gitlab.mesa.foo.json @@ -0,0 +1,13 @@ +{ + "app-id": "org.freedesktop.gitlab.mesa.foo", + "runtime": "foo", + "sdk": "bar", + "command": "foo", + "finish-args": ["--foo=bar"], + "modules": [ + { + "name": "module2", + "buildsystem": "autotools" + } + ] +} diff --git a/tests/manifests/domain_checks/org.freedesktop.gitlab.wwwwwwwwwwwww.bar.json b/tests/manifests/domain_checks/org.freedesktop.gitlab.wwwwwwwwwwwww.bar.json new file mode 100644 index 00000000..d4219302 --- /dev/null +++ b/tests/manifests/domain_checks/org.freedesktop.gitlab.wwwwwwwwwwwww.bar.json @@ -0,0 +1,13 @@ +{ + "app-id": "org.freedesktop.gitlab.wwwwwwwwwwwww.bar", + "runtime": "foo", + "sdk": "bar", + "command": "foo", + "finish-args": ["--foo=bar"], + "modules": [ + { + "name": "module2", + "buildsystem": "autotools" + } + ] +} diff --git a/tests/manifests/domain_checks/org.gnome.gitlab.World.Identity.json b/tests/manifests/domain_checks/org.gnome.gitlab.World.Identity.json new file mode 100644 index 00000000..c8271d47 --- /dev/null +++ b/tests/manifests/domain_checks/org.gnome.gitlab.World.Identity.json @@ -0,0 +1,13 @@ +{ + "app-id": "org.gnome.gitlab.World.Identity", + "runtime": "foo", + "sdk": "bar", + "command": "foo", + "finish-args": ["--foo=bar"], + "modules": [ + { + "name": "module2", + "buildsystem": "autotools" + } + ] +} diff --git a/tests/manifests/domain_checks/org.gnome.gitlab.wwwwwwwwwwwww.bar.json b/tests/manifests/domain_checks/org.gnome.gitlab.wwwwwwwwwwwww.bar.json new file mode 100644 index 00000000..5e1b8829 --- /dev/null +++ b/tests/manifests/domain_checks/org.gnome.gitlab.wwwwwwwwwwwww.bar.json @@ -0,0 +1,13 @@ +{ + "app-id": "org.gnome.gitlab.wwwwwwwwwwwww.bar", + "runtime": "foo", + "sdk": "bar", + "command": "foo", + "finish-args": ["--foo=bar"], + "modules": [ + { + "name": "module2", + "buildsystem": "autotools" + } + ] +} diff --git a/tests/manifests/domain_checks/io.github.ghost.bar.json b/tests/manifests/domain_checks/page.codeberg.forgejo.foo.json similarity index 83% rename from tests/manifests/domain_checks/io.github.ghost.bar.json rename to tests/manifests/domain_checks/page.codeberg.forgejo.foo.json index 736de4ce..f42ac242 100644 --- a/tests/manifests/domain_checks/io.github.ghost.bar.json +++ b/tests/manifests/domain_checks/page.codeberg.forgejo.foo.json @@ -1,5 +1,5 @@ { - "app-id": "io.github.ghost.bar", + "app-id": "page.codeberg.forgejo.foo", "runtime": "foo", "sdk": "bar", "command": "foo", diff --git a/tests/manifests/domain_checks/page.codeberg.wwwwwwwwwwwww.foo.json b/tests/manifests/domain_checks/page.codeberg.wwwwwwwwwwwww.foo.json new file mode 100644 index 00000000..b24cbcdc --- /dev/null +++ b/tests/manifests/domain_checks/page.codeberg.wwwwwwwwwwwww.foo.json @@ -0,0 +1,13 @@ +{ + "app-id": "page.codeberg.wwwwwwwwwwwww.foo", + "runtime": "foo", + "sdk": "bar", + "command": "foo", + "finish-args": ["--foo=bar"], + "modules": [ + { + "name": "module2", + "buildsystem": "autotools" + } + ] +} diff --git a/tests/test_manifest.py b/tests/test_manifest.py index 576788b8..44853df6 100644 --- a/tests/test_manifest.py +++ b/tests/test_manifest.py @@ -29,11 +29,15 @@ def test_appid_too_many_cpts() -> None: def test_appid_url_not_reachable() -> None: for i in ( - "tests/manifests/domain_checks/io.github.ghost.bar.json", - "tests/manifests/domain_checks/io.github.ghost.foo.bar.json", - "tests/manifests/domain_checks/io.gitlab.foo.bar.json", + "tests/manifests/domain_checks/io.github.wwwwwwwwwwwww.bar.json", + "tests/manifests/domain_checks/io.github.wwwwwwwwwwwww.foo.bar.json", + "tests/manifests/domain_checks/io.gitlab.wwwwwwwwwwwww.bar.json", "tests/manifests/domain_checks/io.sourceforge.wwwwwwwwwwwwwwww.bar.json", "tests/manifests/domain_checks/ch.wwwwww.bar.json", + "tests/manifests/domain_checks/org.gnome.gitlab.wwwwwwwwwwwww.bar.json", + "tests/manifests/domain_checks/org.freedesktop.gitlab.wwwwwwwwwwwww.bar.json", + "tests/manifests/domain_checks/io.frama.wwwwwwwwwwwww.bar.json", + "tests/manifests/domain_checks/page.codeberg.wwwwwwwwwwwww.foo.json", ): ret = run_checks(i) errors = set(ret["errors"]) @@ -44,6 +48,12 @@ def test_appid_url_is_reachable() -> None: for i in ( "tests/manifests/domain_checks/io.github.flatpak.flatpak.json", "tests/manifests/domain_checks/org.gnome.gitlab.YaLTeR.Identity.json", + "tests/manifests/domain_checks/org.gnome.gitlab.World.Identity.json", + "tests/manifests/domain_checks/io.gitlab.flathub.foo.json", + "tests/manifests/domain_checks/org.freedesktop.gitlab.mesa.foo.json", + "tests/manifests/domain_checks/org.freedesktop.gitlab.bbhtt.foo.json", + "tests/manifests/domain_checks/page.codeberg.forgejo.foo.json", + "tests/manifests/domain_checks/io.sourceforge.xampp.bar.json", ): ret = run_checks(i) assert "errors" not in ret