test: ignore known bug reproductions by default

These tests reproduce known bugs and are marked with #[ignore] to prevent
them from failing standard test runs.

They can be run explicitly using 'cargo test --test bug_hunt_reproductions
-- --ignored --nocapture'.

Co-Authored-By: fiddlerwoaroof/git-smart-commit (unsloth/gemma-4-26B-A4B-it-qat-GGUF:UD-Q4_K_XL)
This commit is contained in:
Edward Langley
2026-09-21 13:59:38 -07:00
parent 8c84fd95ea
commit 0d13ea5f51
+21 -21
View File
@@ -1,5 +1,5 @@
//! Report-only bug-hunt reproductions: assert the intended behavior, without fixes.
//! Run with `cargo test --test bug_hunt_reproductions -- --nocapture`.
//! Run with `cargo test --test bug_hunt_reproductions -- --ignored --nocapture`.
use improvise_io::import::csv_parser::parse_csv_bytes_with_warnings;
use improvise_io::{
@@ -7,8 +7,8 @@ use improvise_io::{
persistence::{format_md, parse_md},
workbook::Workbook,
};
// Reproduction for improvise-3yv3.
#[test]
#[ignore = "improvise-3yv3: known bug reproduction"]
fn grouped_item_order_survives_save() {
let mut w = Workbook::new("test");
w.add_category("C").unwrap();
@@ -20,8 +20,8 @@ fn grouped_item_order_survives_save() {
w.model.category("C").unwrap().ordered_item_names()
);
}
// Reproduction for improvise-ppru.
#[test]
#[ignore = "improvise-ppru: known bug reproduction"]
fn aggregation_survives_save() {
let mut w = Workbook::new("test");
w.add_item("_Measure", "Price").unwrap();
@@ -33,8 +33,8 @@ fn aggregation_survives_save() {
r.model.measure_agg
);
}
// Reproduction for improvise-m4rv.
#[test]
#[ignore = "improvise-m4rv: known bug reproduction"]
fn deleted_default_stays_deleted() {
let mut w = Workbook::new("test");
w.create_view("Custom");
@@ -45,16 +45,16 @@ fn deleted_default_stays_deleted() {
w.views.keys().collect::<Vec<_>>()
);
}
// Reproduction for improvise-jc95.
#[test]
#[ignore = "improvise-jc95: known bug reproduction"]
fn csv_nonfinite_is_not_zero() {
for token in ["NaN", "inf", "-inf", "1e999"] {
let (r, _) = parse_csv_bytes_with_warnings(format!("Value\n{token}\n").as_bytes()).unwrap();
assert_ne!(r[0]["Value"].as_f64(), Some(0.0), "{token} became zero");
}
}
// Reproduction for improvise-5hfh.
#[test]
#[ignore = "improvise-5hfh: known bug reproduction"]
fn duplicate_csv_headers_not_silent() {
let result = parse_csv_bytes_with_warnings(b"A,A\n1,2\n");
assert!(
@@ -63,8 +63,8 @@ fn duplicate_csv_headers_not_silent() {
);
}
// Reproduction for improvise-l1f5.
#[test]
#[ignore = "improvise-l1f5: known bug reproduction"]
fn blank_measure_still_infers_numeric() {
use improvise_io::import::{analyzer::FieldKind, wizard::ImportPipeline};
let (records, _) = parse_csv_bytes_with_warnings(b"Region,Revenue\nEast,10\nWest,\n").unwrap();
@@ -72,8 +72,8 @@ fn blank_measure_still_infers_numeric() {
let proposal = p.proposals.iter().find(|p| p.field == "Revenue").unwrap();
assert_eq!(proposal.kind, FieldKind::Measure);
}
// Reproduction for improvise-2cw9.
#[test]
#[ignore = "improvise-2cw9: known bug reproduction"]
fn repeated_import_coordinates_not_silently_overwritten() {
use improvise_io::import::wizard::ImportPipeline;
let (records, _) =
@@ -92,8 +92,8 @@ fn repeated_import_coordinates_not_silently_overwritten() {
"total {total}, no warning {warnings:?}"
);
}
// Reproduction for improvise-55v2.
#[test]
#[ignore = "improvise-55v2: known bug reproduction"]
fn nonfinite_cell_value_survives_wire() {
use improvise::protocol::{CellValue, Command};
let cmd = Command::SetYanked(Some(CellValue::Number(f64::INFINITY)));
@@ -103,8 +103,8 @@ fn nonfinite_cell_value_survives_wire() {
"unreadable wire: {json}"
);
}
// Reproduction for improvise-8l0c.
#[test]
#[ignore = "improvise-8l0c: known bug reproduction"]
fn formula_panel_unicode_does_not_panic() {
use improvise::{
protocol::FormulaCache,
@@ -124,8 +124,8 @@ fn formula_panel_unicode_does_not_panic() {
.render(area, &mut buffer);
}
// Reproduction for improvise-vw47.
#[test]
#[ignore = "improvise-vw47: known bug reproduction"]
fn new_view_after_delete_does_not_overwrite_survivor() {
use improvise::{
command::{
@@ -145,8 +145,8 @@ fn new_view_after_delete_does_not_overwrite_survivor() {
assert_eq!(app.model_state.workbook.views["View 3"].number_format, ".4");
assert_eq!(app.model_state.workbook.views.len(), 3);
}
// Reproduction for improvise-cj4u.
#[test]
#[ignore = "improvise-cj4u: known bug reproduction"]
fn label_stays_off_axes_in_new_view() {
use improvise_io::view::Axis;
let mut w = Workbook::new("test");
@@ -154,8 +154,8 @@ fn label_stays_off_axes_in_new_view() {
assert_eq!(w.active_view().axis_of("Description"), Axis::None);
assert_eq!(w.create_view("Other").axis_of("Description"), Axis::None);
}
// Reproduction for improvise-k8i.
#[test]
#[ignore = "improvise-k8i: known bug reproduction"]
fn long_csv_row_is_not_silently_dropped() {
let r = parse_csv_bytes_with_warnings(b"A,B\n1,2,3\n");
assert!(
@@ -175,8 +175,8 @@ fn literal_cr_name_survives_roundtrip() {
vec!["x\ry"]
);
}
// Reproduction for improvise-pnf5.
#[test]
#[ignore = "improvise-pnf5: known bug reproduction"]
fn scalar_cell_survives_roundtrip() {
use improvise_io::model::cell::{CellKey, CellValue};
let mut w = Workbook::new("test");
@@ -204,8 +204,8 @@ fn revenue_book() -> Workbook {
);
w
}
// Reproduction for improvise-s2w3.
#[test]
#[ignore = "improvise-s2w3: known bug reproduction"]
fn sum_of_derived_measure_agrees_with_identity_expression() {
use improvise_io::{formula::parse_formula, model::cell::CellKey};
let mut w = revenue_book();
@@ -221,8 +221,8 @@ fn sum_of_derived_measure_agrees_with_identity_expression() {
let b = w.model.evaluate(&key.with("_Measure", "B"));
assert_eq!(a, b);
}
// Reproduction for improvise-s08t.
#[test]
#[ignore = "improvise-s08t: known bug reproduction"]
fn unknown_aggregate_reference_is_not_all_measures() {
use improvise_io::{
formula::parse_formula,
@@ -241,8 +241,8 @@ fn unknown_aggregate_reference_is_not_all_measures() {
w.model.evaluate(&key)
);
}
// Reproduction for improvise-3b2b.
#[test]
#[ignore = "improvise-3b2b: known bug reproduction"]
fn category_panel_cannot_delete_required_virtual() {
use improvise::{
command::{
@@ -265,8 +265,8 @@ fn category_panel_cannot_delete_required_virtual() {
app.view_state.status_msg
);
}
// Reproduction for improvise-8l0c.
#[test]
#[ignore = "improvise-8l0c: known bug reproduction"]
fn formula_panel_handles_zero_inner_width() {
use improvise::{
protocol::FormulaCache,
@@ -286,8 +286,8 @@ fn formula_panel_handles_zero_inner_width() {
.render(area, &mut buffer);
}
// Reproduction for improvise-pnf5.
#[test]
#[ignore = "improvise-pnf5: known bug reproduction"]
fn save_with_unfinished_record_is_readable() {
use improvise::{
command::{
@@ -309,8 +309,8 @@ fn save_with_unfinished_record_is_readable() {
assert!(parse_md(&text).is_ok(), "saved unparseable file: {text}");
}
// Reproduction for improvise-7iww.
#[test]
#[ignore = "improvise-7iww: known bug reproduction"]
fn circular_formula_not_a_plausible_cached_number() {
use improvise_io::{
formula::parse_formula,
@@ -335,8 +335,8 @@ fn circular_formula_not_a_plausible_cached_number() {
"circular formula became {actual:?}"
);
}
// Reproduction for improvise-yae4.
#[test]
#[ignore = "improvise-yae4: known bug reproduction"]
fn wide_cell_clamps_without_overflow() {
use improvise::{
model::cell::{CellKey, CellValue},