stprobe 0.2.3

A minimal CLI for inspecting safetensors headers
Documentation
mod common;

use assert_cmd::Command;
use predicates::prelude::*;
use tempfile::tempdir;

#[test]
fn prints_local_file_summary() {
    let dir = tempdir().expect("tempdir");
    let path = dir.path().join("sample.safetensors");
    common::write_sample_file(&path);
    let path_text = path.to_string_lossy().to_string();

    Command::cargo_bin("stprobe")
        .expect("build stprobe binary")
        .arg(&path)
        .assert()
        .success()
        .stdout(
            predicate::str::contains(format!("File: {path_text}"))
                .and(predicate::str::contains("Tensors: 2"))
                .and(predicate::str::contains("Parameters: 4"))
                .and(predicate::str::contains("Tensor-Bytes: 24"))
                .and(predicate::str::contains("  format = pt"))
                .and(predicate::str::contains("  F32: 8 bytes"))
                .and(predicate::str::contains("  I64: 16 bytes"))
                .and(predicate::str::contains("  embedding.ids"))
                .and(predicate::str::contains("  embedding.weight")),
        );
}

#[test]
fn returns_nonzero_for_invalid_files() {
    let dir = tempdir().expect("tempdir");
    let path = dir.path().join("broken.safetensors");
    std::fs::write(&path, b"not a safetensors file").expect("write invalid input");

    Command::cargo_bin("stprobe")
        .expect("build stprobe binary")
        .arg(&path)
        .assert()
        .failure()
        .stderr(predicate::str::contains("Error: invalid safetensors file:"));
}