{"repo": "ceasarxuu/whalecode", "files": {"archive/deprecated/2026-04-27-rust-demo/crates/whalecode-cli/tests/live_status.rs": {"c539cbe18030727ae9c48e27246c0439ad246390": {"t": 1785745863.9110484, "n": 8041, "h": "0bd158d9a0d00e9a", "c": "use std::{\n io::{Read, Write},\n net::{TcpListener, TcpStream},\n process::Command,\n thread::{self, JoinHandle},\n};\n\nuse tempfile::tempdir;\n\n#[test]\nfn whale_live_run_prints_tool_permission_patch_and_usage_status() {\n let repo = tempdir().expect(\"repo\");\n let whale_home = tempdir().expect(\"whale home\");\n std::fs::write(repo.path().join(\"README.md\"), \"Fixture\\n\").expect(\"write readme\");\n let session_path = repo.path().join(\"session.jsonl\");\n let mock = MockDeepSeek::start(vec![edit_file_tool_call_sse(), final_answer_sse()]);\n\n let output = Command::new(env!(\"CARGO_BIN_EXE_whale\"))\n .args([\n \"run\",\n \"change the README fixture text\",\n \"--cwd\",\n repo.path().to_str().expect(\"repo path\"),\n \"--session\",\n session_path.to_str().expect(\"session path\"),\n \"--allow-write\",\n \"--max-turns\",\n \"3\",\n ])\n .env(\"DEEPSEEK_API_KEY\", \"test-key\")\n .env(\"DEEPSEEK_BASE_URL\", mock.base_url())\n .env(\"WHALE_SECRET_HOME\", whale_home.path())\n .output()\n .expect(\"run whale\");\n\n mock.join();\n assert!(\n output.status.success(),\n \"stdout:\\n{}\\nstderr:\\n{}\",\n String::from_utf8_lossy(&output.stdout),\n String::from_utf8_lossy(&output.stderr)\n );\n let stdout = String::from_utf8(output.stdout).expect(\"stdout utf8\");\n assert!(stdout.contains(\"workspace:\"));\n assert!(stdout.contains(\"model: deepseek-v4-flash\"));\n assert!(stdout.contains(\"edit_file: enabled\"));\n assert!(stdout.contains(\"run_command: disabled\"));\n assert!(stdout.contains(\"session:\"));\n assert_eq!(stdout.matches(\"session:\").count(), 1);\n assert!(stdout.contains(\"tool: edit_file README.md\"));\n assert!(stdout.contains(\"permission: edit_file allowed\"));\n assert!(stdout.contains(\"modified: README.md\"));\n assert!(stdout.contains(\"tool: edit_file README.md -> patch applied\"));\n assert!(stdout.contains(\"Updated README.\"));\n assert!(stdout.contains(\"input tokens: 30\"));\n assert!(stdout.contains(\"output tokens: 5\"));\n assert!(stdout.contains(\"cached input tokens: 9\"));\n assert!(stdout.contains(\"tool calls: 1\"));\n assert!(stdout.contains(\"files changed: 1 (README.md)\"));\n assert!(stdout.contains(\"duration:\"));\n assert_eq!(\n std::fs::read_to_string(repo.path().join(\"README.md\")).expect(\"read readme\"),\n \"Changed\\n\"\n );\n}\n\n#[test]\nfn whale_live_run_can_create_file_in_empty_workspace() {\n let repo = tempdir().expect(\"repo\");\n let whale_home = tempdir().expect(\"whale home\");\n let session_path = repo.path().join(\"session.jsonl\");\n let mock = MockDeepSeek::start(vec![write_file_tool_call_sse(), final_write_answer_sse()]);\n\n let output = Command::new(env!(\"CARGO_BIN_EXE_whale\"))\n .args([\n \"run\",\n \"create a tiny html page\",\n \"--cwd\",\n repo.path().to_str().expect(\"repo path\"),\n \"--session\",\n session_path.to_str().expect(\"session path\"),\n \"--allow-write\",\n \"--max-turns\",\n \"3\",\n ])\n .env(\"DEEPSEEK_API_KEY\", \"test-key\")\n .env(\"DEEPSEEK_BASE_URL\", mock.base_url())\n .env(\"WHALE_SECRET_HOME\", whale_home.path())\n .output()\n .expect(\"run whale\");\n\n mock.join();\n assert!(\n output.status.success(),\n \"stdout:\\n{}\\nstderr:\\n{}\",\n String::from_utf8_lossy(&output.stdout),\n String::from_utf8_lossy(&output.stderr)\n );\n let stdout = String::from_utf8(output.stdout).expect(\"stdout utf8\");\n assert!(stdout.contains(\"tool: write_file index.html\"));\n assert!(stdout.contains(\"permission: write_file allowed\"));\n assert!(stdout.contains(\"modified: index.html\"));\n assert!(stdout.contains(\"Wrote index.html.\"));\n assert!(stdout.contains(\"files changed: 1 (index.html)\"));\n assert_eq!(\n std::fs::read_to_string(repo.path().join(\"index.html\")).expect(\"read index\"),\n \"\\n