Name:           tmt
Version:        1.42.0.dev39+g585e6973
Release:        1.20250127143415592001.pr3331.39.g585e6973%{?dist}
Summary:        Test Management Tool

License:        MIT
URL:            https://github.com/teemtee/tmt
Source0:        tmt-1.42.0.dev39+g585e6973.tar.gz

BuildArch:      noarch
BuildRequires:  python3-devel

Requires:       git-core rsync sshpass

%if 0%{?fedora} < 40
Obsoletes:      python3-tmt < %{version}-%{release}
Provides:       tmt-report-html == %{version}-%{release}
Obsoletes:      tmt-report-html < %{version}-%{release}
Provides:       tmt-report-junit == %{version}-%{release}
Obsoletes:      tmt-report-junit < %{version}-%{release}
Provides:       tmt-report-polarion == %{version}-%{release}
Obsoletes:      tmt-report-polarion < %{version}-%{release}
Provides:       tmt-report-reportportal == %{version}-%{release}
Obsoletes:      tmt-report-reportportal < %{version}-%{release}
%endif

Recommends:     bash-completion

%py_provides    python3-tmt

%global _metapackage_description %{expand:
This is a metapackage bringing in extra dependencies for tmt.
It contains no code, just makes sure the dependencies are installed.}

%description
The tmt Python module and command line tool implement the test
metadata specification (L1 and L2) and allows easy test execution.

%pyproject_extras_subpkg -n tmt export-polarion
%pyproject_extras_subpkg -n tmt report-junit
%pyproject_extras_subpkg -n tmt report-polarion
%pyproject_extras_subpkg -n tmt link-jira

%package -n     tmt+test-convert
Summary:        Dependencies required for tmt test import and export
Provides:       tmt-test-convert == %{version}-%{release}
%if 0%{?fedora} < 40
Obsoletes:      tmt-test-convert < %{version}-%{release}
%endif
Requires:       tmt == %{version}-%{release}
Requires:       make
Requires:       python3-bugzilla
Requires:       python3-nitrate
Requires:       python3-html2text
Requires:       python3-markdown

%description -n tmt+test-convert %_metapackage_description

%package -n     tmt+provision-container
Summary:        Dependencies required for tmt container provisioner
Provides:       tmt-provision-container == %{version}-%{release}
%if 0%{?fedora} < 40
Obsoletes:      tmt-provision-container < %{version}-%{release}
%endif
Requires:       tmt == %{version}-%{release}
Requires:       podman
Requires:       (ansible or ansible-collection-containers-podman)

%description -n tmt+provision-container %_metapackage_description

%package -n     tmt+provision-virtual
Summary:        Dependencies required for tmt virtual machine provisioner
Provides:       tmt-provision-virtual == %{version}-%{release}
%if 0%{?fedora} < 40
Obsoletes:      tmt-provision-virtual < %{version}-%{release}
%endif
Requires:       tmt == %{version}-%{release}
Requires:       python3-testcloud >= 0.11.3
Requires:       libvirt-daemon-config-network
Requires:       openssh-clients
Requires:       (ansible or ansible-core)
# Recommend qemu system emulators for supported arches
Recommends:     qemu-kvm-core
%if 0%{?fedora}
Recommends:     qemu-system-aarch64-core
Recommends:     qemu-system-ppc-core
Recommends:     qemu-system-s390x-core
Recommends:     qemu-system-x86-core
%endif

%description -n tmt+provision-virtual %_metapackage_description

%package -n     tmt+provision-bootc
Summary:        Dependencies required for tmt bootc machine provisioner
Provides:       tmt-provision-bootc == %{version}-%{release}
Requires:       tmt == %{version}-%{release}
Requires:       tmt+provision-virtual == %{version}-%{release}
Requires:       podman
Recommends:     podman-machine

%description -n tmt+provision-bootc %_metapackage_description

%package -n     tmt+provision-beaker
Summary:        Dependencies required for tmt beaker provisioner
Provides:       tmt-provision-beaker == %{version}-%{release}
%if 0%{?fedora} < 40
Obsoletes:      tmt-provision-beaker < %{version}-%{release}
%endif
Requires:       tmt == %{version}-%{release}
Requires:       python3-mrack-beaker

%description -n tmt+provision-beaker %_metapackage_description

# Replace with pyproject_extras_subpkg at some point
%package -n     tmt+all
Summary:        Extra dependencies for the Test Management Tool
Provides:       tmt-all == %{version}-%{release}
%if 0%{?fedora} < 40
Obsoletes:      tmt-all < %{version}-%{release}
%endif
Requires:       tmt+test-convert == %{version}-%{release}
Requires:       tmt+export-polarion == %{version}-%{release}
Requires:       tmt+provision-container == %{version}-%{release}
Requires:       tmt+provision-virtual == %{version}-%{release}
Requires:       tmt+provision-beaker == %{version}-%{release}
Requires:       tmt+report-junit == %{version}-%{release}
Requires:       tmt+report-polarion == %{version}-%{release}

