Giter Site home page Giter Site logo

rust-pretty-assertions's Introduction

Pretty Assertions

Latest version docs.rs Downloads of latest version All downloads

Overwrite assert_eq! with a drop-in replacement, adding a colorful diff.

Usage

When writing tests in Rust, you'll probably use assert_eq!(a, b) a lot.

If such a test fails, it will present all the details of a and b. But you have to spot the differences yourself, which is not always straightforward, like here:

standard assertion

Wouldn't that task be much easier with a colorful diff?

pretty assertion

Yep — and you only need one line of code to make it happen:

use pretty_assertions::{assert_eq, assert_ne};
Show the example behind the screenshots above.
// 1. add the `pretty_assertions` dependency to `Cargo.toml`.
// 2. insert this line at the top of each module, as needed
use pretty_assertions::{assert_eq, assert_ne};

fn main() {
    #[derive(Debug, PartialEq)]
    struct Foo {
        lorem: &'static str,
        ipsum: u32,
        dolor: Result<String, String>,
    }

    let x = Some(Foo { lorem: "Hello World!", ipsum: 42, dolor: Ok("hey".to_string())});
    let y = Some(Foo { lorem: "Hello Wrold!", ipsum: 42, dolor: Ok("hey ho!".to_string())});

    assert_eq!(x, y);
}

Semantic Versioning

The exact output of assertions is not guaranteed to be consistent over time, and may change between minor versions. The output of this crate is designed to be read by a human. It is not suitable for exact comparison, for example in snapshot testing.

This crate adheres to semantic versioning for publically exported crate items, except the private module, which may change between any version.

Tip

Specify it as [dev-dependencies] and it will only be used for compiling tests, examples, and benchmarks. This way the compile time of cargo build won't be affected!

Also add #[cfg(test)] to your use statements, like this:

#[cfg(test)]
use pretty_assertions::{assert_eq, assert_ne};

Notes

  • Since Rust 2018 edition, you need to declare use pretty_assertions::{assert_eq, assert_ne}; per module. Before you would write #[macro_use] extern crate pretty_assertions;.
  • The replacement is only effective in your own crate, not in other libraries you include.
  • assert_ne is also switched to multi-line presentation, but does not show a diff.
  • Under Windows, the terminal state is modified to properly handle VT100 escape sequences, which may break display for certain use cases.
  • The minimum supported rust version (MSRV) is 1.35.0

no_std support

For no_std support, disable the std feature and enable the alloc feature:

# Cargo.toml
pretty_assertions = { version= "...", default-features = false, features = ["alloc"] }

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Development

  • Cut a new release by creating a GitHub release with tag. Crate will be built and uploaded to crates.io by GHA.

rust-pretty-assertions's People

Contributors

chris--b avatar colin-kiegel avatar dtolnay avatar enet4 avatar fflorent avatar memark avatar nbigaouette avatar nbouteme avatar nickolay avatar roguelazer avatar sergiobenitez avatar stanislav-tkach avatar tommilligan avatar waywardmonkeys avatar x3ro avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rust-pretty-assertions's Issues

Hex/Binary diff and formatting for number collections

Hello, I really like using this crate for my tests as it makes it a lot easier to spot which byte has changed or regressed from a change. It would be nice if the crate supported hex and/or binary formatting for collections of numbers (e.g. &[u8]), so that you could see much more easily on the bit level what changed about a number, as currently see the difference between two base-10 numbers isn't that useful for me when comparing binary serialisation output.

Improve diff with "\r\n" and "\n"

The output produced by a difference with new lines is not very clear.

To reproduce :

#[test]
fn f() {
    pretty_assertions::assert_eq!("\n", "\r\n");
}
thread 'test::f' panicked at 'assertion failed: `(left == right)`

Diff < left / right > :
 

I don't know if that has not been thought or if I am doing something wrong.

Use -/+ instead of </>

It's not a purely cosmetic idea. + and - in the first column of text makes it very easy to get diff syntax highlighting when you copy and paste test output into GitHub comments. I find myself replacing the angle braces manually to get this effect.

Diff < left / right > :
 neutral
<[1, 2, 3, 4]
>[1–4]
Diff - left / right + :
 neutral
-[1, 2, 3, 4]
+[1–4]

memory allocation of 96543189696 bytes failed

When an object is big, the package fails to allocate its debug representation of it in the memory, so it fails.

assert_eq!(big_obj, big_obj2)

The solution would be to act like the standard assert_eq, which doesn't fail or maybe represent the needed subset only.
Related to #19

Abort due to double-panic

When you use the assert_eq!() macro, any panics that are triggered as part of formatting the diff will abort the process. Due to cargo test's default behaviour, the original panic message will also be swallowed unless you use the --nocapture flag.

In particular, I ran into this panic!():

https://github.com/colin-kiegel/rust-pretty-assertions/blob/9654759b57a88cec10fd4ffac563a93a80006689/pretty_assertions/src/printer.rs#L103-L106

Which is called while printing the Comparison during the failed assertion.

https://github.com/colin-kiegel/rust-pretty-assertions/blob/9654759b57a88cec10fd4ffac563a93a80006689/pretty_assertions/src/lib.rs#L140

Full Backtrace
$ cargo t -- --nocapture
    Finished test [unoptimized + debuginfo] target(s) in 0.07s
     Running unittests src/lib.rs (/home/consulting/Documents/hotg-ai/wit-bindgen-wasm3/target/debug/deps/wit_bindgen_gen_wasm3-faa01879e61ccf80)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/codegen.rs (/home/consulting/Documents/hotg-ai/wit-bindgen-wasm3/target/debug/deps/codegen-e5f76d6e17dfe8c2)

