diff --git a/tests/tests/pipeline.rs b/tests/tests/pipeline.rs new file mode 100644 index 00000000000..357207025a9 --- /dev/null +++ b/tests/tests/pipeline.rs @@ -0,0 +1,36 @@ +use wasm_bindgen_test::*; +use wgpu_test::{fail, initialize_test, FailureCase, TestParameters}; + +#[test] +#[wasm_bindgen_test] +fn pipeline_default_layout_bad_module() { + // Create an invalid shader and a compute pipeline using it with a + // default bindgroup layout, and then ask for its layout. + // Validation should fail but there should be not panic. + let parameters = TestParameters::default() + // https://github.com/gfx-rs/wgpu/issues/4167 + .expect_fail(FailureCase::always()); + initialize_test(parameters, |ctx| { + ctx.device.push_error_scope(wgpu::ErrorFilter::Validation); + + fail(&ctx.device, || { + let module = ctx + .device + .create_shader_module(wgpu::ShaderModuleDescriptor { + label: None, + source: wgpu::ShaderSource::Wgsl("not valid wgsl".into()), + }); + + let pipeline = ctx + .device + .create_compute_pipeline(&wgpu::ComputePipelineDescriptor { + label: Some("mandelbrot compute pipeline"), + layout: None, + module: &module, + entry_point: "doesn't exist", + }); + + pipeline.get_bind_group_layout(0); + }); + }); +} diff --git a/tests/tests/root.rs b/tests/tests/root.rs index b2695fd8275..ff910ef8770 100644 --- a/tests/tests/root.rs +++ b/tests/tests/root.rs @@ -19,6 +19,7 @@ mod external_texture; mod instance; mod occlusion_query; mod partially_bounded_arrays; +mod pipeline; mod poll; mod query_set; mod queue_transfer;