I ran into a bug a while back that prevent me from using the plotters library for months. I did finally figure out what was causing it: a file in my font library documented in issue #231. Removing the file fixed my issue, but the opaque problem is sure to ensnare others.
This PR adds a LoadError(Cow<'static, str>) variant to SelectionError enum. It removes Copy because Cow isn't copyable. And now when I run the test suite with the bad file in place, it reports this error, which is far and away more helpful than before.
> RUST_BACKTRACE=1 cargo test --all
...
running 5 tests
test loaders::core_text::test::test_core_text_to_css_font_stretch ... ok
test loaders::core_text::test::test_core_text_to_css_font_weight ... ok
test sources::core_text::test::test_css_to_core_text_font_stretch ... ok
test sources::core_text::test::test_css_to_core_text_font_weight ... ok
test loaders::core_text::test::test_from_core_graphics_font ... FAILED
failures:
---- loaders::core_text::test::test_from_core_graphics_font stdout ----
thread 'loaders::core_text::test::test_from_core_graphics_font' panicked at src/loaders/core_text.rs:940:14:
called `Result::unwrap()` on an `Err` value: LoadError("Parse error on path \"/Users/shane/Library/Fonts/Arial\"")
stack backtrace:
0: rust_begin_unwind
at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library/std/src/panicking.rs:645:5
1: core::panicking::panic_fmt
at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library/core/src/panicking.rs:72:14
2: core::result::unwrap_failed
at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library/core/src/result.rs:1649:5
3: core::result::Result<T,E>::unwrap
at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library/core/src/result.rs:1073:23
4: font_kit::loaders::core_text::test::test_from_core_graphics_font
at ./src/loaders/core_text.rs:938:21
5: font_kit::loaders::core_text::test::test_from_core_graphics_font::{{closure}}
at ./src/loaders/core_text.rs:937:38
6: core::ops::function::FnOnce::call_once
at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library/core/src/ops/function.rs:250:5
7: core::ops::function::FnOnce::call_once
at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library/core/src/ops/function.rs:250:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
failures:
loaders::core_text::test::test_from_core_graphics_font
test result: FAILED. 4 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
error: test failed, to rerun pass `--lib`
A variant that used String would suffice for this case. I tend to use Cow<'static, str> on errors since many times they can be &'static str.
I ran into a bug a while back that prevent me from using the plotters library for months. I did finally figure out what was causing it: a file in my font library documented in issue #231. Removing the file fixed my issue, but the opaque problem is sure to ensnare others.
This PR adds a
LoadError(Cow<'static, str>)
variant toSelectionError
enum. It removesCopy
becauseCow
isn't copyable. And now when I run the test suite with the bad file in place, it reports this error, which is far and away more helpful than before.A variant that used
String
would suffice for this case. I tend to useCow<'static, str>
on errors since many times they can be&'static str
.