diff --git a/Cargo.lock b/Cargo.lock index 1a8ab2b..6a4be07 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -789,7 +789,9 @@ name = "librashader-preprocess" version = "0.1.0-beta.16" dependencies = [ "encoding_rs", + "glob", "librashader-common", + "librashader-presets", "nom", "rustc-hash", "thiserror", diff --git a/librashader-preprocess/Cargo.toml b/librashader-preprocess/Cargo.toml index c8de61b..6bfe47d 100644 --- a/librashader-preprocess/Cargo.toml +++ b/librashader-preprocess/Cargo.toml @@ -21,3 +21,7 @@ encoding_rs = "0.8.31" [features] default = [ "line_directives" ] line_directives = [] + +[dev-dependencies] +glob = "0.3.1" +librashader-presets = { version = "0.1.0-beta.16", path = "../librashader-presets"} \ No newline at end of file diff --git a/librashader-preprocess/tests/parse_all.rs b/librashader-preprocess/tests/parse_all.rs new file mode 100644 index 0000000..8ea0991 --- /dev/null +++ b/librashader-preprocess/tests/parse_all.rs @@ -0,0 +1,19 @@ +use glob::glob; +use librashader_preprocess::{PreprocessError, ShaderSource}; +use librashader_presets::ShaderPreset; +#[test] +fn preprocess_all_slang_presets_parsed() { + for entry in glob("../test/slang-shaders/**/*.slangp").unwrap() { + if let Ok(path) = entry { + if let Ok(preset) = ShaderPreset::try_parse(&path) { + for shader in preset.shaders { + ShaderSource::load(&shader.name).expect(&format!( + "Failed to preprocess shader {} from preset {}", + shader.name.display(), + path.display() + )); + } + } + } + } +}