running 1 test
thread 'single_function' panicked at 'insertion followed by deletion', /home/consulting/.cargo/registry/src/github.com-1ecc6299db9ec823/pretty_assertions-1.2.0/src/printer.rs:105:17
stack backtrace:
   0:     0x560e52b89a4c - std::backtrace_rs::backtrace::libunwind::trace::h3378927f541f6c04
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
   1:     0x560e52b89a4c - std::backtrace_rs::backtrace::trace_unsynchronized::hdb4c2fa83db93444
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x560e52b89a4c - std::sys_common::backtrace::_print_fmt::hcd86ae48a4354c57
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/std/src/sys_common/backtrace.rs:66:5
   3:     0x560e52b89a4c - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h39278ceede34f184
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/std/src/sys_common/backtrace.rs:45:22
   4:     0x560e52baf38c - core::fmt::write::hdc75737b203416ad
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/core/src/fmt/mod.rs:1190:17
   5:     0x560e52b84a18 - std::io::Write::write_fmt::hd5a5b2845cf361c8
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/std/src/io/mod.rs:1657:15
   6:     0x560e52b8bd17 - std::sys_common::backtrace::_print::h56e98f99dedad7ea
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/std/src/sys_common/backtrace.rs:48:5
   7:     0x560e52b8bd17 - std::sys_common::backtrace::print::hac723d22fa420755
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/std/src/sys_common/backtrace.rs:35:9
   8:     0x560e52b8bd17 - std::panicking::default_hook::{{closure}}::h848d7a113757d5f2
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/std/src/panicking.rs:295:22
   9:     0x560e52b8b9cf - std::panicking::default_hook::hfb349cb28b3534e6
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/std/src/panicking.rs:314:9
  10:     0x560e52b8c46b - std::panicking::rust_panic_with_hook::h0a743d387214ad02
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/std/src/panicking.rs:698:17
  11:     0x560e52b33248 - std::panicking::begin_panic::{{closure}}::hfca5b139e785ec6a
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/std/src/panicking.rs:617:9
  12:     0x560e52b31e09 - std::sys_common::backtrace::__rust_end_short_backtrace::h469676dac8d9d04d
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/std/src/sys_common/backtrace.rs:138:18
  13:     0x560e52b331dc - std::panicking::begin_panic::ha6796eda940863d0
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/std/src/panicking.rs:616:12
  14:     0x560e52955aee - pretty_assertions::printer::write_lines::hdf106cf409ad0dd8
                               at /home/consulting/.cargo/registry/src/github.com-1ecc6299db9ec823/pretty_assertions-1.2.0/src/printer.rs:105:17
  15:     0x560e5295e309 - <pretty_assertions::StrComparison<TLeft,TRight> as core::fmt::Display>::fmt::h8a9cbd32bbc3e26c
                               at /home/consulting/.cargo/registry/src/github.com-1ecc6299db9ec823/pretty_assertions-1.2.0/src/lib.rs:210:9
  16:     0x560e52baf38c - core::fmt::write::hdc75737b203416ad
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/core/src/fmt/mod.rs:1190:17
  17:     0x560e52b8bfec - core::fmt::Write::write_fmt::h4daf3e4aa36c80aa
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/core/src/fmt/mod.rs:186:9
  18:     0x560e52b8bfec - std::panicking::begin_panic_handler::PanicPayload::fill::{{closure}}::h982bfedc4aa80a74
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/std/src/panicking.rs:550:22
  19:     0x560e52b8bfec - core::option::Option<T>::get_or_insert_with::h3554c0ea47abd828
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/core/src/option.rs:1522:49
  20:     0x560e52b8bfec - std::panicking::begin_panic_handler::PanicPayload::fill::h88ece18dee6cc20d
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/std/src/panicking.rs:548:13
  21:     0x560e52b8bfec - <std::panicking::begin_panic_handler::PanicPayload as core::panic::BoxMeUp>::get::hae84bf37ecbba0f5
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/std/src/panicking.rs:566:13
  22:     0x560e52b8c456 - std::panicking::rust_panic_with_hook::h0a743d387214ad02
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/std/src/panicking.rs:697:34
  23:     0x560e52b8c157 - std::panicking::begin_panic_handler::{{closure}}::h394de780b6be0d14
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/std/src/panicking.rs:588:13
  24:     0x560e52b89f14 - std::sys_common::backtrace::__rust_end_short_backtrace::h17d8cbafdb573507
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/std/src/sys_common/backtrace.rs:138:18
  25:     0x560e52b8be69 - rust_begin_unwind
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/std/src/panicking.rs:584:5
  26:     0x560e52951863 - core::panicking::panic_fmt::h14d7282acf6a82b7
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/core/src/panicking.rs:143:14
  27:     0x560e5295f07d - codegen::single_function::h1ce943069e24d0cd
                               at /home/consulting/Documents/hotg-ai/wit-bindgen-wasm3/codegen/tests/codegen.rs:26:5
  28:     0x560e52954a6a - codegen::single_function::{{closure}}::h428a99483f218426
                               at /home/consulting/Documents/hotg-ai/wit-bindgen-wasm3/codegen/tests/codegen.rs:11:1
  29:     0x560e5295bc9e - core::ops::function::FnOnce::call_once::h1929ea5afa389f2e
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/core/src/ops/function.rs:227:5
  30:     0x560e5298acf3 - core::ops::function::FnOnce::call_once::hd7427b4f1fb1a3df
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/core/src/ops/function.rs:227:5
  31:     0x560e5298acf3 - test::__rust_begin_short_backtrace::hb863b53415a6c3c8
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/test/src/lib.rs:575:5
  32:     0x560e5298997f - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h6e7d1f9d5fd8a255
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/alloc/src/boxed.rs:1854:9
  33:     0x560e5298997f - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::he22973c0157abcad
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/core/src/panic/unwind_safe.rs:271:9
  34:     0x560e5298997f - std::panicking::try::do_call::hc40de4a913926a63
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/std/src/panicking.rs:492:40
  35:     0x560e5298997f - std::panicking::try::h2ce93d83ee76f146
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/std/src/panicking.rs:456:19
  36:     0x560e5298997f - std::panic::catch_unwind::hea9bd4ca39274840
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/std/src/panic.rs:137:14
  37:     0x560e5298997f - test::run_test_in_process::h66e031868634c23a
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/test/src/lib.rs:598:18
  38:     0x560e5298997f - test::run_test::run_test_inner::{{closure}}::h374c2d96e09a6fdc
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/test/src/lib.rs:492:39
  39:     0x560e52993741 - test::run_test::run_test_inner::{{closure}}::h04c08617f7ade054
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/test/src/lib.rs:519:37
  40:     0x560e52993741 - std::sys_common::backtrace::__rust_begin_short_backtrace::h9ba773678c27c051
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/std/src/sys_common/backtrace.rs:122:18
  41:     0x560e5295f7df - std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}::hbe6a7761dbab7a63
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/std/src/thread/mod.rs:498:17
  42:     0x560e5295f7df - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h27450c879e029fc9
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/core/src/panic/unwind_safe.rs:271:9
  43:     0x560e5295f7df - std::panicking::try::do_call::h61592e92ca7f0dc1
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/std/src/panicking.rs:492:40
  44:     0x560e5295f7df - std::panicking::try::h200a14ed0a35be11
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/std/src/panicking.rs:456:19
  45:     0x560e5295f7df - std::panic::catch_unwind::hbfa0137f754138a7
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/std/src/panic.rs:137:14
  46:     0x560e5295f7df - std::thread::Builder::spawn_unchecked_::{{closure}}::h5bb3256bb0dd33f1
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/std/src/thread/mod.rs:497:30
  47:     0x560e5295f7df - core::ops::function::FnOnce::call_once{{vtable.shim}}::hfa0492591cec1bda
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/core/src/ops/function.rs:227:5
  48:     0x560e52b922a3 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h8ab0aa77c9fe664a
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/alloc/src/boxed.rs:1854:9
  49:     0x560e52b922a3 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::hd82178596e9e381e
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/alloc/src/boxed.rs:1854:9
  50:     0x560e52b922a3 - std::sys::unix::thread::Thread::new::thread_start::hf4d984fb21d4c83d
                               at /rustc/4ce3749235fc31d15ebd444b038a9877e8c700d7/library/std/src/sys/unix/thread.rs:108:17
  51:     0x7ff4b471b5c2 - start_thread
  52:     0x7ff4b47a0584 - __clone
  53:                0x0 - <unknown>
thread panicked while panicking. aborting.
error: test failed, to rerun pass '--test codegen'

Caused by:
  process didn't exit successfully: `/home/consulting/Documents/hotg-ai/wit-bindgen-wasm3/target/debug/deps/codegen-e5f76d6e17dfe8c2 --nocapture` (signal: 6, SIGABRT: process abort signal)

The two strings I'm testing are the placeholder, "asd" on the right and the following generated Rust code on the left:

