mirror of
https://github.com/YspCoder/clawgo.git
synced 2026-05-04 12:47:28 +08:00
fix shell risk gate dry-run flow for destructive git clean
This commit is contained in:
45
pkg/tools/shell_test.go
Normal file
45
pkg/tools/shell_test.go
Normal file
@@ -0,0 +1,45 @@
|
||||
package tools
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"clawgo/pkg/config"
|
||||
)
|
||||
|
||||
func TestApplyRiskGate_DryRunCanBeBypassedWithForce(t *testing.T) {
|
||||
tool := &ExecTool{riskCfg: config.RiskConfig{
|
||||
Enabled: true,
|
||||
AllowDestructive: true,
|
||||
RequireDryRun: true,
|
||||
RequireForceFlag: false,
|
||||
}}
|
||||
|
||||
msg, dryRun := tool.applyRiskGate("git clean -fd", true)
|
||||
if msg != "" || dryRun != "" {
|
||||
t.Fatalf("expected force=true to allow execution after dry-run step, got msg=%q dryRun=%q", msg, dryRun)
|
||||
}
|
||||
}
|
||||
|
||||
func TestApplyRiskGate_RequiresDryRunWithoutForce(t *testing.T) {
|
||||
tool := &ExecTool{riskCfg: config.RiskConfig{
|
||||
Enabled: true,
|
||||
AllowDestructive: true,
|
||||
RequireDryRun: true,
|
||||
RequireForceFlag: false,
|
||||
}}
|
||||
|
||||
msg, dryRun := tool.applyRiskGate("git clean -fd", false)
|
||||
if msg == "" {
|
||||
t.Fatal("expected dry-run block message")
|
||||
}
|
||||
if dryRun == "" {
|
||||
t.Fatal("expected dry-run command")
|
||||
}
|
||||
}
|
||||
|
||||
func TestAssessCommandRisk_GitCleanIsDestructive(t *testing.T) {
|
||||
assessment := assessCommandRisk("git clean -fd")
|
||||
if assessment.Level != RiskDestructive {
|
||||
t.Fatalf("expected git clean to be destructive, got %s", assessment.Level)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user