Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1d1865620c | ||
|
|
1bf5ff4739 | ||
|
|
fed5ae3ccd | ||
|
|
138e85b1f5 | ||
|
|
306b87c104 |
1
.fmf/version
Normal file
1
.fmf/version
Normal file
@ -0,0 +1 @@
|
||||
1
|
||||
6
.gitignore
vendored
6
.gitignore
vendored
@ -1 +1,5 @@
|
||||
snapm-0.4.3.tar.gz
|
||||
/snapm-0.4.0.tar.gz
|
||||
/snapm-0.4.3.tar.gz
|
||||
/snapm-0.5.1.tar.gz
|
||||
/snapm-0.5.2.tar.gz
|
||||
/snapm-0.7.0.tar.gz
|
||||
|
||||
112
0001-tests-skip-a-handful-of-tests-in-RH-CI-environments-.patch
Normal file
112
0001-tests-skip-a-handful-of-tests-in-RH-CI-environments-.patch
Normal file
@ -0,0 +1,112 @@
|
||||
From 5d363f97d4ccea2a53c7da48ff9f18a3dd9da274 Mon Sep 17 00:00:00 2001
|
||||
From: "Bryn M. Reeves" <bmr@redhat.com>
|
||||
Date: Thu, 8 Jan 2026 18:24:16 +0000
|
||||
Subject: [PATCH] tests: skip a handful of tests in RH CI environments #915
|
||||
|
||||
Resolves: #915
|
||||
|
||||
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
|
||||
---
|
||||
tests/__init__.py | 7 +++++++
|
||||
tests/test_command.py | 4 +++-
|
||||
tests/test_mounts.py | 4 +++-
|
||||
tests/test_plugin.py | 3 ++-
|
||||
4 files changed, 15 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/tests/__init__.py b/tests/__init__.py
|
||||
index fa39b9cb..989fc87f 100644
|
||||
--- a/tests/__init__.py
|
||||
+++ b/tests/__init__.py
|
||||
@@ -101,3 +101,10 @@ def have_root():
|
||||
and ``False`` otherwise.
|
||||
"""
|
||||
return os.geteuid() == 0 and os.getegid() == 0
|
||||
+
|
||||
+
|
||||
+def in_rh_ci():
|
||||
+ """Return ``True`` if we appear to be running in CentOS/RHEL CI,
|
||||
+ and ``False`` otherwise.
|
||||
+ """
|
||||
+ return os.environ.get("IN_RH_CI", None) is not None
|
||||
diff --git a/tests/test_command.py b/tests/test_command.py
|
||||
index c1e547fb..4319ecd3 100644
|
||||
--- a/tests/test_command.py
|
||||
+++ b/tests/test_command.py
|
||||
@@ -18,7 +18,7 @@ from snapm.report import ReportOpts
|
||||
import snapm.manager
|
||||
import boom
|
||||
|
||||
-from tests import MockArgs, have_root, BOOT_ROOT_TEST
|
||||
+from tests import MockArgs, have_root, BOOT_ROOT_TEST, in_rh_ci
|
||||
|
||||
from ._util import LvmLoopBacked, StratisLoopBacked
|
||||
|
||||
@@ -1079,6 +1079,7 @@ class CommandTests(CommandTestsBase):
|
||||
args += ["snapset", "delete", "hourly.0"]
|
||||
self.assertEqual(command.main(args), 0)
|
||||
|
||||
+ @unittest.skipIf(in_rh_ci(), "Tests running in RH CI pipeline")
|
||||
def test_main_snapset_diff(self):
|
||||
"""Test 'snapm snapset diff' command."""
|
||||
self.manager.create_snapshot_set("testset0", self.mount_points())
|
||||
@@ -1110,6 +1111,7 @@ class CommandTests(CommandTestsBase):
|
||||
self.manager.delete_snapshot_sets(snapm.Selection(name="testset0"))
|
||||
self.manager.delete_snapshot_sets(snapm.Selection(name="testset1"))
|
||||
|
||||
+ @unittest.skipIf(in_rh_ci(), "Tests running in RH CI pipeline")
|
||||
def test_main_snapset_diffreport(self):
|
||||
"""Test 'snapm snapset diffreport' command."""
|
||||
self.manager.create_snapshot_set("testset0", self.mount_points())
|
||||
diff --git a/tests/test_mounts.py b/tests/test_mounts.py
|
||||
index d6c7a5a3..db249341 100644
|
||||
--- a/tests/test_mounts.py
|
||||
+++ b/tests/test_mounts.py
|
||||
@@ -24,7 +24,7 @@ import snapm.manager._mounts as mounts
|
||||
import snapm.manager
|
||||
from snapm.manager.plugins import format_snapshot_name, encode_mount_point
|
||||
|
||||
-from tests import have_root, is_redhat
|
||||
+from tests import have_root, is_redhat, in_rh_ci
|
||||
from ._util import LoopBackDevices, LvmLoopBacked
|
||||
|
||||
ETC_FSTAB = "/etc/fstab"
|
||||
@@ -587,6 +587,7 @@ class MountsTests(MountsTestsBase):
|
||||
# 4. Check that the mount was still discovered (it's just a warning)
|
||||
self.assertEqual(len(new_mounts._mounts), 1)
|
||||
|
||||
+ @unittest.skipIf(in_rh_ci(), "Tests running in RH CI pipeline")
|
||||
def test_discover_incomplete_api_mounts(self):
|
||||
"""
|
||||
Tests that discovery logs warnings for missing API mounts.
|
||||
@@ -626,6 +627,7 @@ class MountsTestsExec(MountsTestsBase):
|
||||
"""
|
||||
need_exec = True
|
||||
|
||||
+ @unittest.skipIf(in_rh_ci(), "Tests running in RH CI pipeline")
|
||||
def test_mount_exec(self):
|
||||
"""
|
||||
Tests running a command chrooted inside a mounted snapshot set.
|
||||
diff --git a/tests/test_plugin.py b/tests/test_plugin.py
|
||||
index bd4fec08..7532a2fb 100644
|
||||
--- a/tests/test_plugin.py
|
||||
+++ b/tests/test_plugin.py
|
||||
@@ -14,7 +14,7 @@ log = logging.getLogger()
|
||||
|
||||
import snapm.manager.plugins as plugins
|
||||
|
||||
-from tests import MockPlugin
|
||||
+from tests import MockPlugin, in_rh_ci
|
||||
|
||||
|
||||
def _find_device_mounts():
|
||||
@@ -85,6 +85,7 @@ class PluginTests(unittest.TestCase):
|
||||
for name, origin in snapshot_names.items():
|
||||
self.assertEqual(None, plugins.parse_snapshot_name(name, origin))
|
||||
|
||||
+ @unittest.skipIf(in_rh_ci(), "Tests running in RH CI pipeline")
|
||||
def test_device_from_mount_point(self):
|
||||
mounts = _find_device_mounts()
|
||||
for mount in mounts:
|
||||
--
|
||||
2.52.0
|
||||
|
||||
6
gating.yaml
Normal file
6
gating.yaml
Normal file
@ -0,0 +1,6 @@
|
||||
--- !Policy
|
||||
product_versions:
|
||||
- rhel-10
|
||||
decision_context: osci_compose_gate
|
||||
rules:
|
||||
- !PassingTestCaseRule {test_case_name: osci.brew-build.tier0.functional}
|
||||
32
plans/main.fmf
Normal file
32
plans/main.fmf
Normal file
@ -0,0 +1,32 @@
|
||||
summary: Run snapm unit tests from dist-git sources
|
||||
discover:
|
||||
how: fmf
|
||||
dist-git-source: true
|
||||
|
||||
execute:
|
||||
how: tmt
|
||||
|
||||
prepare:
|
||||
- name: Install packages
|
||||
how: install
|
||||
package:
|
||||
- stratisd
|
||||
- stratis-cli
|
||||
- lvm2
|
||||
- python3-boom
|
||||
- python3-pytest
|
||||
- boom-boot
|
||||
- rpmdevtools
|
||||
- name: Enable Stratisd
|
||||
how: shell
|
||||
script: |
|
||||
systemctl enable --now stratisd
|
||||
- name: Enable CRB
|
||||
how: shell
|
||||
script: |
|
||||
dnf install -y "dnf-command(config-manager)" ;
|
||||
dnf config-manager --set-enabled crb || true
|
||||
- name: Create boom OsProfile
|
||||
how: shell
|
||||
script: |
|
||||
boom profile create --from-host
|
||||
62
snapm.spec
62
snapm.spec
@ -1,13 +1,14 @@
|
||||
%global summary A set of tools for managing snapshots
|
||||
|
||||
Name: snapm
|
||||
Version: 0.4.3
|
||||
Release: 1%{?dist}
|
||||
Version: 0.7.0
|
||||
Release: %autorelease
|
||||
Summary: %{summary}
|
||||
|
||||
License: Apache-2.0
|
||||
URL: https://github.com/snapshotmanager/%{name}
|
||||
Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz
|
||||
Patch1: 0001-tests-skip-a-handful-of-tests-in-RH-CI-environments-.patch
|
||||
|
||||
BuildArch: noarch
|
||||
|
||||
@ -16,11 +17,16 @@ BuildRequires: lvm2
|
||||
BuildRequires: make
|
||||
BuildRequires: stratis-cli
|
||||
BuildRequires: stratisd
|
||||
BuildRequires: systemd-rpm-macros
|
||||
BuildRequires: python3-devel
|
||||
BuildRequires: python3-sphinx
|
||||
%if 0%{?fedora}
|
||||
BuildRequires: libfaketime
|
||||
%endif
|
||||
|
||||
Requires: python3-snapm = %{version}-%{release}
|
||||
Recommends: boom-boot
|
||||
Recommends: python3-file-magic
|
||||
|
||||
%package -n python3-snapm
|
||||
Summary: %{summary}
|
||||
@ -65,8 +71,32 @@ rm -f doc/*.rst doc/Makefile doc/conf.py
|
||||
%install
|
||||
%pyproject_install
|
||||
|
||||
mkdir -p %{buildroot}/%{_mandir}/man8
|
||||
%{__install} -p -m 644 man/man8/snapm.8 %{buildroot}/%{_mandir}/man8
|
||||
mkdir -p ${RPM_BUILD_ROOT}/%{_sysconfdir}/%{name}/plugins.d
|
||||
mkdir -p ${RPM_BUILD_ROOT}/%{_sysconfdir}/%{name}/schedule.d
|
||||
%{__install} -p -m 644 etc/%{name}/snapm.conf ${RPM_BUILD_ROOT}/%{_sysconfdir}/%{name}
|
||||
%{__install} -p -m 644 etc/%{name}/plugins.d/lvm2-cow.conf ${RPM_BUILD_ROOT}/%{_sysconfdir}/%{name}/plugins.d
|
||||
%{__install} -p -m 644 etc/%{name}/plugins.d/lvm2-thin.conf ${RPM_BUILD_ROOT}/%{_sysconfdir}/%{name}/plugins.d
|
||||
%{__install} -p -m 644 etc/%{name}/plugins.d/stratis.conf ${RPM_BUILD_ROOT}/%{_sysconfdir}/%{name}/plugins.d
|
||||
|
||||
mkdir -p ${RPM_BUILD_ROOT}/%{_mandir}/man8
|
||||
mkdir -p ${RPM_BUILD_ROOT}/%{_mandir}/man5
|
||||
%{__install} -p -m 644 man/man8/snapm.8 ${RPM_BUILD_ROOT}/%{_mandir}/man8
|
||||
%{__install} -p -m 644 man/man5/snapm.conf.5 ${RPM_BUILD_ROOT}/%{_mandir}/man5
|
||||
%{__install} -p -m 644 man/man5/snapm-plugins.d.5 ${RPM_BUILD_ROOT}/%{_mandir}/man5
|
||||
%{__install} -p -m 644 man/man5/snapm-schedule.d.5 ${RPM_BUILD_ROOT}/%{_mandir}/man5
|
||||
|
||||
mkdir -p ${RPM_BUILD_ROOT}/%{_unitdir}
|
||||
%{__install} -p -m 644 systemd/snapm-create@.service ${RPM_BUILD_ROOT}/%{_unitdir}
|
||||
%{__install} -p -m 644 systemd/snapm-create@.timer ${RPM_BUILD_ROOT}/%{_unitdir}
|
||||
%{__install} -p -m 644 systemd/snapm-gc@.service ${RPM_BUILD_ROOT}/%{_unitdir}
|
||||
%{__install} -p -m 644 systemd/snapm-gc@.timer ${RPM_BUILD_ROOT}/%{_unitdir}
|
||||
|
||||
mkdir -p ${RPM_BUILD_ROOT}/%{_tmpfilesdir}
|
||||
%{__install} -p -m 644 systemd/tmpfiles.d/%{name}.conf ${RPM_BUILD_ROOT}/%{_tmpfilesdir}/
|
||||
|
||||
%{__install} -d -m 0700 ${RPM_BUILD_ROOT}/%{_rundir}/%{name}
|
||||
%{__install} -d -m 0700 ${RPM_BUILD_ROOT}/%{_rundir}/%{name}/mounts
|
||||
%{__install} -d -m 0700 ${RPM_BUILD_ROOT}/%{_rundir}/%{name}/lock
|
||||
|
||||
%check
|
||||
%pytest --log-level=debug -v tests/
|
||||
@ -76,7 +106,18 @@ mkdir -p %{buildroot}/%{_mandir}/man8
|
||||
%license LICENSE
|
||||
%doc README.md
|
||||
%{_bindir}/snapm
|
||||
%doc %{_mandir}/man*/snapm.*
|
||||
%doc %{_mandir}/man*/snapm*
|
||||
%attr(644, -, -) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/snapm.conf
|
||||
%attr(644, -, -) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/plugins.d/*
|
||||
%dir %attr(755, -, -) %{_sysconfdir}/%{name}/schedule.d
|
||||
%attr(644, -, -) %{_unitdir}/snapm-create@.service
|
||||
%attr(644, -, -) %{_unitdir}/snapm-create@.timer
|
||||
%attr(644, -, -) %{_unitdir}/snapm-gc@.service
|
||||
%attr(644, -, -) %{_unitdir}/snapm-gc@.timer
|
||||
%attr(644, -, -) %{_tmpfilesdir}/%{name}.conf
|
||||
%dir %{_rundir}/%{name}/
|
||||
%dir %{_rundir}/%{name}/mounts
|
||||
%dir %{_rundir}/%{name}/lock
|
||||
|
||||
%files -n python3-snapm
|
||||
# license for snapm (Apache-2.0)
|
||||
@ -92,13 +133,4 @@ mkdir -p %{buildroot}/%{_mandir}/man8
|
||||
%doc doc
|
||||
|
||||
%changelog
|
||||
* Mon May 12 2025 Bryn M. Reeves <bmr@redhat.com> - 0.4.3-1
|
||||
- Update to upstream 0.4.3
|
||||
Resolves: RHEL-80365
|
||||
Resolves: RHEL-76129
|
||||
* Thu Jan 09 2025 Bryn M. Reeves <bmr@redhat.com> - 0.4.0-2
|
||||
- Bump release and rebuild
|
||||
Resolves: RHEL-59006
|
||||
* Wed Dec 18 2024 Bryn M. Reeves <bmr@redhat.com> - 0.4.0-1
|
||||
- Initial commit on c10s
|
||||
Resolves: RHEL-59006
|
||||
%autochangelog
|
||||
|
||||
2
sources
2
sources
@ -1 +1 @@
|
||||
SHA512 (snapm-0.4.3.tar.gz) = 2a481781f1275fbbb6a5052fbc69379aa85b79f05b860e15aef7826ce75627cbfa6717a93c5a9b538f30ba01900fd70e856b8d5d7a417f010af6b4ec58fb377c
|
||||
SHA512 (snapm-0.7.0.tar.gz) = 13f88538070690bd4a051968f6a23abfc65c5bc5e30ed9fc75dd9cf0518c295099e237b66d704a560df5e9fb8ef5fd544ab72bd302f296be7d077feb78480368
|
||||
|
||||
2
tests/help/main.fmf
Normal file
2
tests/help/main.fmf
Normal file
@ -0,0 +1,2 @@
|
||||
summary: Test snapm --help output
|
||||
test: ./test.sh
|
||||
8
tests/help/test.sh
Executable file
8
tests/help/test.sh
Executable file
@ -0,0 +1,8 @@
|
||||
#!/bin/sh -eux
|
||||
|
||||
echo $TMT_SOURCE_DIR
|
||||
ls $TMT_SOURCE_DIR
|
||||
tmp=$(mktemp)
|
||||
snapm --help > "$tmp"
|
||||
grep 'Snapshot Manager' "$tmp"
|
||||
rm "$tmp"
|
||||
6
tests/upstream/main.fmf
Normal file
6
tests/upstream/main.fmf
Normal file
@ -0,0 +1,6 @@
|
||||
summary: Run snapm upstream test suite
|
||||
test: ./prepare-host-environment.sh; ./run-unit-tests.sh
|
||||
require:
|
||||
- python3-pytest
|
||||
- python3-devel
|
||||
duration: 90m
|
||||
11
tests/upstream/prepare-host-environment.sh
Executable file
11
tests/upstream/prepare-host-environment.sh
Executable file
@ -0,0 +1,11 @@
|
||||
#!/usr/bin/bash
|
||||
# Prepare the host environment for running the snapm tests.
|
||||
# This includes installing missing dependencies and tools.
|
||||
|
||||
set -euxo pipefail
|
||||
|
||||
# Move to the checked out git repo with the test plans
|
||||
# this should be the root of the dist-git repo
|
||||
cd "${TMT_TREE}"
|
||||
|
||||
sudo dnf builddep -y snapm.spec
|
||||
25
tests/upstream/run-unit-tests.sh
Executable file
25
tests/upstream/run-unit-tests.sh
Executable file
@ -0,0 +1,25 @@
|
||||
#!/usr/bin/bash
|
||||
# Execute snapm unit tests from a checked out dist-git repo
|
||||
|
||||
set -euxo pipefail
|
||||
|
||||
source /etc/os-release
|
||||
|
||||
# Move to the directory with sources
|
||||
cd ${TMT_SOURCE_DIR}
|
||||
|
||||
# Extract the Source0 basename without extension
|
||||
SRC_DIR=$(spectool --source 0 snapm.spec | sed 's/.\+\(snapm-[0-9.]\+\)\.tar\.gz/\1/')
|
||||
|
||||
# Move to the extracted sources directory (patches are applied by default)
|
||||
cd "${SRC_DIR}"
|
||||
|
||||
# Configure snapm
|
||||
cp -r etc/snapm/ /etc
|
||||
cp systemd/*.service systemd/*.timer /usr/lib/systemd/system
|
||||
cp systemd/tmpfiles.d/snapm.conf /usr/lib/tmpfiles.d
|
||||
systemctl daemon-reload
|
||||
systemd-tmpfiles --create /usr/lib/tmpfiles.d/snapm.conf
|
||||
|
||||
# Run tests
|
||||
sudo IN_RH_CI=yes pytest -v --log-level=debug tests/
|
||||
2
tests/version/main.fmf
Normal file
2
tests/version/main.fmf
Normal file
@ -0,0 +1,2 @@
|
||||
summary: Test snapm --version output
|
||||
test: ./test.sh
|
||||
6
tests/version/test.sh
Executable file
6
tests/version/test.sh
Executable file
@ -0,0 +1,6 @@
|
||||
#!/bin/sh -eux
|
||||
|
||||
tmp=$(mktemp)
|
||||
snapm --version > "$tmp"
|
||||
grep '0.7.0' "$tmp"
|
||||
rm "$tmp"
|
||||
Loading…
Reference in New Issue
Block a user