diff options
| author | Laurenz <laurmaedje@gmail.com> | 2020-12-21 00:47:47 +0100 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2020-12-21 00:47:47 +0100 |
| commit | c44ebf876f6ab09fe1629d980efc5c4878a6a5a5 (patch) | |
| tree | c01024faa176a60cada492c6e2277dc2235e4bea | |
| parent | e59de77f96d43fa675c5c733ccf39ec2c22e949e (diff) | |
Add error cases for [font] 🧯
| -rw-r--r-- | src/library/style.rs | 6 | ||||
| -rw-r--r-- | tests/typ/func-font-error.typ | 13 |
2 files changed, 15 insertions, 4 deletions
diff --git a/src/library/style.rs b/src/library/style.rs index 0cc40f94..43380249 100644 --- a/src/library/style.rs +++ b/src/library/style.rs @@ -105,9 +105,9 @@ pub fn font(mut args: Args, ctx: &mut EvalContext) -> Value { ctx.state.font.variant.stretch = stretch; } - struct FontList(Vec<String>); + struct FamilyList(Vec<String>); - try_from_match!(FontList["font or list of fonts"] @ span: + try_from_match!(FamilyList["family or list of families"] @ span: Value::Str(v) => Self(vec![v.to_lowercase()]), Value::Dict(v) => Self(Args(v.span_with(span)) .find_all::<StringLike>() @@ -117,7 +117,7 @@ pub fn font(mut args: Args, ctx: &mut EvalContext) -> Value { ); for &class in &["serif", "sans-serif", "monospace", "emoji", "math"] { - if let Some(list) = args.get::<_, FontList>(ctx, class) { + if let Some(list) = args.get::<_, FamilyList>(ctx, class) { Rc::make_mut(&mut ctx.state.font.families) .update_class_list(class.to_string(), list.0); needs_flattening = true; diff --git a/tests/typ/func-font-error.typ b/tests/typ/func-font-error.typ index 34ff5837..8de754ae 100644 --- a/tests/typ/func-font-error.typ +++ b/tests/typ/func-font-error.typ @@ -1,6 +1,17 @@ // Test error cases of the `font` function. +// Not one of the valid things for positional arguments. +[font: false] + +// Wrong types. +[font: style=bold, weight="thin", emoji=0] + +// Non-existing argument. [font: something="invalid"] // compare-ref: false -// error: 3:8-3:27 unexpected argument +// error: 4:8-4:13 unexpected argument +// error: 7:14-7:18 invalid font style +// error: 7:27-7:33 expected font weight, found string +// error: 7:41-7:42 expected family or list of families, found integer +// error: 10:8-10:27 unexpected argument |
