cli-testing-specialist 1.0.10

Comprehensive testing framework for CLI tools - automated analysis, test generation, and security validation
Documentation
// Auto-generated tests for {{cli_name}} - Performance Category
// Generated by cli-testing-specialist v1.1.0

use assert_cmd::Command;
use std::time::Instant;

/// Test: Help command responds quickly (< 1 second)
#[test]
fn test_help_performance() {
    let start = Instant::now();

    let mut cmd = Command::cargo_bin("{{cli_name}}").unwrap();
    cmd.arg("--help")
        .assert()
        .success();

    let duration = start.elapsed();
    assert!(
        duration.as_secs() < 1,
        "Help command took {:?}, expected < 1 second",
        duration
    );
}

/// Test: Version command responds quickly (< 500ms)
#[test]
fn test_version_performance() {
    let start = Instant::now();

    let mut cmd = Command::cargo_bin("{{cli_name}}").unwrap();
    cmd.arg("--version")
        .assert()
        .success();

    let duration = start.elapsed();
    assert!(
        duration.as_millis() < 500,
        "Version command took {:?}, expected < 500ms",
        duration
    );
}

/// Test: Invalid command fails quickly (< 500ms)
#[test]
fn test_invalid_command_performance() {
    let start = Instant::now();

    let mut cmd = Command::cargo_bin("{{cli_name}}").unwrap();
    cmd.arg("--invalid-flag-xyz")
        .assert()
        .failure();

    let duration = start.elapsed();
    assert!(
        duration.as_millis() < 500,
        "Invalid command handling took {:?}, expected < 500ms",
        duration
    );
}

/// Test: Basic operation completes in reasonable time (< 5 seconds)
#[test]
fn test_basic_operation_performance() {
    let start = Instant::now();

    let mut cmd = Command::cargo_bin("{{cli_name}}").unwrap();
    cmd.assert();

    let duration = start.elapsed();
    assert!(
        duration.as_secs() < 5,
        "Basic operation took {:?}, expected < 5 seconds",
        duration
    );
}

/// Test: Repeated executions maintain consistent performance
#[test]
fn test_repeated_execution_consistency() {
    let mut durations = Vec::new();

    for _ in 0..5 {
        let start = Instant::now();

        let mut cmd = Command::cargo_bin("{{cli_name}}").unwrap();
        cmd.arg("--help")
            .assert()
            .success();

        durations.push(start.elapsed());
    }

    // Calculate average and check variance
    let avg_ms: u128 = durations.iter().map(|d| d.as_millis()).sum::<u128>() / durations.len() as u128;
    let max_ms = durations.iter().map(|d| d.as_millis()).max().unwrap();
    let min_ms = durations.iter().map(|d| d.as_millis()).min().unwrap();

    // Variance should be less than 50% of average
    let variance = max_ms - min_ms;
    assert!(
        variance < avg_ms / 2,
        "Performance variance too high: avg={}ms, variance={}ms",
        avg_ms,
        variance
    );
}