Skip to content

Commit

Permalink
Add failing test case for crash in #78
Browse files Browse the repository at this point in the history
  • Loading branch information
jonmmease committed Jul 1, 2023
1 parent 7499d16 commit d95e959
Show file tree
Hide file tree
Showing 2 changed files with 94 additions and 31 deletions.
93 changes: 62 additions & 31 deletions vl-convert-rs/tests/test_specs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -280,25 +280,26 @@ mod test_svg {
name: &str,
) {
initialize();
for _ in 1..1000 {
let vl_version = VlVersion::v5_8;

let vl_version = VlVersion::v5_8;
// Load example Vega-Lite spec
let vl_spec = load_vl_spec(name);

// Load example Vega-Lite spec
let vl_spec = load_vl_spec(name);
// Create Vega-Lite Converter and perform conversion
let mut converter = VlConverter::new();

// Create Vega-Lite Converter and perform conversion
let mut converter = VlConverter::new();
// Convert to vega first
let vg_spec =
block_on(converter.vegalite_to_vega(vl_spec.clone(), VlOpts { vl_version, ..Default::default() })).unwrap();

// Convert to vega first
let vg_spec =
block_on(converter.vegalite_to_vega(vl_spec.clone(), VlOpts{vl_version, ..Default::default()})).unwrap();
let svg = block_on(converter.vega_to_svg(vg_spec)).unwrap();
check_svg(name, vl_version, None, &svg);

let svg = block_on(converter.vega_to_svg(vg_spec)).unwrap();
check_svg(name, vl_version, None, &svg);

// Convert directly to svg
let svg = block_on(converter.vegalite_to_svg(vl_spec, VlOpts{vl_version, ..Default::default()})).unwrap();
check_svg(name, vl_version, None, &svg);
// Convert directly to svg
let svg = block_on(converter.vegalite_to_svg(vl_spec, VlOpts { vl_version, ..Default::default() })).unwrap();
check_svg(name, vl_version, None, &svg);
}
}

#[test]
Expand Down Expand Up @@ -328,28 +329,29 @@ mod test_png_no_theme {
scale: f32
) {
initialize();
for _ in 1..1000 {
let vl_version = VlVersion::v5_8;

let vl_version = VlVersion::v5_8;

// Load example Vega-Lite spec
let vl_spec = load_vl_spec(name);
// Load example Vega-Lite spec
let vl_spec = load_vl_spec(name);

// Create Vega-Lite Converter and perform conversion
let mut converter = VlConverter::new();
// Create Vega-Lite Converter and perform conversion
let mut converter = VlConverter::new();

// Convert to vega first
let vg_spec = block_on(
converter.vegalite_to_vega(vl_spec.clone(), VlOpts{vl_version, ..Default::default()})
).unwrap();
// Convert to vega first
let vg_spec = block_on(
converter.vegalite_to_vega(vl_spec.clone(), VlOpts { vl_version, ..Default::default() })
).unwrap();

let png_data = block_on(converter.vega_to_png(vg_spec, Some(scale))).unwrap();
check_png(name, vl_version, None, png_data.as_slice());
let png_data = block_on(converter.vega_to_png(vg_spec, Some(scale))).unwrap();
check_png(name, vl_version, None, png_data.as_slice());

// Convert directly to png
let png_data = block_on(
converter.vegalite_to_png(vl_spec, VlOpts{vl_version, ..Default::default()}, Some(scale))
).unwrap();
check_png(name, vl_version, None, png_data.as_slice());
// Convert directly to png
let png_data = block_on(
converter.vegalite_to_png(vl_spec, VlOpts { vl_version, ..Default::default() }, Some(scale))
).unwrap();
check_png(name, vl_version, None, png_data.as_slice());
}
}

#[test]
Expand Down Expand Up @@ -448,3 +450,32 @@ async fn test_font_with_quotes() {

check_png(name, vl_version, None, png_data.as_slice());
}


#[tokio::test]
async fn test_deno_url_crash_gh_78() {
let vl_version = VlVersion::v5_8;

// Load example Vega-Lite spec
let name = "lookup_urls";
let vl_spec = load_vl_spec(name);

// Create Vega-Lite Converter and perform conversion
let mut converter = VlConverter::new();

let mut svg_data: String = String::new();
for _ in 0..10000 {
svg_data = converter
.vegalite_to_svg(
vl_spec.clone(),
VlOpts {
vl_version,
..Default::default()
},
)
.await
.unwrap();
}

check_svg(name, vl_version, None, &svg_data);
}
32 changes: 32 additions & 0 deletions vl-convert-rs/tests/vl-specs/lookup_urls.vl.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{
"config": {"view": {"continuousWidth": 300, "continuousHeight": 300}},
"data": {
"url": "https://cdn.jsdelivr.net/npm/[email protected]/data/income.json"
},
"mark": {"type": "geoshape"},
"encoding": {
"color": {"field": "pct", "type": "quantitative"},
"shape": {"field": "geo", "type": "geojson"},
"tooltip": [
{"field": "name", "type": "nominal"},
{"field": "pct", "type": "quantitative"}
]
},
"height": 175,
"projection": {"type": "albersUsa"},
"transform": [
{
"lookup": "id",
"as": "geo",
"from": {
"data": {
"url": "https://cdn.jsdelivr.net/npm/[email protected]/data/us-10m.json",
"format": {"feature": "states", "type": "topojson"}
},
"key": "id"
}
}
],
"width": 300,
"$schema": "https://vega.github.io/schema/vega-lite/v5.8.0.json"
}

0 comments on commit d95e959

Please sign in to comment.