diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9129072bd..547955118 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -540,6 +540,12 @@ jobs: sudo python3 -m ensurepip sudo python3 -m pip install virtualenv + # On omniOS /tmp is swap-backed tmpfs (small, RAM-bound), so the pip/cargo + # build temps and the pytest temp tree quickly exhaust it ("no space left on + # device"). /var/tmp is disk-backed (ZFS), so redirect TMPDIR there. + export TMPDIR=/var/tmp/borg-ci + mkdir -p "$TMPDIR" + python3 -m venv .venv . .venv/bin/activate python -V diff --git a/src/borg/testsuite/archiver/extract_cmd_test.py b/src/borg/testsuite/archiver/extract_cmd_test.py index c65f385f1..7a19d46b5 100644 --- a/src/borg/testsuite/archiver/extract_cmd_test.py +++ b/src/borg/testsuite/archiver/extract_cmd_test.py @@ -833,7 +833,14 @@ def test_extract_y2261(archivers, request): create_regular_file(archiver.input_path, "file_y2261", contents=b"post y2038 test") # 2261-01-01 00:00:00 UTC as a Unix timestamp (seconds). time_y2261 = 9183110400 - os.utime("input/file_y2261", (time_y2261, time_y2261)) + try: + os.utime("input/file_y2261", (time_y2261, time_y2261)) + except OSError as e: + if e.errno == errno.EOVERFLOW: + # some filesystems/platforms cannot store timestamps beyond y2038 + # (e.g. ZFS on omniOS rejects this with EOVERFLOW). + pytest.skip("filesystem cannot store post-y2038 timestamps") + raise cmd(archiver, "repo-create", RK_ENCRYPTION) cmd(archiver, "create", "test", "input") with changedir("output"): diff --git a/src/borg/testsuite/helpers/fs_test.py b/src/borg/testsuite/helpers/fs_test.py index ae3af53d2..dcad7969b 100644 --- a/src/borg/testsuite/helpers/fs_test.py +++ b/src/borg/testsuite/helpers/fs_test.py @@ -242,6 +242,7 @@ def test_get_runtime_dir(monkeypatch): os.path.join("/var/run/user", uid, "borg"), os.path.join(f"/tmp/runtime-{uid}", "borg"), os.path.join(f"/mnt/eafs/tmp/runtime-{uid}", "borg"), # CI netbsd + os.path.join(f"/var/tmp/borg-ci/runtime-{uid}", "borg"), # CI omnios (TMPDIR) ] monkeypatch.setenv("XDG_RUNTIME_DIR", "/var/tmp/.cache") assert get_runtime_dir(create=False) == os.path.join("/var/tmp/.cache", "borg")