CI: add test_rest_repo_basics tests to localhost openssh server

This commit is contained in:
Thomas Waldmann 2026-06-02 01:12:19 +02:00
parent 8dbfc50cde
commit 5584bff830
No known key found for this signature in database
GPG key ID: 243ACFA951F78E01
2 changed files with 30 additions and 0 deletions

View file

@ -243,8 +243,13 @@ jobs:
# Start ssh-agent and add our key so paramiko can use the agent
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
sudo python3 -m venv /opt/borgstore-venv
sudo /opt/borgstore-venv/bin/pip install -U pip setuptools wheel
sudo /opt/borgstore-venv/bin/pip install "borgstore[rest]"
sudo ln -sf /opt/borgstore-venv/bin/borgstore-server-rest /usr/local/bin/borgstore-server-rest
# Export SFTP test URL for tox via GITHUB_ENV
echo "BORG_TEST_SFTP_REPO=sftp://sftpuser@localhost:22/borg/sftp-repo" >> $GITHUB_ENV
echo "BORG_TEST_REST_REPO=rest://sftpuser@localhost:22/borg/rest-repo" >> $GITHUB_ENV
- name: Install and configure MinIO S3 server (test only)
if: ${{ runner.os == 'Linux' && !contains(matrix.toxenv, 'mypy') && !contains(matrix.toxenv, 'docs') }}

View file

@ -10,6 +10,7 @@ from . import cmd, create_regular_file, RK_ENCRYPTION, assert_dirs_equal
SFTP_URL = os.environ.get("BORG_TEST_SFTP_REPO")
REST_URL = os.environ.get("BORG_TEST_REST_REPO")
S3_URL = os.environ.get("BORG_TEST_S3_REPO")
@ -57,6 +58,30 @@ def test_rclone_repo_basics(archiver, tmp_path):
cmd(archiver, "repo-delete")
@pytest.mark.skipif(not REST_URL, reason="BORG_TEST_REST_REPO not set.")
def test_rest_repo_basics(archiver):
create_regular_file(archiver.input_path, "file1", size=100 * 1024)
create_regular_file(archiver.input_path, "file2", size=10 * 1024)
archiver.repository_location = REST_URL
archive_name = "test-archive"
cmd(archiver, "repo-create", RK_ENCRYPTION)
cmd(archiver, "create", archive_name, "input")
list_output = cmd(archiver, "repo-list")
assert archive_name in list_output
archive_list_output = cmd(archiver, "list", archive_name)
assert "input/file1" in archive_list_output
assert "input/file2" in archive_list_output
with changedir("output"):
cmd(archiver, "extract", archive_name)
assert_dirs_equal(
archiver.input_path, os.path.join(archiver.output_path, "input"), ignore_flags=True, ignore_xattrs=True
)
cmd(archiver, "delete", "-a", archive_name)
list_output = cmd(archiver, "repo-list")
assert archive_name not in list_output
cmd(archiver, "repo-delete")
@pytest.mark.skipif(not SFTP_URL, reason="BORG_TEST_SFTP_REPO not set.")
def test_sftp_repo_basics(archiver):
create_regular_file(archiver.input_path, "file1", size=100 * 1024)