%description -n tmt+all
All extra dependencies of the Test Management Tool. Install this
package to have all available plugins ready for testing.

%prep
%autosetup -p1 -n tmt-1.42.0.dev39+g585e6973

%generate_buildrequires
%pyproject_buildrequires

%build
export SETUPTOOLS_SCM_PRETEND_VERSION=%{version}
%pyproject_wheel

%install
%pyproject_install
%pyproject_save_files tmt

mkdir -p %{buildroot}%{_mandir}/man1
install -pm 644 tmt.1 %{buildroot}%{_mandir}/man1
mkdir -p %{buildroot}%{_datadir}/bash-completion/completions
install -pm 644 completions/bash/%{name} %{buildroot}%{_datadir}/bash-completion/completions/%{name}
mkdir -p %{buildroot}/etc/%{name}/
install -pm 644 %{name}/steps/provision/mrack/mrack* %{buildroot}/etc/%{name}/

%check
%pyproject_check_import

%files -n tmt -f %{pyproject_files}
%doc README.rst examples
%{_bindir}/tmt
%{_mandir}/man1/tmt.1.gz
%{_datadir}/bash-completion/completions/%{name}

%files -n tmt+provision-container -f %{_pyproject_ghost_distinfo}
%files -n tmt+provision-virtual -f %{_pyproject_ghost_distinfo}
%files -n tmt+provision-bootc -f %{_pyproject_ghost_distinfo}
%files -n tmt+test-convert -f %{_pyproject_ghost_distinfo}
%files -n tmt+provision-beaker -f %{_pyproject_ghost_distinfo}
%config(noreplace) %{_sysconfdir}/%{name}/mrack*
%files -n tmt+all -f %{_pyproject_ghost_distinfo}

%changelog
* Mon Jan 27 2025 Packit <hello@packit.dev> - 1.42.0.dev39+g585e6973-1.20250127143415592001.pr3331.39.g585e6973
- Fix a possibly undefined test_end_time (Otto Sabart)
- Use index instead of checking the log_path (Otto Sabart)
- Revert "Non-functional changes, remove unnecessary" (Otto Sabart)
- Small refactoring of subresult start time (Otto Sabart)
- Propagate the write_out_failures also for subresults (Otto Sabart)
- Implements failures method for SubResult same way as for Result (Otto Sabart)
- Remove the TMT_TREE check for subtests (Otto Sabart)
- More fixes to tests/subtests (Otto Sabart)
- More test fixes, still WIP (Otto Sabart)
- Prepare draft tests for beakerlib phases (Otto Sabart)
- Non-functional changes, remove unnecessary (Otto Sabart)
- Upload the subresult logs (Otto Sabart)
- Separate code for uploading result logs into a separate method (Otto Sabart)
- Finish the child item, not a parent item (Otto Sabart)
- More changes to reportportal tests to make it more stable and handle the subresult parent item (Otto Sabart)
- Add special handling of subresult items which do have the child items (Otto Sabart)
- First fixes of reportportal tests (Otto Sabart)
- Improve the log messages (Otto Sabart)
- Ensure the subresult end-time is set correctly (Otto Sabart)
- Prepare basic subresults tests (Otto Sabart)
- Differentiate between start times and end times (Otto Sabart)
- Add very basic release note (Otto Sabart)
- Add more hints/todos (Otto Sabart)
- Import the tmt subresults into the ReportPortal (Otto Sabart)
- Add a trivial handler for `:ref:` role when rendering CLI help (#3440) (Miloš Prchlík)
- Define the `releaser` role (#3475) (Petr Šplíchal)
- Document predefined order values of special phases (#3434) (Miloš Prchlík)
- Honor verbosity options in `tmt * show` commands (#3445) (Miloš Prchlík)
- Add CentOS Stream 10 among test images (#3435) (Miloš Prchlík)
- Fix underscore in the result `fmf-id` key (#3476) (Miloš Prchlík)
- Fix `/tests/plan/show` when run from default branch (#2042) (Lukáš Zachar)
- Switch AVC check requirements to use packages (#3471) (Miloš Prchlík)
- Move results format specification out of L2 metadata level (#3421) (Miloš Prchlík)
- Show manual test instructions in verbose mode (#3431) (Petr Šplíchal)
- Add `expect` to the `make develop` target (#3413) (Petr Šplíchal)
- Allow dynamic plugin data classes & convert feature plugins (#3424) (Miloš Prchlík)
- Extend `yamllint` coverage to prepare/feature playbooks (#3450) (Miloš Prchlík)
- Add workaround to detect feature plugin playbook (#3457) (Izmi)
- Enable the `stable` copr repository for building (#3452) (Petr Šplíchal)