left hand side
pub mod single_function {
  #[allow(unused_imports)]
  use wit_bindgen_wasmtime::{wasmtime, anyhow};

  /// Auxiliary data associated with the wasm exports.
  ///
  /// This is required to be stored within the data of a
  /// `Store<T>` itself so lifting/lowering state can be managed
  /// when translating between the host and wasm.
  #[derive(Default)]
  pub struct SingleFunctionData {
  }
  pub struct SingleFunction<T> {
    get_state: Box<dyn Fn(&mut T) -> &mut SingleFunctionData + Send + Sync>,
    f: wasmtime::TypedFunc<(), ()>,
  }
  impl<T> SingleFunction<T> {
    #[allow(unused_variables)]

    /// Adds any intrinsics, if necessary for this exported wasm
    /// functionality to the `linker` provided.
    ///
    /// The `get_state` closure is required to access the
    /// auxiliary data necessary for these wasm exports from
    /// the general store's state.
    pub fn add_to_linker(
    linker: &mut wasmtime::Linker<T>,
    get_state: impl Fn(&mut T) -> &mut SingleFunctionData + Send + Sync + Copy + 'static,
    ) -> anyhow::Result<()> {
      Ok(())
    }

    /// Instantiates the provided `module` using the specified
    /// parameters, wrapping up the result in a structure that
    /// translates between wasm and the host.
    ///
    /// The `linker` provided will have intrinsics added to it
    /// automatically, so it's not necessary to call
    /// `add_to_linker` beforehand. This function will
    /// instantiate the `module` otherwise using `linker`, and
    /// both an instance of this structure and the underlying
    /// `wasmtime::Instance` will be returned.
    ///
    /// The `get_state` parameter is used to access the
    /// auxiliary state necessary for these wasm exports from
    /// the general store state `T`.
    pub fn instantiate(
    mut store: impl wasmtime::AsContextMut<Data = T>,
    module: &wasmtime::Module,
    linker: &mut wasmtime::Linker<T>,
    get_state: impl Fn(&mut T) -> &mut SingleFunctionData + Send + Sync + Copy + 'static,
    ) -> anyhow::Result<(Self, wasmtime::Instance)> {
      Self::add_to_linker(linker, get_state)?;
      let instance = linker.instantiate(&mut store, module)?;
      Ok((Self::new(store, &instance,get_state)?, instance))
    }

    /// Low-level creation wrapper for wrapping up the exports
    /// of the `instance` provided in this structure of wasm
    /// exports.
    ///
    /// This function will extract exports from the `instance`
    /// defined within `store` and wrap them all up in the
    /// returned structure which can be used to interact with
    /// the wasm module.
    pub fn new(
    mut store: impl wasmtime::AsContextMut<Data = T>,
    instance: &wasmtime::Instance,
    get_state: impl Fn(&mut T) -> &mut SingleFunctionData + Send + Sync + Copy + 'static,
    ) -> anyhow::Result<Self> {
      let mut store = store.as_context_mut();
      let f= instance.get_typed_func::<(), (), _>(&mut store, "f")?;
      Ok(SingleFunction{
        f,
        get_state: Box::new(get_state),

      })
    }
    pub fn f(&self, mut caller: impl wasmtime::AsContextMut<Data = T>,)-> Result<(), wasmtime::Trap> {
      self.f.call(&mut caller, ())?;
      Ok(())
    }
  }
}

I'm struggling to make a minimal example which still triggers the double-panic, so you can find the full code in the codegen directory of https://github.com/hotg-ai/wit-bindgen-wasm3/tree/e415bbfdbf73dc2f91b5cfff9e81b85903c4f566.

Show only different part instead of the whole thing

When diffing 2 big objects which have a small difference in the middle, it's very hard to know what exactly gone wrong. I have to either scroll the terminal, or to redirectcargo test to a file and then use less.

So it would be nice to only display the difference, like diff tool does.

Feature request: Sort HashMaps if possible?

Hi, thanks for the great crate.

When I use pretty_assertions, it's pretty difficult to get good diffing output when comparing structs that contain HashMaps because the ordering is non-deterministic.

Would it be possible to sort the diff output by the key of the HashMap (best effort)? Since the key can be printed, it has some string representation which should be sortable.

It's difficult to work around this at the usage site usually (in the trivial case, you could convert a HashMap<_, _> to a Vec<(_, _)>, but if the HashMap is within a struct then you'd need a new type(?)) and I run into this everytime I try to use pretty_assertions. If this would be possible, it would be huge! Or if you have any ideas how to solve the non-determinism easily, that would also be amazing 😄.

Thanks for taking the time to read my feature request 🙏🏻 .

false warning of `use` when using pretty_assertions with test module

I've try using pretty_assertions on a fresh library cargo project. The test module in such project has a use super::my_module; statement. After adding those #[macro_use] extern crate pretty_assertions; stuff in (following the guide), it causes false warning of the use statement.
Here's the asciinema recording:
asciicast
I'm new to rust and I'm not sure if this is a specific issue of pretty_assertions or not, just sharing my observation.
I'm using latest stable rust as of today.

Ansi colour codes emitted on Powershell

I've just reinstalled my work computer and it looks like pretty_assertions is now printing ansi codes instead of using the native windows mechanism for terminal colours. It's probably something to do with my environment, but do you have any idea why this may be happening even though cargo is able to print colours just fine?

Here's a screenshot to show the output.

image

cc: #1

Nicer formatting for multiline strings

While the current output is miles ahead of the default assert_eq! for finding the errors in multiline strings, it would be amazing if multiline strings could actually be displayed as multiline. Another extension to this would be to use raw string literals when the string contains embedded " characters

Current output (0.5.1):

screen shot 2018-06-10 at 12 42 46 pm

A quick sketch of what multiline and raw string literals could look like:

screen shot 2018-06-10 at 12 51 25 pm

I'm not sure if there are cases where this would be sub-optimal, hopefully it's possible to use a simple heuristic for detecting when to enable output like this that can be used in all cases.

Incorrect diff value placement

Screenshot

2017-09-05-183035-506x464_maim_slop

Code to reproduce

#[macro_use]
extern crate pretty_assertions;


#[cfg(test)]
mod tests {
    #[test]
    fn has_bug() {
        let left = vec![0, 0, 0, 128, 10, 191, 5, 64];
        let right = vec![84, 248, 45, 64];

        assert_eq!(left, right);
    }
}

Do not use color on e.g. dumb and vt100 terminals

I realize that obviates the purpose of this crate, but running code using this in settings where we have terminals without color support is a possibility. I briefly looked into modifying the macros to call std::assert_eq in such a case, but there's at least one reason why that seems a bad idea - we have the option of using no_std in this crate.

cross-platform support + no-color-fallback

Not all terminals support ANSI escape characters (e.g. on windows).

It would be nice, if
(a) this would also work on windows
(b) color codes are surpressed when the current terminal does not support them

I would like to switch to the format of git diff --word-diff, which is also readable without colors

The quick [-red-]{+brown+} fox jumps over the lazy dog

This should be solved in the underlying difference crate, see johannhof/difference.rs#15.

Note: The discussion below got a little side-tracked... ^^

clarify "22 lines of code" in README

All that pretty_assertions does is to replace the assert_eq! macro with just about 22 lines of code.

This sounds like every invocation would insert 22 lines into the calling function.

LICENSE files missing from published crates since version 1.0.0

