forge-srpm-macros/tests/vectors.yaml

596 lines
18 KiB
YAML

# Copyright (C) 2023 Maxwell G <maxwell@gtmx.me>
# SPDX-License-Identifier: GPL-1.0-or-later
# This file contains a large set of test vectors for the forge macros.
# Please use real projects and real versions so the resulting URLs can be
# checked for accuracy.
---
_anchors:
zeroidx: &zeroidx
- version
- forgesource
- forgesetupargs
- archivename
- archiveext
- archiveurl
- topdir
- extractdir
- repo
- scm
- forgename
zeroidx_commit: &zeroidx_commit
- commit
- distprefix
- _forgeversionsuffix
- forgesource
- forgesetupargs
- archivename
- archiveext
- archiveurl
- topdir
- extractdir
- repo
- scm
- forgename
zeroidx_branch: &zeroidx_branch
- branch
- distprefix
- _forgeversionsuffix
- forgesource
- forgesetupargs
- archivename
- archiveext
- archiveurl
- topdir
- extractdir
- repo
- scm
- forgename
cases:
- id: smoke
description: Make sure the test fixtures work
evals:
- abc
- xyz
stdout_contains: |
abc
xyz
defines:
hello: world
expected:
"__patch": "/usr/bin/patch"
"hello": "world"
"nil": ""
expected_undefined:
- bskdksksks
- id: github_forgesource_simple
description: Ensure that a simple Github repository works as expected
defines:
version: "2.14.0"
forgeurl: https://github.com/ansible/ansible
# Test %setup without expanding
setup: "SETUP"
expected:
forgesource: "%{forgeurl}/archive/v%{version}/ansible-%{version}.tar.gz"
forgesetupargs: "-n ansible-%{version}"
archivename: "ansible-%{version}"
archiveext: "tar.gz"
archiveurl: "%{forgesource}"
topdir: "ansible-%{version}"
extractdir: "ansible-%{version}"
repo: ansible
scm: git
forgesetup: "SETUP -q -n ansible-%{version}\n"
"forgesetup -z0": "%forgesetup"
"forgesetup -a": "%forgesetup"
forgename: github
zero_indexed: *zeroidx
expected_undefined:
- distprefix
- id: github_forgesource_no_v
description: >
Ensure that a simple Github repository that doesn't use v-prefixed tags
works as expected.
defines:
version: "7.0.0"
# Disable v-prefixed tags
tag: "%{version}"
forgeurl: https://github.com/ansible-collections/community.general
expected:
forgesource: "%{forgeurl}/archive/%{version}/community.general-%{version}.tar.gz"
forgesetupargs: "-n community.general-%{version}"
archivename: "community.general-%{version}"
archiveext: "tar.gz"
archiveurl: "%{forgesource}"
topdir: "community.general-%{version}"
extractdir: "community.general-%{version}"
repo: community.general
scm: git
forgename: github
zero_indexed: *zeroidx
expected_undefined:
- distprefix
- id: github_forgesource_commit
defines:
forgeurl: "https://github.com/ansible/ansible"
commit: "520bb66f8ab6d53750f48f024287572962d975fa"
version: 2.14.0
expected:
forgesource: "%{forgeurl}/archive/%{commit}/ansible-%{commit}.tar.gz"
forgesetupargs: "-n ansible-%{commit}"
archivename: "ansible-%{commit}"
archiveext: "tar.gz"
archiveurl: "%{forgesource}"
topdir: "ansible-%{commit}"
extractdir: "ansible-%{commit}"
repo: ansible
scm: git
distprefix: ".git520bb66"
forgename: github
zero_indexed: *zeroidx_commit
- id: github_forgesource_branch
defines:
forgeurl: "https://github.com/ansible/ansible"
branch: main
expected:
forgesource: "%{forgeurl}/archive/main/ansible-main.tar.gz"
forgesetupargs: "-n ansible-main"
archivename: "ansible-main"
archiveext: "tar.gz"
archiveurl: "%{forgesource}"
topdir: "ansible-main"
extractdir: "ansible-main"
repo: ansible
scm: git
distprefix: ".gitmain"
forgename: github
zero_indexed: *zeroidx_branch
# Different semantics are used when a date is specified
- id: github_forgesource_commit_with_date
defines:
forgeurl: "https://github.com/ansible/ansible"
commit: "520bb66f8ab6d53750f48f024287572962d975fa"
version: 2.14.0
date: "20230813"
expected:
forgesource: "%{forgeurl}/archive/%{commit}/ansible-%{commit}.tar.gz"
forgesetupargs: "-n ansible-%{commit}"
archivename: "ansible-%{commit}"
archiveext: "tar.gz"
archiveurl: "%{forgesource}"
topdir: "ansible-%{commit}"
extractdir: "ansible-%{commit}"
repo: ansible
scm: git
distprefix: ".20230813git520bb66"
_forgeversionsuffix0: ".20230813git520bb66"
forgename: github
zero_indexed: *zeroidx_commit
- id: gitlab_forgesource_simple
description: Ensure that a simple Gitlab repository works as expected
defines:
version: "1.16.2"
forgeurl: "https://gitlab.com/fdroid/fdroidclient"
expected:
forgesource: "%{forgeurl}/-/archive/%{version}/fdroidclient-%{version}.tar.bz2"
forgesetupargs: "-n fdroidclient-%{version}"
archivename: "fdroidclient-%{version}"
archiveext: "tar.bz2"
archiveurl: "%{forgesource}"
topdir: "fdroidclient-%{version}"
extractdir: "fdroidclient-%{version}"
repo: fdroidclient
scm: git
forgename: gitlab
zero_indexed: *zeroidx
expected_undefined:
- distprefix
- id: gitlab_forgesource_commit
defines:
commit: 9530f51f2c8ad05399c42a9bae845fc6c34de8e2
forgeurl: "https://gitlab.com/fdroid/fdroidclient/"
expected:
forgesource: "%{forgeurl}/-/archive/%{commit}/fdroidclient-%{commit}.tar.bz2"
forgesetupargs: "-n fdroidclient-%{commit}"
archivename: "fdroidclient-%{commit}"
archiveext: "tar.bz2"
archiveurl: "%{forgesource}"
topdir: "fdroidclient-%{commit}"
extractdir: "fdroidclient-%{commit}"
repo: fdroidclient
scm: git
distprefix: ".git9530f51"
_forgeversionsuffix: ".git9530f51"
forgename: gitlab
zero_indexed: *zeroidx_commit
- id: test_gitea_simple
defines:
- version: "0.243.1"
forgeurl: "https://gitea.com/gitea/act"
name: "act"
- version: "1.19.0-2"
forgeurl: "https://codeberg.org/forgejo/forgejo"
name: "forgejo"
expected:
forgesource: "%{forgeurl}/archive/%{version}.tar.gz"
forgesetupargs: "-n %{name}"
archivename: "%{version}"
archiveext: "tar.gz"
archiveurl: "%{forgeurl}/archive/%{version}.tar.gz"
topdir: "%{name}"
extractdir: "%{name}"
repo: "%{name}"
scm: git
forgename: gitea.com
zero_indexed: *zeroidx
expected_undefined:
- distprefix
- id: test_gitea_commit
defines:
commit: "f5dbac2d6ad8cbbba0fdb2642281dcfd0573bcf8"
forgeurl: "https://codeberg.org/forgejo/forgejo/"
name: "forgejo"
expected:
forgesource: "%{forgeurl}/archive/%{commit}.tar.gz"
forgesetupargs: "-n %{name}"
archivename: "%{commit}"
archiveext: "tar.gz"
archiveurl: "%{forgeurl}/archive/%{commit}.tar.gz"
topdir: "%{name}"
extractdir: "%{name}"
repo: "%{name}"
scm: git
distprefix: ".gitf5dbac2"
_forgeversionsuffix: ".gitf5dbac2"
forgename: gitea.com
zero_indexed: *zeroidx_commit
- id: test_sourcehut_simple
defines:
# Sourcehut eats its own dogfood
name: "git.sr.ht"
forgeurl: "https://git.sr.ht/~sircmpwn/git.sr.ht"
version: "0.84.2"
expected:
forgesource: "%{forgeurl}/archive/%{version}.tar.gz#/git.sr.ht-%{version}.tar.gz"
forgesetupargs: "-n %{name}-%{version}"
archivename: "%{name}-%{version}"
archiveext: "tar.gz"
archiveurl: "%{forgeurl}/archive/%{version}.tar.gz"
topdir: "%{name}-%{version}"
extractdir: "%{name}-%{version}"
repo: "%{name}"
scm: git
forgename: sourcehut
zero_indexed: *zeroidx
expected_undefined:
- distprefix
- id: test_sourcehut_commit
defines:
# Sourcehut eats its own dogfood
name: "git.sr.ht"
forgeurl: "https://git.sr.ht/~sircmpwn/git.sr.ht"
commit: "e1244429d405417fc10259968bf6102e284cae6d"
expected:
forgesource: "%{forgeurl}/archive/%{commit}.tar.gz#/git.sr.ht-%{commit}.tar.gz"
forgesetupargs: "-n %{name}-%{commit}"
archivename: "%{name}-%{commit}"
archiveext: "tar.gz"
archiveurl: "%{forgeurl}/archive/%{commit}.tar.gz"
topdir: "%{name}-%{commit}"
extractdir: "%{name}-%{commit}"
repo: "%{name}"
scm: git
distprefix: ".gite124442"
_forgeversionsuffix: ".gite124442"
forgename: sourcehut
zero_indexed: *zeroidx_commit
- id: sourcehut_v_prefix
description: Ensure that a v-prefixed sourcehut repository works as expected.
defines:
# With and without trailing slash
- version: "0.5.0"
tag: "v%{version}"
name: "fedrq"
forgeurl: "https://git.sr.ht/~gotmax23/%{name}"
- version: "0.5.0"
tag: "v%{version}"
name: "fedrq"
forgeurl: "https://git.sr.ht/~gotmax23/%{name}/"
expected:
forgesource: "%{forgeurl}/archive/v0.5.0.tar.gz#/fedrq-0.5.0.tar.gz"
forgesetupargs: "-n fedrq-v%{version}"
archivename: "fedrq-%{version}"
archiveext: "tar.gz"
archiveurl: "%{forgeurl}/archive/v0.5.0.tar.gz"
topdir: "fedrq-v%{version}"
extractdir: "fedrq-v%{version}"
repo: fedrq
scm: git
forgename: sourcehut
zero_indexed: *zeroidx
expected_undefined:
- distprefix
- id: pagure_simple
defines:
# pagure
- version: "5.13.3"
tag: "5.13.3"
forgeurl: https://pagure.io/pagure
name: pagure
_vp_: "5.13.3"
# pagure_fork
- version: "5.13.3"
tag: "5.13.3"
forgeurl: https://pagure.io/fork/gotmax23/pagure/
name: pagure
_vp_: "5.13.3"
_np_: gotmax23-
# pagure_ns
- version: "1.5.0"
tag: "v1.5.0"
forgeurl: https://pagure.io/GoSIG/go2rpm
_np_: "GoSIG-"
name: go2rpm
_vp_: "v1.5.0"
# pagure_ns_fork
- version: "1.5.0"
tag: "v1.5.0"
forgeurl: https://pagure.io/fork/gotmax23/GoSIG/go2rpm
_np_: "gotmax23-GoSIG-"
name: go2rpm
_vp_: "v1.5.0"
expected:
forgesource: "%{forgeurl}/archive/%{_vp_}/%{?_np_}%{name}-%{_vp_}.tar.gz"
forgesetupargs: "-n %{?_np_}%{name}-%{_vp_}"
archivename: "%{?_np_}%{name}-%{_vp_}"
archiveext: "tar.gz"
archiveurl: "%{forgesource}"
topdir: "%{?_np_}%{name}-%{_vp_}"
extractdir: "%{?_np_}%{name}-%{_vp_}"
repo: "%{name}"
scm: git
zero_indexed: *zeroidx
expected_undefined:
- distprefix
- id: pagure_commit
defines:
# pagure
- forgeurl: https://pagure.io/pagure/
name: pagure
commit: "d11ec7e9efb10aa2f075debc0574579e2fb46b54"
_vp_: "d11ec7e9efb10aa2f075debc0574579e2fb46b54"
_cp_: ".gitd11ec7e"
# pagure_fork
- forgeurl: https://pagure.io/fork/gotmax23/pagure/
name: pagure
_np_: gotmax23-
commit: "d11ec7e9efb10aa2f075debc0574579e2fb46b54"
_vp_: "d11ec7e9efb10aa2f075debc0574579e2fb46b54"
_cp_: ".gitd11ec7e"
# pagure_ns
- forgeurl: https://pagure.io/GoSIG/go2rpm/
name: go2rpm
_np_: "GoSIG-"
commit: "4aaaa6b38fe67bb452e86d18d66dcbb3de231a58"
_vp_: "4aaaa6b38fe67bb452e86d18d66dcbb3de231a58"
_cp_: ".git4aaaa6b"
# pagure_ns_fork
- forgeurl: "https://pagure.io/fork/gotmax23/GoSIG/go2rpm/"
name: go2rpm
_np_: "gotmax23-GoSIG-"
commit: "4aaaa6b38fe67bb452e86d18d66dcbb3de231a58"
_vp_: "4aaaa6b38fe67bb452e86d18d66dcbb3de231a58"
_cp_: ".git4aaaa6b"
expected:
forgesource: "%{forgeurl}/archive/%{_vp_}/%{?_np_}%{name}-%{_vp_}.tar.gz"
forgesetupargs: "-n %{?_np_}%{name}-%{_vp_}"
archivename: "%{?_np_}%{name}-%{_vp_}"
archiveext: "tar.gz"
archiveurl: "%{forgesource}"
topdir: "%{?_np_}%{name}-%{_vp_}"
extractdir: "%{?_np_}%{name}-%{_vp_}"
repo: "%{name}"
scm: git
distprefix: "%{_cp_}"
_forgeversionsuffix: "%{_cp_}"
zero_indexed: *zeroidx_commit
- id: bitbucket_simple
defines:
- forgeurl: https://bitbucket.org/creachadair/shell
commit: 9479d77f2b7f1037f17e7eaac680bf9718c28499
version: 0.0.7
expected:
archiveext: "tar.bz2"
archiveurl: "%{forgeurl}/get/%{commit}.tar.bz2"
archivename: "creachadair-shell-9479d77f2b7f"
forgesource: "%{archiveurl}#/%{archivename}.%{archiveext}"
topdir: "%{archivename}"
extractdir: "%{archivename}"
owner: "creachadair"
repo: "shell"
scm: git
distprefix: ".git9479d77"
_forgeversionsuffix: ".git9479d77"
forgename: bitbucket.org
zero_indexed: *zeroidx_commit
- id: googlesource_simple
defines:
- forgeurl: https://go.googlesource.com/text
version: 0.17.0
expected:
archiveurl: "%{forgeurl}/+archive/v0.17.0.tar.gz"
forgesource: "%{archiveurl}#/text-v0.17.0.tar.gz"
forgesetupargs: "-c -n text-v0.17.0"
archivename: "text-v0.17.0"
archiveext: "tar.gz"
extractdir: "text-v0.17.0"
topdir: ""
repo: text
scm: git
forgename: code.googlesource.com
zero_indexed: *zeroidx
expected_undefined:
- distprefix
# Listing topdir0 here removes it from zero_indexed
- topdir0
- id: googlesource_commit
defines:
- forgeurl: https://code.googlesource.com/re2
commit: 6dcd83d60f7944926bfd308cc13979fc53dd69ca
date: "20240701"
expected:
archiveurl: "%{forgeurl}/+archive/%{commit}.tar.gz"
forgesource: "%{archiveurl}#/re2-%{commit}.tar.gz"
forgesetupargs: "-c -n re2-%{commit}"
archivename: "re2-%{commit}"
archiveext: "tar.gz"
extractdir: "re2-%{commit}"
topdir: ""
repo: re2
scm: git
distprefix: .20240701git6dcd83d
_forgeversionsuffix: "%{distprefix}"
forgename: code.googlesource.com
zero_indexed: *zeroidx_commit
expected_undefined:
# Listing topdir0 here removes it from zero_indexed
- topdir0
- id: multisource_all
defines: &multisource_defines
- forgeurl0: https://github.com/ansible/ansible
version: "2.15.2"
forgeurl1: https://github.com/ansible/ansible-documentation
version1: "2.15.2"
setup: "SETUP"
expected: &multisource_expected
forgesource: "%{forgeurl}/archive/v%{version}/ansible-%{version}.tar.gz"
forgesetupargs: "-n ansible-%{version}"
archivename: "ansible-%{version}"
archiveext: "tar.gz"
archiveurl: "%{forgesource}"
topdir: "ansible-%{version}"
extractdir: "ansible-%{version}"
repo: ansible
scm: git
forgesource1: "%{forgeurl1}/archive/v%{version}/ansible-documentation-%{version}.tar.gz"
forgesetupargs1: "-T -D -b 1 -n ansible-documentation-%{version}"
archivename1: "ansible-documentation-%{version}"
archiveext1: "tar.gz"
archiveurl1: "%{forgesource1}"
topdir1: "ansible-documentation-%{version}"
extractdir1: "ansible-documentation-%{version}"
scm1: git
forgesetup: "SETUP -q %{forgesetupargs}\n"
"forgesetup -a": |
SETUP -q %{forgesetupargs}
SETUP -q %{forgesetupargs1}
forgename: github
zero_indexed: *zeroidx
expected_undefined:
- distprefix
evals:
- "%forgemeta -a"
- id: multisource_separate
defines: *multisource_defines
expected: *multisource_expected
zero_indexed: *zeroidx
expected_undefined:
- distprefix
evals:
- "%forgemeta -z0"
- "%forgemeta -z1"
- id: forge_version_error_1
evals:
- "%{forgeversion}"
should_fail: true
stderr_contains: >
You must define %version0 (%global version0 <VERSION>) prior to invoking
this macro.
- id: unit_forge_version
defines:
# Check with version
- version: "1.0.0"
_forgeversionsuffix0: ".abcd"
_forgeversionsuffix5: ".sxyz"
_forgeversionsuffix9999: ".s456"
# Used for distprefix check
distprefix0: "something"
distprefix5: "something"
distprefix9999: "something"
# Check with version0
- version0: "1.0.0"
_forgeversionsuffix0: ".abcd"
_forgeversionsuffix5: ".sxyz"
_forgeversionsuffix9999: ".s456"
# %version and %version0 don't agree. %version0 should win.
- version0: "1.0.0"
version: "2.0.0"
_forgeversionsuffix0: ".abcd"
_forgeversionsuffix5: ".sxyz"
_forgeversionsuffix9999: ".s456"
expected:
"forgeversion": "1.0.0^abcd"
# Make sure distprefix is cleared out
"undefined distprefix": "1"
"undefined distprefix0": "1"
"undefined distprefix5": "1"
"undefined distprefix9999": "1"
"forgeversion -z0": "1.0.0^abcd"
# Only first with pre-release
"forgeversion -p": "1.0.0~abcd"
# Basic all usage
"forgeversion -a": "1.0.0^abcd.sxyz.s456"
# Pre-release
"forgeversion -p -a": "1.0.0~abcd.sxyz.s456"
# -z12 doesn't exist
"forgeversion -z12": "1.0.0"
"forgeversion -p -z12": "1.0.0"
# override %version with -b
"forgeversion -b 1.1.0": "1.1.0^abcd"
- id: custom_forge_gitea
defines:
- version: "5.11.1"
forgeurl: "https://opendev.org/openstack/pbr"
forgename: "gitea.com"
- version0: "5.11.1"
forgeurl0: "https://opendev.org/openstack/pbr"
forgename0: "gitea.com"
expected:
forgesource: "https://opendev.org/openstack/pbr/archive/%{version}.tar.gz"
forgesetupargs: "-n pbr"
archivename: "%{version}"
archiveext: "tar.gz"
archiveurl: "%{forgesource}"
topdir: "pbr"
extractdir: "pbr"
repo: "pbr"
scm: git
forgename: gitea.com
zero_indexed: *zeroidx
expected_undefined:
- distprefix