Skip to content

Commit 22923ca

Browse files
committed
feat: enrich vox stats + fix broken STT tests
- Stats now show total speech time, per-backend/language breakdown, throughput, avg latency, and visual bar chart - Fix STT tests for mlx-whisper migration (python3 -c inline script) - Fix stats test for new empty-state message
1 parent 6257f71 commit 22923ca

2 files changed

Lines changed: 20 additions & 26 deletions

File tree

tests/cli_test.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@ fn test_stats_empty() {
271271
.args(["stats"])
272272
.assert()
273273
.success()
274-
.stdout(predicate::str::contains("Total requests: 0"));
274+
.stdout(predicate::str::contains("No usage recorded yet."));
275275
}
276276

277277
// --- Init subcommand ---

tests/stt_test.rs

Lines changed: 19 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -7,51 +7,45 @@ use vox::stt;
77
#[test]
88
fn build_transcribe_command_basic() {
99
let cmd = stt::build_transcribe_command("/tmp/audio.wav", None);
10-
let args: Vec<&OsStr> = cmd.get_args().collect();
1110
assert_eq!(cmd.get_program(), "python3");
12-
assert!(args.contains(&OsStr::new("-m")));
13-
assert!(args.contains(&OsStr::new("mlx_audio.stt.generate")));
14-
assert!(args.contains(&OsStr::new("--audio")));
15-
assert!(args.contains(&OsStr::new("/tmp/audio.wav")));
16-
assert!(args.contains(&OsStr::new("--format")));
17-
assert!(args.contains(&OsStr::new("txt")));
11+
let args: Vec<&OsStr> = cmd.get_args().collect();
12+
assert_eq!(args.len(), 2);
13+
assert_eq!(args[0], "-c");
14+
let script = args[1].to_string_lossy();
15+
assert!(script.contains("mlx_whisper"));
16+
assert!(script.contains("/tmp/audio.wav"));
17+
assert!(script.contains("language='en'")); // default language
1818
}
1919

2020
#[test]
2121
fn build_transcribe_command_with_language() {
2222
let cmd = stt::build_transcribe_command("/tmp/audio.wav", Some("fr"));
2323
let args: Vec<&OsStr> = cmd.get_args().collect();
24-
assert!(args.contains(&OsStr::new("--language")));
25-
assert!(args.contains(&OsStr::new("fr")));
24+
let script = args[1].to_string_lossy();
25+
assert!(script.contains("language='fr'"));
2626
}
2727

2828
#[test]
29-
fn build_transcribe_command_no_language_flag_when_none() {
29+
fn build_transcribe_command_no_language_defaults_to_en() {
3030
let cmd = stt::build_transcribe_command("/tmp/audio.wav", None);
3131
let args: Vec<&OsStr> = cmd.get_args().collect();
32-
assert!(!args.contains(&OsStr::new("--language")));
32+
let script = args[1].to_string_lossy();
33+
assert!(script.contains("language='en'"));
3334
}
3435

3536
#[test]
3637
fn build_transcribe_command_preserves_audio_path() {
3738
let cmd = stt::build_transcribe_command("/home/user/recording.wav", None);
3839
let args: Vec<&OsStr> = cmd.get_args().collect();
39-
assert!(args.contains(&OsStr::new("/home/user/recording.wav")));
40+
let script = args[1].to_string_lossy();
41+
assert!(script.contains("/home/user/recording.wav"));
4042
}
4143

4244
#[test]
43-
fn build_transcribe_command_arg_order() {
44-
let cmd = stt::build_transcribe_command("/tmp/a.wav", Some("en"));
45+
fn build_transcribe_command_uses_whisper_model() {
46+
let cmd = stt::build_transcribe_command("/tmp/a.wav", Some("ja"));
4547
let args: Vec<&OsStr> = cmd.get_args().collect();
46-
// -m must come before mlx_audio.stt.generate
47-
let m_pos = args.iter().position(|a| *a == "-m").unwrap();
48-
let mod_pos = args
49-
.iter()
50-
.position(|a| *a == "mlx_audio.stt.generate")
51-
.unwrap();
52-
assert!(m_pos < mod_pos);
53-
// --audio must come before --language
54-
let audio_pos = args.iter().position(|a| *a == "--audio").unwrap();
55-
let lang_pos = args.iter().position(|a| *a == "--language").unwrap();
56-
assert!(audio_pos < lang_pos);
48+
let script = args[1].to_string_lossy();
49+
assert!(script.contains("whisper-large-v3-turbo"));
50+
assert!(script.contains("language='ja'"));
5751
}

0 commit comments

Comments
 (0)