rust-cli / confy

🛋 Zero-boilerplate configuration management in Rust
Other
907 stars 61 forks source link

Uncaught panic inside the library? #8

Closed ghost closed 5 years ago

ghost commented 5 years ago

Confy 0.3.1

Steps:

  1. remove the closing single quote from a value in your toml file, so that it becomes invalid
key: 'value
otherkey: 'value'
  1. run your program, which uses this code:
let cfg: Config = match confy::load("appname") {
        Ok(_) => {
            println!("Done!");
            std::process::exit(exitcode::OK);
        }
        Err(e) => {
            eprintln!("Error: {}", e);
            std::process::exit(exitcode::CONFIG);
        }
    }

Expected:

The program exits cleanly with exitcode::CONFIG error code, after printing Error: etc.

Actual Result:

`thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Error { inner: ErrorInner { kind: NewlineInString, line: Some(0), col: 14, message: "", key: [] } }', libcore/result.rs:1009:5
stack backtrace:
   0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
   1: std::sys_common::backtrace::_print
   2: std::panicking::default_hook::{{closure}}
   3: std::panicking::default_hook
   4: std::panicking::rust_panic_with_hook
   5: std::panicking::continue_panic_fmt
   6: rust_begin_unwind
   7: core::panicking::panic_fmt
   8: core::result::unwrap_failed
   9: confy::load
  10: ren::main
  11: std::rt::lang_start::{{closure}}
  12: std::panicking::try::do_call
  13: __rust_maybe_catch_panic
  14: std::rt::lang_start_internal
  15: main
  16: __libc_start_main
  17: _start
Dylan-DPC-zz commented 5 years ago

This is fixed by #12