Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
e51abb0
paths version 2 support
DagmarFiep Feb 4, 2026
bcc195e
fixing lint error's
DagmarFiep Feb 4, 2026
9d91b0d
improved c-string function,
DagmarFiep Feb 4, 2026
09d3067
fixed some warnings & the python lint run error's
DagmarFiep Feb 5, 2026
c8183db
implemented keeping version 1 and the executable field
DagmarFiep Feb 6, 2026
717c19d
ran lint again
DagmarFiep Feb 10, 2026
9d49912
rename snap file
DagmarFiep Feb 11, 2026
3b0258d
formatting in the py-rattler paths_json
DagmarFiep Feb 11, 2026
81829b5
PyPrefixPlaceholder empty offstes field flag
DagmarFiep Feb 12, 2026
2fb4bc6
feat(rattler): record prefix-replacement offsets in paths.json
chrisburr Jul 7, 2026
b459145
docs(rattler_conda_types): align offsets & shebang_length with CEP
chrisburr Jul 9, 2026
dec4091
fix(rattler): CEP-conformant offset & shebang prefix replacement
chrisburr Jul 9, 2026
3eff649
feat(py-rattler): expose offsets and shebang_length
chrisburr Jul 9, 2026
d848c86
fix(rattler): resolve CI failures (private doc link + CRLF-robust test)
chrisburr Jul 9, 2026
bb3f77d
feat(rattler_fs): initial virtual filesystem crate
DagmarFiep Jul 9, 2026
e28dc87
feat(rattler_vfs): build out the mountable filesystem crate
chrisburr Jul 9, 2026
a52777d
feat(rattler-bin): add `mount` subcommand
chrisburr Jul 9, 2026
8c754b1
ci(rattler-vfs): add e2e mount tests, fixtures, and environment
chrisburr Jul 9, 2026
3039f21
refactor(rattler): extract shared replace_shebang_region helper
chrisburr Jul 9, 2026
fd91ec7
fix(rattler_vfs): make text ranged reads shebang-aware
chrisburr Jul 9, 2026
ae0517b
fix(rattler): resolve CI failures on the offsets code
chrisburr Jul 9, 2026
61cc1af
fix(rattler_vfs): fix the Windows build
chrisburr Jul 9, 2026
27d055a
perf(rattler_vfs): trust recorded paths.json offsets for text plans
chrisburr Jul 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
113 changes: 113 additions & 0 deletions .github/workflows/e2e-rattler-vfs-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
on:
push:
branches: [main]
pull_request:
paths:
- crates/rattler_vfs/**
- scripts/e2e/rattler-vfs-mount.nu
- test-data/rattler-vfs/**
- .github/workflows/e2e-rattler-vfs-tests.yml

name: E2E rattler-vfs Mount Tests

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

env:
RUST_LOG: info
RUST_BACKTRACE: 1
CARGO_TERM_COLOR: always

jobs:
e2e-mount:
name: ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-14, windows-latest]

env:
SCCACHE_GHA_ENABLED: "true"

steps:
- name: Checkout source code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
submodules: recursive

- uses: prefix-dev/setup-pixi@82d477f15f3a381dbcc8adc1206ce643fe110fb7 # v0.9.3
with:
environments: rattler-vfs

- name: Install FUSE (Linux)
if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get install -y fuse3

- name: Install NFS client (Linux)
if: runner.os == 'Linux'
run: sudo apt-get install -y nfs-common

- name: Enable ProjFS (Windows)
if: runner.os == 'Windows'
shell: powershell
run: Enable-WindowsOptionalFeature -Online -FeatureName Client-ProjFS -NoRestart

# `rattler mount` resolves its package cache via dirs::cache_dir()
# (RATTLER_CACHE_DIR is unset here): ~/.cache on Linux,
# ~/Library/Caches on macOS, ~/AppData/Local on Windows. Only the
# path for the current OS exists; actions/cache ignores the others.
- name: Cache conda packages
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4
with:
path: |
~/.cache/rattler/cache/pkgs
~/Library/Caches/rattler/cache/pkgs
~/AppData/Local/rattler/cache/pkgs
key: rattler-vfs-pkgs-${{ runner.os }}-${{ hashFiles('test-data/rattler-vfs/pixi.lock') }}
restore-keys: |
rattler-vfs-pkgs-${{ runner.os }}-

# Read-only tests (includes symlink, network failure, and shutdown tests)
- name: FUSE read-only
if: runner.os == 'Linux'
timeout-minutes: 15
env: {TRANSPORT: fuse, OVERLAY: "false"}
run: pixi run -e rattler-vfs e2e-rattler-vfs

- name: NFS read-only
if: runner.os != 'Windows'
timeout-minutes: 15
env: {TRANSPORT: nfs, OVERLAY: "false"}
run: pixi run -e rattler-vfs e2e-rattler-vfs

# Overlay tests (longer timeout: includes persistence, mismatch, shutdown, and stale mount tests)
- name: FUSE overlay
if: runner.os == 'Linux'
timeout-minutes: 15
env: {TRANSPORT: fuse, OVERLAY: "true"}
run: pixi run -e rattler-vfs e2e-rattler-vfs

- name: NFS overlay
if: runner.os != 'Windows'
timeout-minutes: 15
env: {TRANSPORT: nfs, OVERLAY: "true"}
run: pixi run -e rattler-vfs e2e-rattler-vfs

- name: ProjFS overlay
if: runner.os == 'Windows'
timeout-minutes: 15
env: {TRANSPORT: projfs, OVERLAY: "true"}
run: pixi run -e rattler-vfs e2e-rattler-vfs

- name: Cleanup mounts
if: always()
shell: bash
run: |
for mnt in "${RUNNER_TEMP:-/tmp}"/rattler-vfs-*; do
sudo umount -f "$mnt" 2>/dev/null || true
fusermount3 -u "$mnt" 2>/dev/null || true
done
pkill -9 -f 'rattler mount' 2>/dev/null || true
taskkill /F /IM rattler.exe 2>/dev/null || true
Loading
Loading