Looks like the published crate was moved from the repository root to a workspace subdirectory in this commit: 0df5d7a

This results in LICENSE files no longer being included in published crates. Since both MIT and Apache-2.0 licenses require the license text to be included in redistributed sources, please re-include those files in published pretty_assertions crates (adding symlinks LICENSE-{APACHE,MIT} -> ../LICENSE-{APACHE,MIT} should do the trick, assuming you don't run cargo publish from a windows machine that does not support symlinks).

Thanks!

RUSTSEC-2020-0095: `difference` is unmaintained

difference is a dependency of pretty-assertions. The crate is unmaintained now, see the RUSTSEC-2020-0095 advisory.
pretty-assertions is used quite a bit in the ecosystem and since it pulls in difference cargo audit will warn about this in every crate.
Maybe it is possible to migrate to one of the alternatives listed in the advisory.

Tests fail on master (linux, stable and nightly)

Checked out master, ran rustup run nightly cargo test and `rustup run stable cargo test - both test suites fail

$ rustup run nightly cargo test
    Finished dev [unoptimized + debuginfo] target(s) in 0.01s
     Running target/debug/deps/pretty_assertions-9ac24886b433d37b

running 1 test
test format_changeset::test_format_replacement ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out

     Running target/debug/deps/assert_eq-1f2e3eb84565c1f6

running 6 tests
test assert_eq_custom ... FAILED
test assert_eq ... FAILED
test assert_eq_custom_trailing_comma ... FAILED
test assert_eq_with_comparable_types ... ok
test assert_eq_trailing_comma ... FAILED
test issue12 ... FAILED

failures:

---- assert_eq_custom stdout ----
thread 'assert_eq_custom' panicked at 'assertion failed: `(left == right)`: custom panic message

Diff < left / right > :
 Some(
     Foo {
<        lorem: "Hello World!",
>        lorem: "Hello Wrold!",
         ipsum: 42,
         dolor: Ok(
<            "hey",
>            "hey ho!",
         ),
     },
 )

', tests/assert_eq.rs:82:5
note: panic did not include expected string 'assertion failed: `(left == right)`: custom panic message

Diff < left / right > :
 Some(
     Foo {
<        lorem: "Hello World!",
>        lorem: "Hello Wrold!",
         ipsum: 42,
         dolor: Ok(
<            "hey"
>            "hey ho!"
         )
     }
 )

'
---- assert_eq stdout ----
thread 'assert_eq' panicked at 'assertion failed: `(left == right)`

Diff < left / right > :
 Some(
     Foo {
<        lorem: "Hello World!",
>        lorem: "Hello Wrold!",
         ipsum: 42,
         dolor: Ok(
<            "hey",
>            "hey ho!",
         ),
     },
 )

', tests/assert_eq.rs:41:5
note: Run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
note: panic did not include expected string 'assertion failed: `(left == right)`

Diff < left / right > :
 Some(
     Foo {
<        lorem: "Hello World!",
>        lorem: "Hello Wrold!",
         ipsum: 42,
         dolor: Ok(
<            "hey"
>            "hey ho!"
         )
     }
 )

'
---- assert_eq_custom_trailing_comma stdout ----
thread 'assert_eq_custom_trailing_comma' panicked at 'assertion failed: `(left == right)`: custom panic message

Diff < left / right > :
 Some(
     Foo {
<        lorem: "Hello World!",
>        lorem: "Hello Wrold!",
         ipsum: 42,
         dolor: Ok(
<            "hey",
>            "hey ho!",
         ),
     },
 )

', tests/assert_eq.rs:194:5
note: panic did not include expected string 'assertion failed: `(left == right)`: custom panic message

Diff < left / right > :
 Some(
     Foo {
<        lorem: "Hello World!",
>        lorem: "Hello Wrold!",
         ipsum: 42,
         dolor: Ok(
<            "hey"
>            "hey ho!"
         )
     }
 )

'
---- assert_eq_trailing_comma stdout ----
thread 'assert_eq_trailing_comma' panicked at 'assertion failed: `(left == right)`

Diff < left / right > :
 Some(
     Foo {
<        lorem: "Hello World!",
>        lorem: "Hello Wrold!",
         ipsum: 42,
         dolor: Ok(
<            "hey",
>            "hey ho!",
         ),
     },
 )

', tests/assert_eq.rs:153:5
note: panic did not include expected string 'assertion failed: `(left == right)`

Diff < left / right > :
 Some(
     Foo {
<        lorem: "Hello World!",
>        lorem: "Hello Wrold!",
         ipsum: 42,
         dolor: Ok(
<            "hey"
>            "hey ho!"
         )
     }
 )

'
---- issue12 stdout ----
thread 'issue12' panicked at 'assertion failed: `(left == right)`

Diff < left / right > :
 [
<    0,
<    0,
<    0,
<    128,
<    10,
<    191,
<    5,
>    84,
>    248,
>    45,
     64,
 ]

', tests/assert_eq.rs:114:5
note: panic did not include expected string 'assertion failed: `(left == right)`

Diff < left / right > :
 [
<    0,
<    0,
<    0,
<    128,
<    10,
<    191,
<    5,
>    84,
>    248,
>    45,
     64
 ]

'

failures:
    assert_eq
    assert_eq_custom
    assert_eq_custom_trailing_comma
    assert_eq_trailing_comma
    issue12

test result: FAILED. 1 passed; 5 failed; 0 ignored; 0 measured; 0 filtered out

error: test failed, to rerun pass '--test assert_eq'

Same/similar test failures for stable

Did I do something wrong?

why are old versions of pretty-assertion more popular?

Why do people prefer old versions? 😕
How can we improve this?

Downloads as of 2017-10-17

... over the last 90 days

crate downloads

... per version

Version Downloads Release Date
0.1.0 105 March 26, 2017
0.1.1 44 March 29, 2017
0.1.2 16_725 March 29, 2017
0.2.0 708 April 29, 2017
0.2.1 6_295 June 24, 2017
0.3.0 26 August 30, 2017
0.3.1 18 August 31, 2017
0.3.2 20 August 31, 2017
0.3.3 18 September 1, 2017
0.3.4 573 September 2, 2017
0.4.0 8 October 15, 2017

v0.1.2

v0.1.2

v0.2.1

v0.2.1

v0.3.4

v0.3.4

v0.4.0

v0.4.0

Enforce CI for all supported targets

  • The codebase contains additional code paths for Windows platform targets. These are not currently tested under the Travis CI config
  • The existing Linux testing does not appear to be active. Check the Travis CI app configuration
  • The main branch is not protected with the CI build status, which it should be

assert_eq(a,b,) doesn't show pretty printing

Giving the following MCVE:

fn main() {
    #[derive(Debug, PartialEq)]
    struct Foo<'a> {
        lorem: &'a str,
        ipsum: u32,
        dolor: Result<String, String>,
    }

    let x = Some(Foo { lorem: "Hello World!", ipsum: 42, dolor: Ok("hey".to_string())});
    let y = Some(Foo { lorem: "Hello Wrold!", ipsum: 42, dolor: Ok("hey ho!".to_string())});

    pretty_assertions::assert_eq!(x, y,);
}
thread 'main' panicked at 'assertion failed: `(left == right)`
  left: `Some(Foo { lorem: "Hello World!", ipsum: 42, dolor: Ok("hey") })`,
 right: `Some(Foo { lorem: "Hello Wrold!", ipsum: 42, dolor: Ok("hey ho!") })`', src\main.rs:12:5

Add an extra comma, seem to disable everything.

Unexpected regression with 1.2.0

We use rust-pretty-assertions for lychee.
There is a PR for upgrading to 1.2.0 here, which fails because of the changes in #92.
Previously, using assert_eq on two HashSets would work, but it fails now because of the missing AsRef<str> impl.

Before, the assertion was

assert_eq!(uris_html5gum, uris_html5ever);

and I could use a workaround like this

assert_eq!(format!("{uris_html5gum:?}"), format!("{uris_html5ever:?}"));

but I wonder if I'm missing something. The PR mentioned an assert_debug_eq that would behave like the old version. Is this planned?

doesn't seem to work when used in tests/ folder

This is a rather bizzare bug. I really wonder if it is user error.

I can't seem to get this module to work as advertised for tests in my tests/ folder. It doesn't seem possible that that would be the case... I am thouroughly confused :)

Thanks for the great library!

One thing that would be nice is to export pretty_assert_eq macros, etc so that I can be explicit in what I'm doing. That would at least help me diagnose what might be going wrong here.

Consider pretty-print

Hello.
It would be nice to have an option that would make this crate use {:#?} instead of {:?} to pretty-print the values.
Thanks to add this.

Add benchmarks for public API

Before any major rewriting, setup some benchmarks so we can check for regressions.

We'll want to check for regressions in all cases, but especially the hot path (where the assertions pass without panicking).

The benchmarks shouldn't be run automatically, just be available for checking locally.

`wasm-pack test` support

When running wasm_bindgen tests with wasm-pack the output is not being colored.

wasm-pack test --chrome --headless

console.log div contained:
    panicked at src/calc/storage/gluesql.rs:317:9:
    assertion `left == right` failed
      left: [MyStruct { volume: 5 }]
     right: [MyStruct { volume: 3 }]
    
    Stack:
#[wasm_bindgen_test]
async fn wasm_test() {
  assert_eq!(5,3)
}

WASM project you can test upon: https://github.com/leptos-rs/leptos/tree/main/examples/tailwind_csr_trunk

I am not sure if this is an issue of wasm-pack and if this lib can help out here.

Optimize multiline diff for (some metric of) edit-distance

I'm trying to use pretty-assertions for snapshot testing. I compare the snapshotted multiline-string with the new value using the PrettyString trick from #24.

When the actual result got indented (compared to the snapshot), the diff output became very confused:
snap

The reason is that two unrelated lines (Foo's and Bar's lorems) got matched up in the first (line-based) comparison pass, which should instead realize there's a new line Some(, followed by a few modified lines, followed by a new line ).

#[test]
fn test_multiline_diff() {
    assert_eq!(PrettyString(r#"Foo {
    lorem: "Hello World!",
    ipsum: 42,
    Bar {
        lorem: "Hello World!",
    }
}"#), PrettyString(r#"Some(
    Foo {
        lorem: "Hello World!",
        ipsum: 42,
        Bar {
            lorem: "Hello World!",
        }
    }
)"#));
}

split words on special characters and punctuation

The current implementation of difference can only words via a single character (we split via space " ").

This works fine in most cases, but is a bit coarse-grained when used on std::fmt::Debug output, which contains a lot of punctuation and special characters.

example

Here the two strings Ok("hey") and Ok("hey ho!") are split into words like this

  • Ok("hey")
  • Ok("hey + ho!")

Therefore difference treats these strings as completely different, since no word is identical.

It would be nice to treat special characters as individual 'words', and split the above strings like this

  • Ok + ( + " + hey + " + )
  • Ok + ( + " + hey + ho + ! + )

With this split, we would only detect an insertion of ho!. :-)

This would require the difference crate to accept regular expressions to define what a word is. See johannhof/difference.rs#16.

Crate does no longer work with no-std on 0.7

It fails with:

error[E0433]: failed to resolve: could not find `std` in the list of imported crates
  --> src\sanitizers\deduplicator.rs:74:9
   |
74 |         assert_eq!(iter.next(), Some('1'));
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ could not find `std` in the list of imported crates
   |
   = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info)

(feature gating every single test with the std feature would be really annoying, especially when the std feature is disabled by default)

The macro expands in 0.7 to something like this:

{
    match (&(sanitizer.next()), &(None)) {
        (left_val, right_val) => {
            if !(*left_val == *right_val) {
                {
                    ::std::rt::begin_panic_fmt(&match match (
                        &::pretty_assertions::Comparison::new(left_val, right_val),
                    ) {
                        (arg0,) => [::core::fmt::ArgumentV1::new(
                            arg0,
                            ::core::fmt::Display::fmt,
                        )],
                    } {
                        ref args => unsafe {
                            ::core::fmt::Arguments::new_v1(
                                &["assertion failed: `(left == right)`\n\n", "\n"],
                                args,
                            )
                        },
                    })
                }
            }
        }
    }
};

Previously (0.6), it expanded to

{
    match (&(sanitizer.next()), &(None)) {
        (left_val, right_val) => {
            if !(*left_val == *right_val) {
                ::core::panicking::panic_fmt(
                    match match (&::pretty_assertions::Comparison::new(
                        left_val, right_val,
                    ),)
                    {
                        (arg0,) => [::core::fmt::ArgumentV1::new(
                            arg0,
                            ::core::fmt::Display::fmt,
                        )],
                    } {
                        ref args => unsafe {
                            ::core::fmt::Arguments::new_v1(
                                &["assertion failed: `(left == right)`\n\n", "\n"],
                                args,
                            )
                        },
                    },
                )
            }
        }
    }
};

Related issue: KokaKiwi/rust-hex#63

pretty assert! macro

I really like this crate for it's beautiful assert_eq macro, but sometimes you have for example a function, that returns only a bool, so you have to use assert!. If such an assertion fails the panic message looks something like this:

thread 'tags::master_playlist::variant_stream::tests::test_is_associated' panicked at 'assertion failed: variant_stream.is_associated(&ExtXMedia::builder().media_type(MediaType::ClosedCaptions).group_id("None").name("closed captions example").instream_id(InStreamId::Cc1).build().unwrap())', src/tags/master_playlist/variant_stream.rs:388:9

which is fine, but depending on how much space you have in your terminal it looks like this

thread 'tags::master_playlist::variant_stream::tests::test_is_associated' panick
ed at 'assertion failed: variant_stream.is_associated(&ExtXMedia::builder().medi
a_type(MediaType::ClosedCaptions).group_id("None").name("closed captions example
").instream_id(InStreamId::Cc1).build().unwrap())', src/tags/master_playlist/var
iant_stream.rs:388:9

and this can definitely be improved!

I could imagine, that a "beautiful" assert! would look like this:

thread 'tags::master_playlist::variant_stream::tests::test_is_associated' panicked at 'assertion failed:

assert!(variant_stream.is_associated(
    &ExtXMedia::builder()
        .media_type(MediaType::ClosedCaptions)
        .group_id("cc1")
        .name("closed captions example")
        .instream_id(InStreamId::Cc1)
        .build()
        .unwrap(),
));
 
src/tags/master_playlist/variant_stream.rs:388:9

One thing, that must be considered is, that the above can not be written with a macro_rules! macro. It is possible to get a stringified version of the code with stringify, but this would not prettify the code :(

I need to research the prettifying a bit further and then I would be willing to make a PR for this (if it is possible of course) :)

This could be useful: https://github.com/rust-lang/rust/blob/master/src/librustc_driver/pretty.rs

Unsized values

let a: &[u8] = b"1";
assert_eq!(*a, *a);
pretty_assertions::assert_eq!(*a, *a);

Regular assertions work with unsized values, but pretty_assertions give an error:
The following code gives an error:

4  |     pretty_assertions::assert_eq!(*a, *a);
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time

Indent size?

At the risk of being denounced as a heathen, is there any way that the default indent size of 4 spaces could be OPTIONALLY changed to, say, 2? 😉

Or possibly, even, pickup what's in rustfmt.toml?

Typo in README

The README.md suggests adding the crate in [dev-dependency] so that it only gets included in tests build.

This is a typo: the proper TOML section should be [dev-dependencies] (plural).

See the cargo documentation.

Print less context?

Is there a way to get pretty_assertions to print less context, e.g., just a few lines before and after each difference?

Apologies if this has been asked before. Also, this an absolutely fantastic crate.

Output multi-line string literals inside nested objects.

Asserting on top-level structs that contain a data hierarchy works and is very useful.
However, strings are always output as single line strings and I could not find a way to have them output as multi line string literals.
It isn't possible to use assert_str_eq because the struct can't easily implement AsRef.

Any guidance on how to do this, or is this a feature request?

Unbearably slow for big texts

Running an assert_eq on a large string is extremely slow with this library enabled.

I noticed it when I added a placeholder assertion before starting some coding. A regular assertion takes no time at all. With pretty-assertions enabled, the test does not return in 5 minutes where I got tired of waiting and killed it.

This is the code:

let result = "A very long string....";
assert_eq!("foo", result);

And this is the test output (where you can see the actual string):


running 1 test
test markdown::test_prefix_with_necessary_spaces ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out


running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out


running 20 tests
test ending_space_is_trimmed ... ok
test blockquote ... ok
test ignoring_scripts ... ok
test image ... ok
test ignoring_head ... ok
test newline ... ok
test bold ... ok
test emphasize ... ok
test link ... ok
test plaintext ... ok
test ignoring_styles ... ok
test newlines_are_ignored ... ok
test lines_with_empty_spaces_are_killed ... ok
test ordered_list ... ok
test paragraph ... ok
test unordered_list ... ok
test ordered_and_unordered_mixed ... ok
test unordered_more_complex_list ... ok
test ordered_more_complex_list ... ok
test pixel_email_is_readable ... FAILED

failures:

---- pixel_email_is_readable stdout ----
	thread 'pixel_email_is_readable' panicked at 'assertion failed: `(left == right)`
  left: `"foo"`,
 right: `"Beställ innan kl 09.00 20/12 så garanterar vi leverans innan jul! Vi hjälper dig med flera julklappstips som passar perfekt till kökshjälten!![](http://klick.bagarenochkocken.se/mail/MOS/782919919/61yf0003019mpSLyaDg.gif)![](http://img.cmailer.com/img/www2/782919919.png)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![Bagaren och Kocken](http://carma-template.s3.amazonaws.com/bagarenochkocken/img/bagarenochkocken-logo.png)](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845929&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Läs online](http://klick.bagarenochkocken.se/mail/OBS/61yf0003019mpSLyaDg782919919)\u{a0} \u{a0} \u{a0} \u{a0} \u{a0} \u{a0} \u{a0}\u{a0}\u{a0}[Avsluta prenumeration](https://bagarenochkocken.se/avregistrering-nyhetsbrev/?originalId=564907&mid=782919919&guid=61yf0003019mpSLyaDg)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![Bagaren och Kocken](https://s3-eu-west-1.amazonaws.com/mimgs/cdn/TWO/2535/P9U645rTji4kPchxOy9g_mobile_usparSE.png)](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845930&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![Bagaren och Kocken Awards](https://s3-eu-west-1.amazonaws.com/mimgs/cdn/TWO/2535/I2r9z6V3Riuk3NbFkhh1_%C3%A5rets_e-handlare_pricerunner_2017_bagarenochkocken_CARMA_5.png)](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845931&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[NYHETER](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845932&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[PRESENTTIPS](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845933&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[PRESENTKORT](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845934&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![](https://s3-eu-west-1.amazonaws.com/mimgs/cdn/TWO/2535/5exySdQS6WqbotVh2NTK_SE-LECREUSET-GRAN-CINEMAGRAPH-640x640.gif)](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845935&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Julklappar för en magisk jul 🎄](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845936&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Ännu fler julklappstips! Kanske en komplett servis för kommande flytt, en saltsten för matnörden eller köksknivar av hög kvalitet. Beställ innan kl 09.00 20/12 så garanterar vi leverans innan jul!![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Se alla julklappstips](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845937&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)\n\n![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![](https://s3-eu-west-1.amazonaws.com/mimgs/cdn/TWO/2535/YUFFVfPESfWyp7x1rl7l_Produktbox_v50_set_tallrikar.png)](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845938&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Rosenthal Middagsset](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845939&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Perfekta julklappen till någon som flyttar in i nytt!![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Nu 995.- (Rek. pris 1869.-)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Köp](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845940&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)\n\n![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![](https://s3-eu-west-1.amazonaws.com/mimgs/cdn/TWO/2535/vMVti4AXSAm0SMwE1sDm_Produktbox_v50_mac.png)](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845941&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Mac Chef Knivset](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845942&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Två knivskarpa knivar som ligger perfekt i handen.![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Nu 899.- (Rek. pris 1375.-)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Köp](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845943&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)\n\n![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![](https://s3-eu-west-1.amazonaws.com/mimgs/cdn/TWO/2535/0kxUFHPXRVWwG6ysZrsQ_Produktbox_v50_emma.png)](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845944&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Stelton Emma Vattenkokare](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845945&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)En modern och snygg vattenkokare till julens alla tekvällar.![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Nu 899.- (Rek. pris 1499.-)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Köp](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845946&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)\n\n![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![](https://s3-eu-west-1.amazonaws.com/mimgs/cdn/TWO/2535/AOf2t63MSPKIfcCOpWlm_Produktbox_v50_weber_stativ.png)](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845947&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Weber Q2200](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845948&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Grillarnas vardagshjälte - snabb uppvärmning och bra värmespridning.![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Nu 3995.- (Rek. pris 4995.-)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Köp](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845949&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)\n\n![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![](https://s3-eu-west-1.amazonaws.com/mimgs/cdn/TWO/2535/QSp6eyuvRn2ATnnPUKrU_Produktbox_v50_georg_jensen.png)](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845950&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Georg Jensen Bestickset ](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845951&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Tidlös design i 24 delar.![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Nu 2499.- (Rek. pris 3899.-)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Köp](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845952&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)\n\n![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](https://s3-eu-west-1.amazonaws.com/mimgs/cdn/TWO/2535/0dsGSVsmRwywN9EgVboI_Produktbox_v50_spigelau.png)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Spiegelau Beer Classic![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Perfekt till ölälskaren.![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Nu 269.- (Rek. pris 399.-)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Köp![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)\n\n[![](https://s3-eu-west-1.amazonaws.com/mimgs/cdn/TWO/2535/b8Kgtw6Rhw2V2MNAjEgw_Produktbanner_v49_menytavla_se.png)](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845953&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)\n\n![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![](https://s3-eu-west-1.amazonaws.com/mimgs/cdn/TWO/2535/xsjgjyyReiRZzb4VU7m8_Produktbox_v50_tefal.png)](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845954&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Tefal Stekpanna & Kastrull](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845955&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Nu 649.- (Rek. pris 1249.-)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Köp](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845956&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)\n\n![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![](https://s3-eu-west-1.amazonaws.com/mimgs/cdn/TWO/2535/APt5u1jTE2t4HNR6qhQK_Produktbox_v50_set_gryta.png)](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845957&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Le Creuset Gryta med tillbehör](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845958&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Nu 1995.- (Rek. pris 3139.-)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Köp](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845959&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![](https://s3-eu-west-1.amazonaws.com/mimgs/cdn/TWO/2535/IdoGSYLSLjuRcgGBqqgq_ProduktboxStor_v50_crockpot.png)](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845960&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)\n\n![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![](https://s3-eu-west-1.amazonaws.com/mimgs/cdn/TWO/2535/aXLrdHr4Tn64nFknFcII_Produktbox_v48_georg_jensen.png)](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845961&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Georg Jensen Ljusstake](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845962&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)En ljusstake som gör sig fina hela året.![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Nu 499.- (Rek pris. 849.-)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Köp](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845963&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)\n\n![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](https://s3-eu-west-1.amazonaws.com/mimgs/cdn/TWO/2535/4E3UyWllSmi9wrEjAe97_Produktbox_v50_knivslip.png)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)KitchenIQ Knivslip![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Klarar Europeiska & Japanska knivar.![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Nu 495.- (Rek. pris 659.-)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Köp![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)\n\n![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![](https://s3-eu-west-1.amazonaws.com/mimgs/cdn/TWO/2535/vZPdGylaTWmQaa7axE9h_Produktbox_v50_lyngby.png)](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845964&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Lyngby Glas Champagneglas ](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845965&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Utmärkt för både dryck och dessert.![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Nu 199.- (Rek. pris 249.-)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Köp](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845966&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)\n\n![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![](https://s3-eu-west-1.amazonaws.com/mimgs/cdn/TWO/2535/Z08qzmyQDWGhZHJ4b87B_Produktbox_v50_wustof.png)](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845967&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Wüsthof Classic Kockkniv](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845968&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)En kockkniv som aldrig går ur tiden.![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Nu 699.- (Rek. pris 905.-)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Köp](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845969&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)\n\n![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![](https://s3-eu-west-1.amazonaws.com/mimgs/cdn/TWO/2535/SrnYyOkRrO7LGEXdWQoQ_Produktbox_v50weber.png)](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845970&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Weber E-410 & Slowjucier](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845971&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Ett paket med limiterad grill & slowjucier från OBH.![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Nu 10749.- (Rek. pris 15498.-)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Köp](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845972&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)\n\n![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![](https://s3-eu-west-1.amazonaws.com/mimgs/cdn/TWO/2535/S7LOvewoTdifO9eZrHdI_Produktbox_v50_dualit.png)](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845973&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Dualit Vattenkokare](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845974&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Fantastiska vattenkokare med en traditionell form och modern design. ![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Nu 999.- (Rek. pris 1999.-)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Köp](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845975&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)\n\n[![](https://s3-eu-west-1.amazonaws.com/mimgs/cdn/TWO/2535/vF2uv859Rdm1JHE0UZvx_Produktbanner_v49_satake_se.png)](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845976&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)\n\n![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![](https://s3-eu-west-1.amazonaws.com/mimgs/cdn/TWO/2535/AGF29f7iR7CWzlRvqV0i_Produktbox_v50_mareld.png)](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845977&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Mareld Bordskorg med kvarnset](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845978&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Nu 649.- (Rek. pris 985.-)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Köp](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845979&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)\n\n![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![](https://s3-eu-west-1.amazonaws.com/mimgs/cdn/TWO/2535/MzWsaiWTeG5XYOr4Z9Vb_Produktbox_v50_obh.png)](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845980&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[OBH Nordica Vakuumförpackare](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845981&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Nu 3990.- (Rek. pris 9990.-)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Köp](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845982&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![Till vår julkalender](https://s3-eu-west-1.amazonaws.com/mimgs/cdn/TWO/2535/IQ0K1LaRZ6zJlt3evo07_julkalender-banner-600_text_se.gif)](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845983&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Julkalender 🎁](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845984&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Varje dag fyller på med fler erbjudanden i vår julkalender - missa inte dagens lucka.![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Till vår julkalender](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845985&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![](https://s3-eu-west-1.amazonaws.com/mimgs/cdn/TWO/2535/7NmgawdKTQOm5iaXZeQg_640_v50_juldukningen_Se.jpg)](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845986&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Dukat för jul 🥂](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845987&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Ta fram ditt favoritporslin i jul och duka upp till fest! Oavsett om det är en liten eller stor bjudning finns det anledning att skämma bort köksbordet.![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Se mer juldukning](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845988&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)\n\n![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![](https://s3-eu-west-1.amazonaws.com/mimgs/cdn/TWO/2535/ADBm1OiQjOD2h81HPjBr_Produktbox_v50_wmf.png)](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845989&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[WMF Philadelphia Bestickset](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845990&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Nu 1279.- (Rek. pris 3420.-)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Köp](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845991&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)\n\n![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![](https://s3-eu-west-1.amazonaws.com/mimgs/cdn/TWO/2535/137Uv7IlRaaeFvZCDKWy_Produktbox_v50_acasia.png)](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845992&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Kitchen Craft Serveringsbräda](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845993&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Nu 399.- (Rek. pris 449.-)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Köp](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845994&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)\n\n![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![](https://s3-eu-west-1.amazonaws.com/mimgs/cdn/TWO/2535/RQHdjTUsTh2P2Stqhs7h_Produktbox_v50_r%C3%B6dvin.png)](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845995&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Iittala Essence Rödvin](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845996&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Nu 419.- (Rek. pris 699.-)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Köp](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845997&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)\n\n![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![](https://s3-eu-west-1.amazonaws.com/mimgs/cdn/TWO/2535/yP76SdvOROSpFqUVPvK1_Produktbox_v50_eva_solo.png)](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845998&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Eva Solo Dricksglas](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80845999&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Nu 189.- (Rek. pris 299.-)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Köp](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80846000&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![](https://s3-eu-west-1.amazonaws.com/mimgs/cdn/TWO/2535/28nkrtOVR0m4fgga39ec_ProduktboxStor_v50_swe_se.png)](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80846001&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)\n\n![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![](https://connect.nosto.com/image/v1/tmcvwy4j/f25c57d869debf0a0841cf70341bd9b2738fa27f/[email protected])](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80846002&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![](https://connect.nosto.com/image/v1/tmcvwy4j/f25c57d869debf0a0841cf70341bd9b2738fa27f/1/[email protected])](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80846003&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![](https://connect.nosto.com/image/v1/tmcvwy4j/f25c57d869debf0a0841cf70341bd9b2738fa27f/[email protected])](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80846004&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![](https://connect.nosto.com/image/v1/tmcvwy4j/f25c57d869debf0a0841cf70341bd9b2738fa27f/2/[email protected])](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80846005&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![](https://connect.nosto.com/image/v1/tmcvwy4j/f25c57d869debf0a0841cf70341bd9b2738fa27f/[email protected])](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80846006&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![](https://connect.nosto.com/image/v1/tmcvwy4j/f25c57d869debf0a0841cf70341bd9b2738fa27f/3/[email protected])](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80846007&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![](https://connect.nosto.com/image/v1/tmcvwy4j/f25c57d869debf0a0841cf70341bd9b2738fa27f/[email protected])](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80846008&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![](https://connect.nosto.com/image/v1/tmcvwy4j/f25c57d869debf0a0841cf70341bd9b2738fa27f/4/[email protected])](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80846009&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Alla våra bästa erbjudanden just nu - klicka här!](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80846010&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Köksmaskiner](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80846011&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Köksknivar ](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80846012&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Baktillbehör ](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80846013&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Köksredskap ](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80846014&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Dukade bordet ](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80846015&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Kokkärl & stekpannor ](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80846016&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Vitvaror ](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80846017&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Heminredning ](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80846018&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Utomhus ](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80846019&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Varumärken ](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80846020&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Presentkort](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80846021&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[Presenttips](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80846022&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)\n\n![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://carma-template.s3.amazonaws.com/bagarenochkocken/img/footer.jpg)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Köksredskap & design på nätet![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Bagaren och Kocken säljer köksredskap, köksmaskiner och designprodukter på nätet och i butik i Göteborg. Vi har över 10 000 produkter på vårt egna lager i Göteborg och kan därför leverera snabbt, oftast från oss samma dag eller dagen efter att vi fått din beställning.![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)Kundtjänst: 031-25 22 22 (mån-fre 10-16)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[bagarenochkocken.se](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80846023&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![Facebook](http://carma-template.s3.amazonaws.com/bagarenochkocken/img/facebook.gif)](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80846024&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![Twitter](http://carma-template.s3.amazonaws.com/bagarenochkocken/img/twitter.gif)](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80846025&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![Instagram](http://carma-template.s3.amazonaws.com/bagarenochkocken/img/instagram.gif)](http://klick.bagarenochkocken.se/mail/RLS?mid=782919919&guid=61yf0003019mpSLyaDg&lid=80846026&s=1)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)[![E-post](http://carma-template.s3.amazonaws.com/bagarenochkocken/img/email.gif)](mailto:[email protected])![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)*Copyright © 2017 Bagaren och Kocken AB, Alla rättigheter reserverade.*\nDetta är ett nyhetsbrev skickat av Bagaren och Kocken AB. Du får detta mail eftersom du är registrerad som kund hos oss eller har valt att prenumerera på vårt nyhetsbrev.![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)\n\n[Ta bort mig från listan](https://bagarenochkocken.se/avregistrering-nyhetsbrev/?originalId=564907&mid=782919919&guid=61yf0003019mpSLyaDg)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)\n\n[]()![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif)![](http://ec2-54-93-116-216.eu-central-1.compute.amazonaws.com/i.gif) "`', markdown.rs:288:4
note: Run with `RUST_BACKTRACE=1` for a backtrace.


failures:
    pixel_email_is_readable

test result: FAILED. 19 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out

no-color-fallback

ANSI colours aren't available ...
a) when the compiler output is piped, e.g. into an editor or IDE
b) in some terminals without the support

Much like the Rust compiler's warnings are still useful when colour is disabled, it would be nice if this crate's output was just as useful without colour output.

Option 1

  Some(
      Foo {
-         lorem: "Hello World!",
+         lorem: "Hello Wrold!",
          ipsum: 42,
          dolor: Ok(
-             "hey"
+             "hey ho!"
          )
      }
  )
  • PRO: unambiguous
  • CON: minor differences hard to spot (especially in long lines)

Option 2

Do it like Pythons unit test framework

  Some(
      Foo {
-         lorem: "Hello World!",
?                         -
+         lorem: "Hello Wrold!",
?                        +
          ipsum: 42,
          dolor: Ok(
-             "hey"
+             "hey ho!"
?                 ++++
          )
      }
  )
  • PRO: unambiguous
  • PRO: extra hint to spot minor differences
  • CON: soft line-wraps will turn this into a mess for long lines

Option 3

use some special chars

  Some(
      Foo {
-         lorem: "Hello W[-r-]old!",
+         lorem: "Hello Wo{+r+}ld!",
          ipsum: 42,
          dolor: Ok(
-             "hey"
+             "hey{+ ho!+}"
          )
      }
  )
  • PRO: extra hint to spot minor differences - even for long lines
  • CON: ambiguous, because you could think [--] and {++} are part of the strings
  • CON: hard to read, if lines contain a lot of special characters

Open Questions

  • can we detect ANSI-colour support automatically? (note: if yes, we have to be carfeul about unit tests in situations without ANSI-colour support. This should be an exception to still make the tests pass).

assert_eq! too strict re strings

The following test passes using the standard assert_eq!, but fails to compile using pretty_assertions:

    #[test]
    fn it_works() {
	let s0: &'static str = "foo";
	let s1: String = "foo".to_string();
	assert_eq!(s0, s1);
    }

The error is

error[E0308]: mismatched types
  --> src/lib.rs:10:2
   |
10 | 	assert_eq!(s0, s1);
   | 	^^^^^^^^^^^^^^^^^^^ expected &str, found struct `std::string::String`
   |
   = note: expected type `&&str`
              found type `&std::string::String`
   = note: this error originates in a macro outside of the current crate

Please can the behaviour of assert_eq! be relaxed, so pretty_assertions can truly be a drop-in replacement? Thanks.

Can't read highlighted test on bright terminal scheme

Due to real world brightness issues out of my control, I have to switch back and forth between a light and dark terminal scheme twice per day. rust-pretty-assertions look great in a dark scheme:

image

But as soon as I switch to my bright scheme, I can no longer make out the text in the highlighted sections:

image

(This is the Dayfox theme for Kitty)

It seems rust-pretty-assertions hard-codes the highlighted background colors, which I confirmed by setting every color in my terminal to red:

image

Would it perhaps be a better idea to use only ANSI color codes, so this can be controlled with the terminal's color scheme?

Is there anything I can do in the short term to keep rust-pretty-assertions usable during daytime? 😄

Rust 2018 documentation

In the 2018 edition, #[macro_use] is gone, or at least deprecated. Instead, the new way to import macros is just like importing functions. So using pretty_assertions in Rust 2018 requires a use pretty_assertions::{assert_eq, assert_ne};. The docs should mention that.

Unfortunately, that use statement must be repeated in every test module. It would be great if you could find a better way for Rust 2018.

https://rust-lang-nursery.github.io/edition-guide/rust-2018/macros/macro-changes.html

Allow optional argument names (replacing "left"/"right")

"left" and "right" are semantically neutral labels. In many cases, it would be easier to understand what is actually failing if the labels could be changed to a something with more meaning (eg, "expect" and "actual"). An example proposed use and output ...

assert_eq!( expect: [1, 2, 4], actual: [1, 2, 8]);

thread 'main' panicked at 'assertion failed: `(expect == actual)`

Diff < expect / actual > :
 [
     1,
     2,
<    4,
>    8,
 ]
' ...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.