diff --git a/claude_setup.sh b/claude_setup.sh index cca8c23..1955dbc 100755 --- a/claude_setup.sh +++ b/claude_setup.sh @@ -314,13 +314,17 @@ except: pass case "${_ans:-L}" in [Ll]) echo "" - echo "Открываю браузер для входа в Anthropic аккаунт..." - claude auth login || { - echo "" - echo -e "\033[0;31mНе удалось выполнить вход.\033[0m" - echo "Попробуйте вручную: claude auth login" - return 1 - } + echo "Запускаю Claude Code — войдите в аккаунт Anthropic в интерфейсе..." + # claude auth login + claude "$@" вызывали двойной auth flow (v2.x запускает + # полный TUI внутри auth login). Запускаем claude напрямую: он сам откроет + # браузер и попросит выбрать тип аккаунта в одном взаимодействии. + ANTHROPIC_MODEL=claude-sonnet-4-6 \ + ANTHROPIC_DEFAULT_OPUS_MODEL=claude-opus-4-8 \ + ANTHROPIC_DEFAULT_SONNET_MODEL=claude-sonnet-4-6 \ + ANTHROPIC_DEFAULT_HAIKU_MODEL=claude-haiku-4-5-20251001 \ + CLAUDE_CODE_SUBAGENT_MODEL=claude-haiku-4-5-20251001 \ + claude "$@" + return "$?" ;; [Kk]) echo "" diff --git a/tests/test_fixes.sh b/tests/test_fixes.sh index 138a4b3..100db9d 100755 --- a/tests/test_fixes.sh +++ b/tests/test_fixes.sh @@ -272,6 +272,38 @@ test_offer_reauth_enter_defaults_yes() { fi } +# ── Fix8: no double login — [L] branch calls claude directly, not auth login ─ +test_fix8_no_double_login() { + # [L] branch must NOT call "claude auth login"; must call claude directly and return. + + # Find the line number of [Ll]) + local ll_line + ll_line=$(grep -n '^\s*\[Ll\])' "$SCRIPT" | head -1 | cut -d: -f1) + + # Extract the next 20 lines starting at [Ll]) — enough to cover the whole arm + local ll_branch + ll_branch=$(awk "NR>=$ll_line && NR<=$((ll_line+20))" "$SCRIPT") + + # Check for actual invocation (not just a comment mentioning the command) + if echo "$ll_branch" | grep -v '^\s*#' | grep -q 'claude auth login'; then + fail "Fix8: [L] branch still calls 'claude auth login' — double login present" + else + ok "Fix8: [L] branch does NOT call 'claude auth login' (only mentions it in a comment)" + fi + + if echo "$ll_branch" | grep -qF 'return "$?"'; then + ok "Fix8: [L] branch returns after launching claude (no fallthrough to outer call)" + else + fail "Fix8: [L] branch missing 'return \"\$?\"' — outer claude call still reached" + fi + + if echo "$ll_branch" | grep -q 'ANTHROPIC_MODEL='; then + ok "Fix8: [L] branch sets model env vars before launching claude" + else + fail "Fix8: [L] branch missing model env vars" + fi +} + # ── bash syntax of the whole script ───────────────────────────────────────── test_script_syntax() { if bash -n "$SCRIPT" 2>&1; then @@ -283,6 +315,7 @@ test_script_syntax() { # ── run all tests ───────────────────────────────────────────────────────────── test_script_syntax +test_fix8_no_double_login test_fix1_export_api_key test_fix2_trap_return test_fix3_readiness_loop