<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>60928</bug_id>
          
          <creation_ts>2026-10-12 19:09:26 +0300</creation_ts>
          <short_desc>gvfs-tests: Drive-тесты пропускаются и Sftp-тесты невозможно запустить штатно: по дизайну требуется обёртка gvfs-testbed</short_desc>
          <delta_ts>2026-10-13 12:04:48 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>gvfs</component>
          <version>unstable</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugzilla.altlinux.org/show_bug.cgi?id=44191</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Artem Varaksa">varaksaaa</reporter>
          <assigned_to name="Yuri N. Sedunov">aris</assigned_to>
          <cc>aris</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>301863</commentid>
    <comment_count>0</comment_count>
    <who name="Artem Varaksa">varaksaaa</who>
    <bug_when>2026-10-12 19:09:26 +0300</bug_when>
    <thetext>Во всех ветках оба Sftp-теста всегда пропускаются:

- **от обычного пользователя**: `skipped &apos;sshd not installed&apos;` — при том что openssh на системе **установлен**: бинарник `sshd` лежит в `/usr/sbin`, которого нет в PATH обычного пользователя, а ищет тест его через `shutil.which(&apos;sshd&apos;)` (строка 68 test/gvfs-test).
- **от root** (вход через `su -`, а не ssh): `skipped &apos;No $XDG_RUNTIME_DIR available&apos;` — `$XDG_RUNTIME_DIR` устанавливается logind только в PAM-сессии; логин-шелл, запущенный через `su -`, его не содержит. Класс Sftp требует эту переменную (декоратор, строка 442), потому что тест кладёт в `$XDG_RUNTIME_DIR` файл `authorized_keys` (ssh не принимает ключи из /tmp).
- Дополнительно класс требует наличие `~/.ssh/id_rsa` (декоратор, строка 443 — используется в `test_rsa`), а `test_unknown_host` требует ещё и работу под gvfs-testbed (строка 521).

Итого в стандартной раскладке (пользователь + root через `su -`) Sftp-тесты не могут запуститься ни в одной ветке.

## Как тесты предназначены к запуску (upstream-дизайн): gvfs-testbed

В репозитории gvfs есть обёртка `test/gvfs-testbed` (bash, ~176 строк, © 2012-2013 Canonical Ltd.). Она вызывается **от root из сессии обычного пользователя** (поднимается по дереву родительских процессов до первого нерoot-процесса, чтобы определить вызвавшего пользователя) и:

- требует `smbd` в PATH root и находит `udisksd` по `Exec=` из `/usr/share/dbus-1/system-services/*UDisks2*.service`;
- создаёт «unshared»-песочницу (`unshare -m`): tmpfs + bind-монтирование `/etc`, `/home`, `/var`, `/media`;
- записывает собственный `/etc/samba/smb.conf` (шары `[public]`/`[private]`), запускает в песочнице `smbd` и `nmbd`, задаёт smb-пароль пользователя;
- **генерирует `~/.ssh/id_rsa`** вызывающему пользователю (`ssh-keygen`) — это то, чего требует третий декоратор Sftp;
- создаёт setgid-`rootsh` (root-шелл для пользователя) для управления `scsi_debug`;
- запускает тестовый набор **от имени вызвавшего пользователя** с `XDG_RUNTIME_DIR=/home/$USER/run`;
- помечает песочницу файлом `/home/gvfs_sandbox_marker` — именно его наличие проверяет флаг `in_testbed` (строка 64 test/gvfs-test).

Только через эту обёртку исполнимы также 5 тестов класса Drive (сейчас пропускаются как `not running under gvfs-testbed`; дополнительно нужен модуль ядра `scsi_debug`) и «внутренний» сценарий Smb (тест сам решает, использовать системный smbd или собственный).

## Состояние в ALT

- `gvfs-testbed` в ALT-пакеты **не ставится** (не включён в meson-сборку spec gvfs);
- скрипт не переносим на ALT «как есть»: использует Debian-механизмы (`service smbd`/`smb`, `/etc/init`, правила в `/run/udev`, `systemd-udevd`, `/var/run`).

## Предложение

1. Упаковать `test/gvfs-testbed` в пакет `gvfs-tests` с адаптацией скрипта под ALT (замена `service` на `systemctl`, правила udev в `/etc/udev/rules.d`, и т.п.); тогда Sftp (и Drive) тесты запускаются штатно: root запускает обёртку из пользовательской сессии, обёртка сама обеспечивает `XDG_RUNTIME_DIR` и `id_rsa`.
2. Промежуточный вариант — запускать Sftp-тесты в PAM-сессии logind (например, прямой ssh-вход под root), где `$XDG_RUNTIME_DIR` установлен, при сгенерированном `~/.ssh/id_rsa` и доступном в PATH `sshd`: класс-скипы уйдут, но `test_unknown_host` по-прежнему потребует gvfs-testbed.

## Наблюдаемые причины skip (все ветки, оба режима)

```
test_rsa (__main__.Sftp.test_rsa)
sftp://localhost with RSA authentication ... skipped &apos;sshd not installed&apos;          # пользователь
sftp://localhost with RSA authentication ... skipped &apos;No $XDG_RUNTIME_DIR available&apos;  # root (su -)
test_unknown_host (__main__.Sftp.test_unknown_host)
sftp:// with RSA authentication for unknown host ... skipped &apos;sshd not installed&apos;   # пользователь
sftp:// with RSA authentication for unknown host ... skipped &apos;No $XDG_RUNTIME_DIR available&apos;  # root (su -)
```

## Версии

- gvfs: p10 1.48.2-alt1, p11 1.57.2-alt1 (задание 435928: 1.58.5-alt1), sisyphus 1.62.0-alt1
- openssh: p10 7.9p1-alt4.p10.10, p11 9.6p1-alt7, sisyphus 9.6p1-alt7</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>