diff --git a/crates/engine/src/commands/render_queue.rs b/crates/engine/src/commands/render_queue.rs index ab9a785a..36c45099 100644 --- a/crates/engine/src/commands/render_queue.rs +++ b/crates/engine/src/commands/render_queue.rs @@ -526,7 +526,12 @@ fn add(s: &mut Session, p: &Value) -> Result { } } apply_settings(&mut it.settings, &templates, p, "renderQueue.add")?; - apply_output(&mut it.output, &templates, s.state.region_of_interest, p, "renderQueue.add")?; + // "template" belongs to Render Settings on add, not Output Module. + let mut output_params = p.clone(); + if let Some(object) = output_params.as_object_mut() { + object.remove("template"); + } + apply_output(&mut it.output, &templates, s.state.region_of_interest, &output_params, "renderQueue.add")?; if let Some(l) = enum_p(p, "log", "renderQueue.add", RenderLog::parse, "errorsOnly|plusSettings|plusPerFrameInfo")? { it.log = l; } diff --git a/crates/engine/src/rq_tests.rs b/crates/engine/src/rq_tests.rs index 60a73acf..6f9de295 100644 --- a/crates/engine/src/rq_tests.rs +++ b/crates/engine/src/rq_tests.rs @@ -165,3 +165,21 @@ fn without_exporter() { assert_eq!(f["formats"].as_array().unwrap().len(), 12); assert_eq!(f["formats"][0]["available"], false); } + +#[test] +fn queue_add_accepts_render_settings_templates_without_output_module_namesakes() { + let mut s = Session::default(); + s.execute("comp.new", json!({"name":"C","width":64,"height":64,"duration":1})).unwrap(); + let all = s.execute("renderQueue.templates", json!({})).unwrap(); + let names = all["renderSettings"].as_array().unwrap(); + assert!(!names.is_empty()); + for row in names { + let name = row["name"].as_str().unwrap(); + let expected = s.project.render_templates.render_settings(name).unwrap(); + s.execute("renderQueue.add", json!({"comp":"C","template":name})).unwrap(); + assert_eq!(s.project.render_queue.last().unwrap().settings, expected); + } + let count = s.project.render_queue.len(); + assert!(s.execute("renderQueue.add", json!({"comp":"C","template":"Unknown Settings"})).is_err()); + assert_eq!(s.project.render_queue.len(), count); +}