Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/downloader/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -544,7 +544,7 @@ async fn stream_file_cleans_up_tempfile_on_error() {
// Integration test that hits the real Hugging Face Hub. Marked `#[ignore]`
// per the issue acceptance criteria so CI does not depend on network access.
#[test]
#[ignore]
#[ignore = "hits the real Hugging Face Hub; CI must not depend on network access"]
fn live_download_smoke_test() {
// Use a tiny repo so the test stays cheap when explicitly requested with
// `cargo test -- --ignored`.
Expand Down
4 changes: 2 additions & 2 deletions src/models/diffusion_gemma/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -445,7 +445,7 @@ fn dense_windowed_mask_is_correct_for_multi_token_offset_forward() {
///
/// `cargo test --release --lib models::diffusion_gemma::tests::real_model_forward_determinism -- --ignored --nocapture`
#[test]
#[ignore]
#[ignore = "real-model regression test; needs the DiffusionGemma checkpoint on disk"]
fn real_model_forward_determinism() {
let dir = std::path::Path::new(env!("CARGO_MANIFEST_DIR"))
.join("models/diffusiongemma-26B-A4B-it-4bit");
Expand Down Expand Up @@ -800,7 +800,7 @@ fn sanitize_drops_clip_calibration_when_unclipped() {
///
/// `cargo test --release --lib models::diffusion_gemma::tests::real_model_loads_vision_front_end -- --ignored --nocapture`
#[test]
#[ignore]
#[ignore = "real-model regression test; needs the DiffusionGemma checkpoint on disk"]
fn real_model_loads_vision_front_end() {
let dir = std::path::Path::new(env!("CARGO_MANIFEST_DIR"))
.join("models/diffusiongemma-26B-A4B-it-4bit");
Expand Down
8 changes: 4 additions & 4 deletions src/tokenizer/tiktoken_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ fn qwen_image_tags_encode_as_single_specials() {
}

#[test]
#[ignore] // Requires model files
#[ignore = "requires model files on disk"]
fn test_load_tiktoken() {
let tokenizer = TiktokenTokenizer::from_file(&tiktoken_file(), &test_model_path());
assert!(
Expand All @@ -132,7 +132,7 @@ fn test_load_tiktoken() {
}

#[test]
#[ignore] // Requires model files
#[ignore = "requires model files on disk"]
fn test_encode_decode_roundtrip() {
let t = TiktokenTokenizer::from_file(&tiktoken_file(), &test_model_path()).unwrap();
let text = "Hello, world!";
Expand All @@ -143,7 +143,7 @@ fn test_encode_decode_roundtrip() {
}

#[test]
#[ignore] // Requires model files
#[ignore = "requires model files on disk"]
fn test_encode_chinese() {
let t = TiktokenTokenizer::from_file(&tiktoken_file(), &test_model_path()).unwrap();
let text = "你好,世界";
Expand All @@ -154,7 +154,7 @@ fn test_encode_chinese() {
}

#[test]
#[ignore] // Requires model files
#[ignore = "requires model files on disk"]
fn test_special_tokens() {
let t = TiktokenTokenizer::from_file(&tiktoken_file(), &test_model_path()).unwrap();
let text = "<|eos|>";
Expand Down
10 changes: 5 additions & 5 deletions tests/deepseek_v4_real_model.rs
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ use mlxcel::{CxxGenerator, LanguageModel, SamplingConfig, initialize_runtime, lo
const MODEL_DIR: &str = "deepseek-v4-flash-4bit";

#[test]
#[ignore]
#[ignore = "real-model heavy (~151 GB checkpoint on disk; needs a high-memory Apple Silicon host)"]
fn deepseek_v4_real_model_loads_and_generates_coherently() {
let model_dir = repo_model_dir(MODEL_DIR);
if !model_dir.join("config.json").exists() {
Expand Down Expand Up @@ -108,7 +108,7 @@ fn deepseek_v4_real_model_loads_and_generates_coherently() {
}

#[test]
#[ignore]
#[ignore = "real-model heavy (~151 GB checkpoint on disk; needs a high-memory Apple Silicon host)"]
fn deepseek_v4_real_model_decode_crosses_pooling_windows() {
// A longer decode than one compress window (ratio 4) plus one full
// simple window boundary region, so decode-mode pooling emission and the
Expand Down Expand Up @@ -142,7 +142,7 @@ fn deepseek_v4_real_model_decode_crosses_pooling_windows() {
}

#[test]
#[ignore]
#[ignore = "real-model heavy (~151 GB checkpoint on disk; needs a high-memory Apple Silicon host)"]
fn deepseek_v4_real_model_long_context_hits_sparse_and_compressed_paths() {
// The sparse split-softmax and the batched/decode HiSA selection only
// run once a ratio-4 layer's pooled count exceeds index_topk (512), i.e.
Expand Down Expand Up @@ -233,7 +233,7 @@ fn deepseek_v4_real_model_long_context_hits_sparse_and_compressed_paths() {
/// world knowledge. Making the answer purely synthetic would test retrieval
/// harder and be far less stable on a base checkpoint at this length.
#[test]
#[ignore]
#[ignore = "real-model heavy (~151 GB checkpoint on disk; needs a high-memory Apple Silicon host)"]
fn deepseek_v4_real_model_long_context_engages_hisa_hierarchy() {
let model_dir = repo_model_dir(MODEL_DIR);
if !model_dir.join("config.json").exists() {
Expand Down Expand Up @@ -359,7 +359,7 @@ fn deepseek_v4_real_model_long_context_engages_hisa_hierarchy() {
/// crash or a degenerate output in any band shows up.
///
#[test]
#[ignore]
#[ignore = "real-model heavy (~151 GB checkpoint on disk; needs a high-memory Apple Silicon host)"]
fn deepseek_v4_real_model_hisa_decode_cost_scaling() {
let model_dir = repo_model_dir(MODEL_DIR);
if !model_dir.join("config.json").exists() {
Expand Down
2 changes: 1 addition & 1 deletion tests/ernie4_5_moe_vl_parity.rs
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ fn text_only_forward_produces_finite_logits() {
/// special-token-only degeneration is visible. Ignored by default; run with
/// `--ignored --nocapture` when debugging.
#[test]
#[ignore]
#[ignore = "diagnostic; needs a real ERNIE-4.5 MoE VL checkpoint on disk"]
fn debug_image_greedy_ids() {
let Some(dir) = model_dir() else { return };
let (model, tokenizer) = mlxcel::load_model(&dir).expect("load ERNIE-4.5-VL");
Expand Down
6 changes: 3 additions & 3 deletions tests/got_ocr_prompt_parity.rs
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ fn resolve_checkpoint() -> Option<std::path::PathBuf> {
}

#[test]
#[ignore]
#[ignore = "needs a GOT-OCR 2.0 checkpoint on disk"]
fn got_prompt_ids_match_the_reference_tokenizer() {
let Some(model_dir) = resolve_checkpoint() else {
eprintln!(
Expand Down Expand Up @@ -137,7 +137,7 @@ fn got_prompt_ids_match_the_reference_tokenizer() {
}

#[test]
#[ignore]
#[ignore = "needs a GOT-OCR 2.0 checkpoint on disk"]
fn got_format_mode_prompt_ids_match_the_reference_tokenizer() {
let Some(model_dir) = resolve_checkpoint() else {
eprintln!("Skipping: no GOT-OCR 2.0 checkpoint found.");
Expand All @@ -164,7 +164,7 @@ fn got_format_mode_prompt_ids_match_the_reference_tokenizer() {
/// id. The render is the builtin GOT template's output, which is what
/// `ChatTemplateProcessor` hands the runtime for a chat request.
#[test]
#[ignore]
#[ignore = "needs a GOT-OCR 2.0 checkpoint on disk"]
fn server_render_and_cli_instruction_tokenize_identically() {
let Some(model_dir) = resolve_checkpoint() else {
eprintln!("Skipping: no GOT-OCR 2.0 checkpoint found.");
Expand Down
12 changes: 6 additions & 6 deletions tests/qwen38_mtp_chain_parity.rs
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ fn forward_tokens(model: &Qwen35Model, tokens: &[i32], caches: &mut [Qwen3NextCa
}

#[test]
#[ignore]
#[ignore = "real-model heavy"]
fn block_verify_chain_matches_single_token_chain() {
let target_dir = CANDIDATE_TARGETS
.iter()
Expand Down Expand Up @@ -199,7 +199,7 @@ fn block_verify_chain_matches_single_token_chain() {
/// every GPU is that a passing probe implies a passing chain, because the
/// gate turns MTP on off the back of it.
#[test]
#[ignore]
#[ignore = "real-model heavy"]
fn the_exactness_probe_never_passes_where_the_block_chain_diverges() {
let target_dir = CANDIDATE_TARGETS
.iter()
Expand Down Expand Up @@ -444,7 +444,7 @@ fn assert_parity_and_standard_arms_are_distinguishable() {
/// cargo test --test qwen38_mtp_chain_parity --release --features metal,accelerate -- --ignored --nocapture parity_kernel_cost
/// ```
#[test]
#[ignore]
#[ignore = "real-model heavy"]
fn parity_kernel_cost_vs_standard() {
if !mlxcel_core::metal_is_available() {
eprintln!("skipping: chain-parity kernel is Metal-only");
Expand Down Expand Up @@ -520,7 +520,7 @@ fn parity_kernel_cost_vs_standard() {
/// cargo test --test qwen38_mtp_chain_parity --release --features metal,accelerate -- --ignored --nocapture verify_forward_cost
/// ```
#[test]
#[ignore]
#[ignore = "real-model heavy"]
fn verify_forward_cost_scaling() {
let Some(target_dir) = CANDIDATE_TARGETS
.iter()
Expand Down Expand Up @@ -609,7 +609,7 @@ fn greedy() -> SamplingConfig {
/// runs. Any divergence from the classic chain is therefore in the adapter's
/// prefill or the multi-token verify forward itself.
#[test]
#[ignore]
#[ignore = "real-model heavy; needs a Qwen 3.5-family checkpoint on disk"]
fn adapter_chain_with_perfect_drafts_matches_classic_chain() {
let Some(target_dir) = CANDIDATE_TARGETS
.iter()
Expand Down Expand Up @@ -675,7 +675,7 @@ fn adapter_chain_with_perfect_drafts_matches_classic_chain() {
/// conditions on the accepted prefix, so its argmax must still follow the
/// classic chain; any divergence isolates the rollback path.
#[test]
#[ignore]
#[ignore = "real-model heavy; needs a Qwen 3.5-family checkpoint on disk"]
fn adapter_chain_with_rejected_drafts_matches_classic_chain() {
let Some(target_dir) = CANDIDATE_TARGETS
.iter()
Expand Down
2 changes: 1 addition & 1 deletion tests/qwen3_omni_moe_parity.rs
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ fn audio_out_len_formula() {
/// Diagnostic: greedy-decode a few steps after a TEMPLATED image prefill and
/// dump raw ids. Ignored by default.
#[test]
#[ignore]
#[ignore = "diagnostic; needs a real Qwen3-Omni checkpoint on disk"]
fn debug_templated_image_greedy_ids() {
let Some(dir) = model_dir() else { return };
let (model, tokenizer) = mlxcel::load_model(&dir).expect("load qwen3-omni");
Expand Down