"""Behavioral tests for the state-holder and repair-admission authority.""" import os import pytest import hermes_state_holders @pytest.mark.linux_only def test_foreign_holder_accepts_same_inode_reached_through_an_alias( tmp_path, monkeypatch ): """Descriptor identity is authoritative even when /proc spells another path.""" db_path = tmp_path / "state.db" db_path.touch() alias_path = tmp_path / "namespace-alias" / "state.db" proc_root = tmp_path / "proc" for pid in (111, 222): (proc_root / str(pid) / "fd").mkdir(parents=True) os.symlink(db_path, proc_root / "222" / "fd" / "3") monkeypatch.setattr(hermes_state_holders.os, "getpid", lambda: 111) real_listdir = os.listdir def _listdir(path): if isinstance(path, str): path = path.replace("/proc", str(proc_root)) return real_listdir(path) monkeypatch.setattr(hermes_state_holders.os, "listdir", _listdir) def _readlink(path): if path == "/proc/222/fd/3": return str(alias_path) return os.readlink(path.replace("/proc", str(proc_root))) monkeypatch.setattr(hermes_state_holders.os, "readlink", _readlink) real_stat = os.stat def _stat(path, *args, **kwargs): path = str(path).replace("/proc", str(proc_root)) return real_stat(path, *args, **kwargs) monkeypatch.setattr(hermes_state_holders.os, "stat", _stat) assert hermes_state_holders.foreign_state_db_holders(db_path) == [ (222, str(alias_path)) ]