mirror of
https://github.com/instructkr/claude-code.git
synced 2026-05-16 19:06:44 +00:00
omx(team): merge worker-2
This commit is contained in:
39
.github/workflows/rust-ci.yml
vendored
39
.github/workflows/rust-ci.yml
vendored
@@ -98,3 +98,42 @@ jobs:
|
|||||||
workspaces: rust -> target
|
workspaces: rust -> target
|
||||||
- name: Run workspace clippy
|
- name: Run workspace clippy
|
||||||
run: cargo clippy --workspace
|
run: cargo clippy --workspace
|
||||||
|
|
||||||
|
windows-smoke:
|
||||||
|
name: windows PowerShell smoke
|
||||||
|
runs-on: windows-latest
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
working-directory: rust
|
||||||
|
shell: pwsh
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: dtolnay/rust-toolchain@stable
|
||||||
|
- uses: Swatinem/rust-cache@v2
|
||||||
|
with:
|
||||||
|
workspaces: rust -> target
|
||||||
|
- name: Build CLI for Windows smoke
|
||||||
|
run: cargo build -p rusty-claude-cli
|
||||||
|
- name: Smoke local commands without live credentials
|
||||||
|
env:
|
||||||
|
ANTHROPIC_API_KEY: ""
|
||||||
|
ANTHROPIC_AUTH_TOKEN: ""
|
||||||
|
OPENAI_API_KEY: ""
|
||||||
|
XAI_API_KEY: ""
|
||||||
|
DASHSCOPE_API_KEY: ""
|
||||||
|
run: |
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
$env:CLAW_CONFIG_HOME = Join-Path $env:RUNNER_TEMP "claw config home"
|
||||||
|
New-Item -ItemType Directory -Force -Path $env:CLAW_CONFIG_HOME | Out-Null
|
||||||
|
$workspace = Join-Path $env:RUNNER_TEMP "claw path smoke"
|
||||||
|
New-Item -ItemType Directory -Force -Path $workspace | Out-Null
|
||||||
|
$claw = Join-Path $env:GITHUB_WORKSPACE "rust\target\debug\claw.exe"
|
||||||
|
Push-Location $workspace
|
||||||
|
try {
|
||||||
|
& $claw help
|
||||||
|
& $claw status
|
||||||
|
& $claw config env
|
||||||
|
& $claw doctor
|
||||||
|
} finally {
|
||||||
|
Pop-Location
|
||||||
|
}
|
||||||
|
|||||||
@@ -215,6 +215,48 @@ fn doctor_command_runs_as_a_local_shell_entrypoint() {
|
|||||||
fs::remove_dir_all(temp_dir).expect("cleanup temp dir");
|
fs::remove_dir_all(temp_dir).expect("cleanup temp dir");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn local_smoke_commands_do_not_require_live_credentials() {
|
||||||
|
let temp_dir = unique_temp_dir("offline-local-smoke path with spaces");
|
||||||
|
let config_home = temp_dir.join("home with spaces").join(".claw");
|
||||||
|
fs::create_dir_all(&config_home).expect("config home should exist");
|
||||||
|
fs::create_dir_all(&temp_dir).expect("temp dir should exist");
|
||||||
|
|
||||||
|
for args in [
|
||||||
|
&["help"][..],
|
||||||
|
&["status"][..],
|
||||||
|
&["config", "env"][..],
|
||||||
|
&["doctor"][..],
|
||||||
|
] {
|
||||||
|
let output = offline_command_in(&temp_dir, &config_home)
|
||||||
|
.args(args)
|
||||||
|
.output()
|
||||||
|
.unwrap_or_else(|error| panic!("claw {args:?} should launch: {error}"));
|
||||||
|
|
||||||
|
assert_success(&output);
|
||||||
|
let stdout = String::from_utf8(output.stdout).expect("stdout should be utf8");
|
||||||
|
let stderr = String::from_utf8(output.stderr).expect("stderr should be utf8");
|
||||||
|
assert!(
|
||||||
|
stdout.contains("claw")
|
||||||
|
|| stdout.contains("Status")
|
||||||
|
|| stdout.contains("Config")
|
||||||
|
|| stdout.contains("Doctor"),
|
||||||
|
"unexpected stdout for {args:?}: {stdout}"
|
||||||
|
);
|
||||||
|
assert!(
|
||||||
|
!stderr.contains("missing Anthropic credentials")
|
||||||
|
&& !stderr.contains("auth_unavailable"),
|
||||||
|
"local smoke command {args:?} should not require live credentials: {stderr}"
|
||||||
|
);
|
||||||
|
assert!(
|
||||||
|
!stdout.contains("Thinking"),
|
||||||
|
"local smoke command {args:?} should not enter prompt runtime"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
fs::remove_dir_all(temp_dir).expect("cleanup temp dir");
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn local_subcommand_help_does_not_fall_through_to_runtime_or_provider_calls() {
|
fn local_subcommand_help_does_not_fall_through_to_runtime_or_provider_calls() {
|
||||||
let temp_dir = unique_temp_dir("subcommand-help");
|
let temp_dir = unique_temp_dir("subcommand-help");
|
||||||
@@ -258,6 +300,19 @@ fn local_subcommand_help_does_not_fall_through_to_runtime_or_provider_calls() {
|
|||||||
fs::remove_dir_all(temp_dir).expect("cleanup temp dir");
|
fs::remove_dir_all(temp_dir).expect("cleanup temp dir");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn offline_command_in(cwd: &Path, config_home: &Path) -> Command {
|
||||||
|
let mut command = command_in(cwd);
|
||||||
|
command
|
||||||
|
.env("CLAW_CONFIG_HOME", config_home)
|
||||||
|
.env_remove("ANTHROPIC_API_KEY")
|
||||||
|
.env_remove("ANTHROPIC_AUTH_TOKEN")
|
||||||
|
.env_remove("OPENAI_API_KEY")
|
||||||
|
.env_remove("XAI_API_KEY")
|
||||||
|
.env_remove("DASHSCOPE_API_KEY")
|
||||||
|
.env("ANTHROPIC_BASE_URL", "http://127.0.0.1:9");
|
||||||
|
command
|
||||||
|
}
|
||||||
|
|
||||||
fn command_in(cwd: &Path) -> Command {
|
fn command_in(cwd: &Path) -> Command {
|
||||||
let mut command = Command::new(env!("CARGO_BIN_EXE_claw"));
|
let mut command = Command::new(env!("CARGO_BIN_EXE_claw"));
|
||||||
command.current_dir(cwd);
|
command.current_dir(cwd);
|
||||||
|
|||||||
Reference in New Issue
Block a user