diff --git a/Cargo.lock b/Cargo.lock index aa35521..1b637c2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,129 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "console" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" +dependencies = [ + "encode_unicode", + "libc", + "once_cell", + "windows-sys", +] + +[[package]] +name = "encode_unicode" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" + +[[package]] +name = "insta" +version = "1.43.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "154934ea70c58054b556dd430b99a98c2a7ff5309ac9891597e339b5c28f4371" +dependencies = [ + "console", + "once_cell", + "similar", +] + +[[package]] +name = "libc" +version = "0.2.172" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + [[package]] name = "osdb" version = "0.1.0" +dependencies = [ + "insta", +] + +[[package]] +name = "similar" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa" + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" diff --git a/Cargo.toml b/Cargo.toml index f1dfdcc..c53c9f7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,3 +5,6 @@ edition = "2024" authors = ["Khaïs COLIN"] [dependencies] + +[dev-dependencies] +insta = "1.43.1" diff --git a/flake.nix b/flake.nix index 9553b75..e3d9831 100644 --- a/flake.nix +++ b/flake.nix @@ -27,6 +27,7 @@ pkgs.clippy pkgs.bacon pkgs.cargo-semver-checks + pkgs.cargo-insta ]; }; packages.default = pkgs.rustPlatform.buildRustPackage { diff --git a/notes.org b/notes.org index a1fba55..c673d2f 100644 --- a/notes.org +++ b/notes.org @@ -1,14 +1,64 @@ #+title: Notes -* show errors with ariadne +* TODO show errors with ariadne :PROPERTIES: :EFFORT: 10min :END: -** errors should have a generic show() function +** [X] errors should have a generic show() function :PROPERTIES: :EFFORT: 10min :END: :LOGBOOK: CLOCK: [2025-05-03 sam. 18:40]--[2025-05-03 sam. 18:46] => 0:06 :END: -** OSDBError::display() should take a filename and display it alongside the error +** TODO OSDBError::display() should take a filename and display it alongside the error + +* TODO snapshot testing + +** DONE Find the snapshot testing library +:PROPERTIES: +:EFFORT: 10min +:END: +:LOGBOOK: +CLOCK: [2025-05-03 sam. 18:48]--[2025-05-03 sam. 18:49] => 0:01 +:END: + +** DONE document myself on insta, the snapshot testing library +:PROPERTIES: +:EFFORT: 10min +:END: +:LOGBOOK: +CLOCK: [2025-05-03 sam. 18:49]--[2025-05-03 sam. 18:57] => 0:08 +:END: + +** TODO insta test startup message +:PROPERTIES: +:EFFORT: 10min +:END: +:LOGBOOK: +CLOCK: [2025-05-03 sam. 19:00] +:END: +** TODO insta test exit message +:PROPERTIES: +:EFFORT: 10min +:END: +** TODO insta test insert +:PROPERTIES: +:EFFORT: 10min +:END: +** TODO insta test select +:PROPERTIES: +:EFFORT: 10min +:END: +** TODO insta test .exit +:PROPERTIES: +:EFFORT: 10min +:END: +** TODO insta test wrong statement +:PROPERTIES: +:EFFORT: 10min +:END: +** TODO insta test wrong meta-command +:PROPERTIES: +:EFFORT: 10min +:END: diff --git a/src/branding.rs b/src/branding.rs index e5583c2..c580531 100644 --- a/src/branding.rs +++ b/src/branding.rs @@ -1,8 +1,18 @@ -pub fn startup_msg() { +#[cfg(test)] +use insta::assert_snapshot; + +pub fn startup_msg() -> String { let name = env!("CARGO_PKG_NAME"); let version = env!("CARGO_PKG_VERSION"); let authors = env!("CARGO_PKG_AUTHORS"); - println!("{name} v{version} started.",); - println!("Copyright 2025 {authors}. All rights reserved.") + format!( + "{name} v{version} started.\n\ + Copyright 2025 {authors}. All rights reserved." + ) +} + +#[test] +fn test_startup_msg() { + assert_snapshot!(startup_msg()) } diff --git a/src/main.rs b/src/main.rs index 7f05008..2ab552f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,7 +4,7 @@ use osdb::command::Command; use osdb::error_display::OSDBError as _; fn main() { - startup_msg(); + println!("{}", startup_msg()); while let Some(input) = read_input() { match input.parse::() { Ok(cmd) => { diff --git a/src/snapshots/osdb__branding__startup_msg.snap b/src/snapshots/osdb__branding__startup_msg.snap new file mode 100644 index 0000000..97e76fa --- /dev/null +++ b/src/snapshots/osdb__branding__startup_msg.snap @@ -0,0 +1,6 @@ +--- +source: src/branding.rs +expression: startup_msg() +--- +osdb v0.1.0 started. +Copyright 2025 Khaïs COLIN. All rights reserved.