kawagh / kawagh/redi

[e2e] task test:e2e の実行後にユーザーの default_profile がサンドボックスに書き換わったまま戻らない

Open
#481 0 comments 0 reactions 1 assignee Claimed by @kawagh View on GitHub
ai-reported bug
Dominant language
Python
Stars
4
Forks
0
Avg merge
13h
Merged PRs (30d)
103

Description

## 何が起きたか?

`task test:e2e` (実体は `script/init-redmine.sh`) を実行すると、**ユーザーのグローバル設定の `default_profile` が E2E サンドボックスのプロファイルに書き換わり、実行後も戻らない**。

`script/init-redmine.sh:104` が無条件に上書きしている。

```sh
redi config create "$ADMIN_PROFILE" || true
redi config update --default_profile "$ADMIN_PROFILE" # ← ここ
```

E2E 自体は `tests/e2e/utils.py` の `run_redi` が `REDI_E2E_REDMINE_VERSION` から `--profile sandbox_admin_` を明示的に付けるので、**`default_profile` を書き換えなくてもテストは通る**。それなのに既定値を潰している。

## 実際に踏んだ状況

並列でエージェントを走らせている最中に、そのうちの 1 つが E2E を実行した。以後、こちらのセッションで `redi` を叩くと dogfooding の Redmine (`localhost:3001`) ではなくサンドボックス (`localhost:3061`) を向くようになっていた。

```console
$ redi config
["sandbox_admin_6.1"] # 既定
redmine_url = "http://localhost:3061"
default_project_id = "reditest"
...
```

チケットを集計していたところ件数が 130 件から 22 件に変わり、しばらく「Redmine のデータが消えた」と誤認して調査した。エラーも警告も出ないので、切り替わったことに気付く手掛かりが無い。

`redi config update --default_profile default` で手動で戻した。

## Steps to reproduce / 再現手順

```sh
redi config | head -1 # => 現在の既定プロファイル
task test:e2e:6.1
redi config | head -1 # => ["sandbox_admin_6.1"] に変わっている
```

## 期待する結果

E2E の実行がユーザーのグローバル設定を書き換えない。案は 3 つ。

1. **`default_profile` の上書きをやめる** (最小): `run_redi` が `--profile` を明示しているので、`init-redmine.sh:104` の行は消せるはず。`REDI_E2E_REDMINE_VERSION` 未設定でローカルから叩くときの利便性のために残しているなら、その用途だけ別コマンドに切り出す
2. **元の値に戻す**: 冒頭で現在値を退避し、`trap` で終了時に復元する。異常終了でも戻るようにする
3. **設定ファイルを分ける**: E2E 専用の config パスを環境変数で渡し、`~/.config` 側に一切触らない。E2E がユーザー環境から独立するので一番きれいだが、`redi` 側に設定パスの上書き手段が要る

`redi config` の書き込み先を差し替える仕組みは `show_config(config_path=...)` のようにテスト用の引数としては存在するので、3 は CLI から指定できるようにすれば実現できる。

## 補足

副作用が出るのは `default_profile` だけではない。`init-redmine.sh` は `redi config create` / `redi config update` でサンドボックス用プロファイルをユーザーの config に足し続ける。`redi config --full` には既に `sandbox_admin`, `sandbox_admin_61`, `sandbox_admin_70`, `sandbox_admin_6.1`, `sandbox_admin_7.0` と、命名規則の変遷で増えた残骸が並んでいる。あわせて整理したい。

## redi version / 使用している redi のバージョン

0.0.66 (develop)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.