-
-
Notifications
You must be signed in to change notification settings - Fork 27
Trials
2022-08-05, https://github.com/rbtcollins/fs_at 21a7b61c9dbdfdf890fc7d556e04d9150fc3aaf9
using cargo-mutants 0.2.10-pre.
It worked first try, and it finds some gaps, but they're all in Windows implementations, when I'm testing on Linux.
https://gist.github.com/7ec27bceea3fd27cf729310e195ff9b8
This was basically a success showing the crate's well-tested, at least on Linux.
Detecting to skip the Windows modules automatically would have been ideal, although that's complicated a bit by the fact that it uses cfg_if
not simple cfg
attrs. (See https://github.com/rbtcollins/fs_at/pull/8.)
Just adding #[mutants::skip]
into the Windows modules would make it succeed on Linux but then mutation testing would not be useful on Windows.
Conclusions:
- Add an
--exclude
file option which could be used to skip whichever modules don't apply on the platform running the test. https://github.com/sourcefrog/cargo-mutants/issues/58 - Auto-interpretation of
cfg
would be good though might also be complicated. https://github.com/sourcefrog/cargo-mutants/issues/50
2022-08-05, https://github.com/time-rs/time using cargo-mutants 0.2.10-pre.
This failed tests in the clean tree, and when I investigated I saw that it also fails in a clean checkout. It turns out (https://github.com/time-rs/time/issues/497) that the tests fail unless you use cargo test --all-features
.
I tried cargo mutants -- --all-features
, but it still failed, because the extra arguments to cargo mutants
are passed only to cargo test
, and this needs to go to cargo build --tests
as well, or the build fails.
It seems a bit unfriendly to new contributors that cargo test
won't pass by default, but it's not unreasonable.
In any case there's a general issue about supporting crates with features: people might want to test mutations with non-default features on.
Conclusions:
- An option to pass arguments to
cargo build
as well ascargo test
https://github.com/sourcefrog/cargo-mutants/issues/59. - Perhaps specific handlin of
--all-features
etc https://github.com/sourcefrog/cargo-mutants/issues/60.
2022-08-05, https://github.com/jneem/imbl using cargo-mutants 0.2.10-pre.
Testing v2.0.0-1-g8756e76
, 8756e765d8f76688da333b751db14287ae862c20.
I was going to test <https://github.com/bodil/im-rs but it seems that has been abandoned and forked as imbl
, so I'll do imbl
instead.
Seems like it should be hermetic, and it has no workspace, so 🤞.
It finds 830 mutants and on my laptop is predicting it'll take three hours to try them all. But it does seem to be proceeding and finding some gaps. Some look like they might be real test coverage gaps.
Partial output: https://gist.github.com/sourcefrog/5475f9695e4a42e97c19551d1d79f42b
; nice cargo mutants -d ~/src/imbl
Freshen source tree ... ok in 14.316s
Copy source and build products to scratch directory ... 559 MB in 0.489s
Unmutated baseline ... ok in 15.745s
Auto-set test timeout to 78.5s
Found 836 mutants to test
src/vector/mod.rs:1904: replace <impl Sum for Vector<A>>::sum -> Self with Default::default() ... NOT CAUGHT in 22.992s
src/hash/set.rs:939: replace <impl From for HashSet<A, S>>::from -> Self with Default::default() ... NOT CAUGHT in 17.512s
src/ord/set.rs:113: replace <impl BTreeValue for Value<A>>::ptr_eq -> bool with true ... NOT CAUGHT in 17.951s
src/ord/map.rs:1220: replace OrdMap<K, V>::symmetric_difference_with -> Self with Default::default() ... NOT CAUGHT in 18.657s
src/hash/map.rs:1834: replace <impl Iterator for IterMut<'a, K, V>>::next -> Option<Self::Item> with Default::default() ... NOT CAUGHT in 18.366s
src/ord/set.rs:272: replace OrdSet<A>::ptr_eq -> bool with false ... NOT CAUGHT in 21.529s
src/ord/set.rs:487: replace OrdSet<A>::insert -> Option<A> with Default::default() ... TIMEOUT in 84.335s
src/tests/mod.rs:5: replace code_fmt -> String with "".into() ... NOT CAUGHT in 20.769s
src/hash/set.rs:796: replace <impl Debug for HashSet<A, S>>::fmt -> Result<(), Error> with Ok(Default::default()) ... NOT CAUGHT in 17.620s
interrupted
Error: interrupted
Freshen source tree ... ok in 0.033s
Copy source and build products to scratch directory ... 559 MB in 0.448s
Unmutated baseline ... ok in 15.631s
Auto-set test timeout to 77.9s
Found 836 mutants to test
src/hash/map.rs:116: replace <impl HashValue for (K, V)>::ptr_eq -> bool with true ... NOT CAUGHT in 18.191s
src/hash/set.rs:919: replace <impl From for HashSet<OA, SB>>::from -> Self with Default::default() ... NOT CAUGHT in 18.720s
src/vector/mod.rs:1941: replace <impl Extend for Vector<A>>::extend with () ... NOT CAUGHT in 20.633s
src/hash/set.rs:534: replace HashSet<A, S>::unions -> Self with Default::default() ... NOT CAUGHT in 20.982s
src/ord/set.rs:1145: replace <impl From for OrdSet<A>>::from -> Self with Default::default() ... NOT CAUGHT in 19.004s
src/vector/mod.rs:706: replace Vector<A>::dot -> std::io::Result<()> with Ok(Default::default()) ... NOT CAUGHT in 21.798s
src/hash/map.rs:221: replace HashMap<K, V, S>::ptr_eq -> bool with true ... NOT CAUGHT in 21.155s
src/hash/map.rs:2036: replace <impl From for HashMap<K, V, S>>::from -> Self with Default::default() ... NOT CAUGHT in 18.540s
src/ord/set.rs:152: replace <impl BTreeValue for Value<A>>::search_value -> Result<usize, usize> with Ok(Default::default()) ... NOT CAUGHT in 21.170s
src/nodes/rrb.rs:405: replace Node<A>::size -> usize with Default::default() ... NOT CAUGHT in 19.158s
src/vector/mod.rs:1842: replace <impl PartialEq for Vector<A>>::eq::cmp_chunk -> bool with false ... NOT CAUGHT in 20.426s
src/ord/map.rs:1815: replace <impl Extend for OrdMap<K, V>>::extend with () ... NOT CAUGHT in 21.744s
src/vector/rayon.rs:74: replace <impl IndexedParallelIterator for ParIter<'a, A>>::len -> usize with Default::default() ... NOT CAUGHT in 20.734s
src/ord/set.rs:972: replace <impl Iterator for Iter<'a, A>>::size_hint -> (usize, Option<usize>) with Default::default() ... NOT CAUGHT in 17.709s
src/ord/map.rs:1481: replace OrdMap<K, V>::without_max -> (Option<V>, Self) with Default::default() ... NOT CAUGHT in 22.209s
src/ser.rs:49: replace <impl Visitor for SeqVisitor<'de, S, A>>::expecting -> fmt::Result with Ok(Default::default()) ... NOT CAUGHT in 20.054s
interrupted
Error: interrupted
Conclusions:
- Let it finish running (on a bigger machine)
- Look in detail at some more of the missed mutations and see if they really seem to be coverage gaps. Report here and maybe offer the report to the maintainers.
- The experiments often end up using only a single core, so this is another case where running multiple mutants in parallel would be useful https://github.com/sourcefrog/cargo-mutants/issues/39.
2022-08-06 https://github.com/apollographql/apollo-rs
The repo is a workspace with no root package, and cargo-mutants doesn't support that yet.
Conclusions:
- Test all packages within a workspace https://github.com/sourcefrog/cargo-mutants/issues/45.
https://github.com/alexcrichton/tar-rs
2022-08-06, cargo-mutants v0.2.10-pre, 0.4.38-2-gf4f439c
, f4f439c
A nice fast test suite that takes about 2s on my laptop. Seems like it should be hermetic and well tested. Finds 281 mutants.
Freshen source tree ... ok in 2.877s
Copy source and build products to scratch directory ... 83 MB in 0.099s
Unmutated baseline ... ok in 2.024s
Auto-set test timeout to 20.0s
Found 281 mutants to test
281 mutants tested in 9:26: 234 caught, 47 unviable
Conclusions:
- Everything was caught! An outstanding result.
- We could perhaps test this from CI on either cargo-mutants or tar-rs.
https://github.com/alexcrichton/toml-rs
2022-08-06, cargo-mutants v0.2.10-pre, 0.5.9-2-gcf86793
, cf86793
.
This also seems like something that would be amenable to good hermetic tests. But, it seems like there are what look like true-positive gaps, and also, interestingly, what seems like a hang:
src/tokens.rs:250: replace Tokenizer<'a>::eatc -> bool with true ... TIMEOUT in 21.004s
That's not too surprising given the name, since it probably governs a loop. It's nice that the timeout code seems to have detected and interrupted it.
There's a long list of findings:
Freshen source tree ... ok in 5.669s
Copy source and build products to scratch directory ... 191 MB in 0.165s
Unmutated baseline ... ok in 1.300s
Auto-set test timeout to 20.0s
Found 481 mutants to test
src/value.rs:148: replace Value::is_str -> bool with true ... NOT CAUGHT in 2.843s
src/map.rs:72: replace Map<String, Value>::clear with () ... NOT CAUGHT in 1.880s
src/ser.rs:862: replace <impl Serializer for &'b mut Serializer<'a>>::serialize_unit -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.707s
src/map.rs:288: replace <impl Deserialize for Map<String, Value>>::deserialize::<impl Visitor for Visitor>::expecting -> fmt::Result with Ok(Default::default()) ... NOT CAUGHT in 1.770s
src/ser.rs:851: replace <impl Serializer for &'b mut Serializer<'a>>::serialize_none -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.720s
src/value.rs:148: replace Value::is_str -> bool with false ... NOT CAUGHT in 2.020s
src/value.rs:135: replace Value::is_bool -> bool with false ... NOT CAUGHT in 2.008s
src/de.rs:335: replace build_table_indices -> HashMap<Vec<Cow<'de, str>>, Vec<usize>> with Default::default() ... NOT CAUGHT in 2.394s
src/map.rs:282: replace <impl Deserialize for Map<String, Value>>::deserialize -> Result<Self, D::Error> with Ok(Default::default()) ... NOT CAUGHT in 2.362s
src/value.rs:122: replace Value::is_float -> bool with false ... NOT CAUGHT in 2.222s
src/map.rs:223: replace <impl PartialEq for Map<String, Value>>::eq -> bool with true ... NOT CAUGHT in 1.973s
src/de.rs:1046: replace <impl MapAccess for DatetimeDeserializer<'de>>::next_key_seed -> Result<Option<K::Value>, Error> with Ok(Default::default()) ... NOT CAUGHT in 2.290s
src/value.rs:682: replace <impl MapAccess for MapDeserializer>::next_key_seed -> Result<Option<T::Value>, crate::de::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.888s
src/de.rs:2028: replace Error::line_col -> Option<(usize, usize)> with Default::default() ... NOT CAUGHT in 2.190s
src/ser.rs:1234: replace <impl Serializer for DateStrEmitter<'a, 'b>>::serialize_u32 -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 2.056s
src/ser.rs:1429: replace <impl Serializer for StringExtractor>::serialize_bytes -> Result<String, Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.739s
src/ser.rs:1385: replace <impl Serializer for StringExtractor>::serialize_i16 -> Result<String, Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.738s
src/ser.rs:1433: replace <impl Serializer for StringExtractor>::serialize_none -> Result<String, Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.688s
src/ser.rs:858: replace <impl Serializer for &'b mut Serializer<'a>>::serialize_some -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.706s
src/spanned.rs:77: replace <impl Borrow for Spanned<String>>::borrow -> &str with Default::default() ... NOT CAUGHT in 1.738s
src/ser.rs:1417: replace <impl Serializer for StringExtractor>::serialize_f64 -> Result<String, Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.730s
src/map.rs:64: replace Map<String, Value>::with_capacity -> Self with Default::default() ... NOT CAUGHT in 1.807s
src/tokens.rs:250: replace Tokenizer<'a>::eatc -> bool with true ... TIMEOUT in 21.004s
src/value.rs:181: replace Value::as_array_mut -> Option<&mut Vec<Value>> with Default::default() ... NOT CAUGHT in 2.558s
src/value.rs:210: replace Value::is_table -> bool with true ... NOT CAUGHT in 2.319s
src/value.rs:329: replace <impl Index for usize>::index -> Option<&'a Value> with Default::default() ... NOT CAUGHT in 2.395s
src/value.rs:114: replace Value::as_float -> Option<f64> with Default::default() ... NOT CAUGHT in 1.855s
src/tokens.rs:229: replace Tokenizer<'a>::eat_newline_or_eof -> Result<(), Error> with Ok(Default::default()) ... NOT CAUGHT in 2.216s
src/ser.rs:846: replace <impl Serializer for &'b mut Serializer<'a>>::serialize_bytes -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 2.139s
src/ser.rs:1206: replace <impl Serializer for DateStrEmitter<'a, 'b>>::serialize_bool -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 2.265s
src/ser.rs:1444: replace <impl Serializer for StringExtractor>::serialize_unit -> Result<String, Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.856s
src/map.rs:160: replace Map<String, Value>::len -> usize with Default::default() ... NOT CAUGHT in 1.722s
src/ser.rs:1468: replace <impl Serializer for StringExtractor>::serialize_newtype_struct -> Result<String, Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.788s
src/spanned.rs:56: replace Spanned<T>::span -> (usize, usize) with Default::default() ... NOT CAUGHT in 1.702s
src/de.rs:2065: replace Error::fix_offset with () ... NOT CAUGHT in 2.192s
src/ser.rs:161: replace ArraySettings::pretty -> ArraySettings with Default::default() ... NOT CAUGHT in 2.291s
src/value.rs:970: replace <impl SerializeTupleVariant for SerializeVec>::serialize_field -> Result<(), crate::ser::Error> with Ok(Default::default()) ... NOT CAUGHT in 2.339s
src/ser.rs:1405: replace <impl Serializer for StringExtractor>::serialize_u32 -> Result<String, Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.906s
src/macros.rs:413: replace insert_toml with () ... NOT CAUGHT in 1.786s
src/map.rs:256: replace <impl Debug for Map<String, Value>>::fmt -> Result<(), fmt::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.936s
src/ser.rs:1144: replace <impl SerializeStruct for SerializeTable<'a, 'b>>::serialize_field -> Result<(), Error> with Ok(Default::default()) ... NOT CAUGHT in 2.121s
src/ser.rs:837: replace <impl Serializer for &'b mut Serializer<'a>>::serialize_str -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 2.063s
src/map.rs:137: replace Map<String, Value>::remove -> Option<Value> with Default::default() ... NOT CAUGHT in 2.043s
src/ser.rs:1274: replace <impl Serializer for DateStrEmitter<'a, 'b>>::serialize_unit -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.906s
src/ser.rs:1246: replace <impl Serializer for DateStrEmitter<'a, 'b>>::serialize_f64 -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 2.305s
src/ser.rs:1214: replace <impl Serializer for DateStrEmitter<'a, 'b>>::serialize_i16 -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.873s
src/ser.rs:899: replace <impl Serializer for &'b mut Serializer<'a>>::serialize_newtype_variant -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.709s
src/de.rs:1933: replace Deserializer<'a>::eat_comment -> Result<bool, Error> with Ok(Default::default()) ... NOT CAUGHT in 2.227s
src/de.rs:2058: replace Error::add_key_context with () ... NOT CAUGHT in 2.154s
src/de.rs:1302: replace Deserializer<'a>::set_allow_duplicate_after_longer_table with () ... NOT CAUGHT in 1.962s
src/value.rs:168: replace Value::is_datetime -> bool with true ... NOT CAUGHT in 2.207s
src/de.rs:548: replace <impl SeqAccess for MapVisitor<'de, 'b>>::next_element_seed -> Result<Option<K::Value>, Error> with Ok(Default::default()) ... NOT CAUGHT in 2.657s
src/map.rs:98: replace Map<String, Value>::contains_key -> bool with false ... NOT CAUGHT in 2.507s
src/value.rs:938: replace <impl SerializeTuple for SerializeVec>::serialize_element -> Result<(), crate::ser::Error> with Ok(Default::default()) ... NOT CAUGHT in 2.206s
src/ser.rs:1421: replace <impl Serializer for StringExtractor>::serialize_char -> Result<String, Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.944s
src/ser.rs:808: replace <impl Serializer for &'b mut Serializer<'a>>::serialize_u8 -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.936s
src/ser.rs:45: replace to_vec -> Result<Vec<u8>, Error> with Ok(Default::default()) ... NOT CAUGHT in 1.936s
src/de.rs:1937: replace Deserializer<'a>::eat_newline_or_eof -> Result<(), Error> with Ok(Default::default()) ... NOT CAUGHT in 2.338s
src/value.rs:706: replace <impl MapAccess for MapDeserializer>::size_hint -> Option<usize> with Default::default() ... NOT CAUGHT in 2.039s
src/value.rs:215: replace Value::same_type -> bool with false ... NOT CAUGHT in 2.320s
src/map.rs:166: replace Map<String, Value>::is_empty -> bool with true ... NOT CAUGHT in 1.738s
src/value.rs:921: replace <impl SerializeSeq for SerializeVec>::serialize_element -> Result<(), crate::ser::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.817s
src/ser.rs:820: replace <impl Serializer for &'b mut Serializer<'a>>::serialize_u64 -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 2.057s
src/ser.rs:1093: replace <impl SerializeMap for SerializeTable<'a, 'b>>::serialize_value -> Result<(), Error> with Ok(Default::default()) ... NOT CAUGHT in 1.988s
src/tokens.rs:456: replace Tokenizer<'a>::substr_offset -> usize with Default::default() ... NOT CAUGHT in 1.958s
src/value.rs:1054: replace <impl Visitor for DatetimeOrTable<'a>>::expecting -> fmt::Result with Ok(Default::default()) ... NOT CAUGHT in 1.890s
src/value.rs:168: replace Value::is_datetime -> bool with false ... NOT CAUGHT in 2.008s
src/ser.rs:1481: replace <impl Serializer for StringExtractor>::serialize_newtype_variant -> Result<String, Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 2.039s
src/ser.rs:1389: replace <impl Serializer for StringExtractor>::serialize_i32 -> Result<String, Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.808s
src/ser.rs:730: replace Serializer<'a>::emit_key_part -> Result<bool, Error> with Ok(Default::default()) ... NOT CAUGHT in 2.248s
src/ser.rs:1035: replace <impl SerializeTuple for SerializeSeq<'a, 'b>>::end -> Result<(), Error> with Ok(Default::default()) ... NOT CAUGHT in 2.171s
src/ser.rs:1780: replace <impl SerializeSeq for Categorize<E>>::serialize_element -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 2.293s
src/de.rs:2076: replace Error::fix_linecol with () ... NOT CAUGHT in 2.223s
src/ser.rs:1079: replace <impl SerializeMap for SerializeTable<'a, 'b>>::serialize_key -> Result<(), Error> with Ok(Default::default()) ... NOT CAUGHT in 2.288s
src/spanned.rs:83: replace <impl PartialEq for Spanned<T>>::eq -> bool with true ... NOT CAUGHT in 2.219s
src/map.rs:323: replace <impl FromIterator for Map<String, Value>>::from_iter -> Self with Default::default() ... NOT CAUGHT in 1.725s
src/value.rs:96: replace Value::get_mut -> Option<&mut Value> with Default::default() ... NOT CAUGHT in 2.423s
src/ser.rs:525: replace Serializer<'a>::emit_str -> Result<(), Error> with Ok(Default::default()) ... NOT CAUGHT in 2.312s
src/value.rs:361: replace <impl Index for String>::index -> Option<&'a Value> with Default::default() ... NOT CAUGHT in 2.311s
src/ser.rs:792: replace <impl Serializer for &'b mut Serializer<'a>>::serialize_i8 -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.726s
src/ser.rs:1270: replace <impl Serializer for DateStrEmitter<'a, 'b>>::serialize_some -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.723s
src/spanned.rs:124: replace <impl Deserialize for Spanned<T>>::deserialize::<impl Visitor for SpannedVisitor<T>>::expecting -> fmt::Result with Ok(Default::default()) ... NOT CAUGHT in 1.708s
src/de.rs:1292: replace Deserializer<'a>::set_require_newline_after_table with () ... NOT CAUGHT in 1.765s
src/ser.rs:828: replace <impl Serializer for &'b mut Serializer<'a>>::serialize_f64 -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 2.056s
src/ser.rs:1457: replace <impl Serializer for StringExtractor>::serialize_unit_variant -> Result<String, Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 2.060s
src/value.rs:1073: replace <impl Visitor for DatetimeOrTable<'a>>::visit_string -> Result<bool, E> with Ok(Default::default()) ... NOT CAUGHT in 1.739s
src/datetime.rs:420: replace digit -> Result<u8, DatetimeParseError> with Ok(Default::default()) ... NOT CAUGHT in 1.829s
src/de.rs:2250: replace E<'a>::type_name -> &'static str with Default::default() ... NOT CAUGHT in 1.824s
src/datetime.rs:217: replace <impl Display for Time>::fmt -> fmt::Result with Ok(Default::default()) ... NOT CAUGHT in 2.227s
src/value.rs:109: replace Value::is_integer -> bool with false ... NOT CAUGHT in 2.157s
src/macros.rs:419: replace push_toml with () ... NOT CAUGHT in 2.023s
src/datetime.rs:211: replace <impl Display for Date>::fmt -> fmt::Result with Ok(Default::default()) ... NOT CAUGHT in 1.761s
src/value.rs:954: replace <impl SerializeTupleStruct for SerializeVec>::serialize_field -> Result<(), crate::ser::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.736s
src/value.rs:101: replace Value::as_integer -> Option<i64> with Default::default() ... NOT CAUGHT in 1.957s
src/ser.rs:1852: replace <impl SerializeStruct for Categorize<E>>::serialize_field -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.989s
src/map.rs:304: replace <impl Deserialize for Map<String, Value>>::deserialize::<impl Visitor for Visitor>::visit_map -> Result<Self::Value, V::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.813s
src/ser.rs:1413: replace <impl Serializer for StringExtractor>::serialize_f32 -> Result<String, Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.845s
src/ser.rs:1238: replace <impl Serializer for DateStrEmitter<'a, 'b>>::serialize_u64 -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.823s
src/ser.rs:1047: replace <impl SerializeTupleVariant for SerializeSeq<'a, 'b>>::serialize_field -> Result<(), Error> with Ok(Default::default()) ... NOT CAUGHT in 1.806s
src/ser.rs:866: replace <impl Serializer for &'b mut Serializer<'a>>::serialize_unit_struct -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 2.316s
src/ser.rs:1440: replace <impl Serializer for StringExtractor>::serialize_some -> Result<String, Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.770s
src/ser.rs:477: replace Serializer<'a>::emit_array -> Result<(), Error> with Ok(Default::default()) ... NOT CAUGHT in 1.958s
src/ser.rs:886: replace <impl Serializer for &'b mut Serializer<'a>>::serialize_newtype_struct -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.920s
src/spanned.rs:97: replace <impl PartialOrd for Spanned<T>>::partial_cmp -> Option<Ordering> with Default::default() ... NOT CAUGHT in 1.806s
src/value.rs:173: replace Value::as_array -> Option<&Vec<Value>> with Default::default() ... NOT CAUGHT in 1.946s
src/ser.rs:1836: replace <impl SerializeMap for Categorize<E>>::serialize_value -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 2.009s
src/value.rs:647: replace <impl SeqAccess for SeqDeserializer>::next_element_seed -> Result<Option<T::Value>, crate::de::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.892s
src/ser.rs:1051: replace <impl SerializeTupleVariant for SerializeSeq<'a, 'b>>::end -> Result<(), Error> with Ok(Default::default()) ... NOT CAUGHT in 2.374s
src/tokens.rs:268: replace Tokenizer<'a>::input -> &'a str with Default::default() ... NOT CAUGHT in 1.753s
src/datetime.rs:484: replace <impl Deserialize for DatetimeKey>::deserialize::<impl Visitor for FieldVisitor>::expecting -> fmt::Result with Ok(Default::default()) ... NOT CAUGHT in 1.769s
src/value.rs:109: replace Value::is_integer -> bool with true ... NOT CAUGHT in 2.058s
src/ser.rs:1242: replace <impl Serializer for DateStrEmitter<'a, 'b>>::serialize_f32 -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 2.299s
src/ser.rs:1218: replace <impl Serializer for DateStrEmitter<'a, 'b>>::serialize_i32 -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.720s
src/ser.rs:666: replace Serializer<'a>::emit_table_header -> Result<(), Error> with Ok(Default::default()) ... NOT CAUGHT in 2.209s
src/value.rs:365: replace <impl Index for String>::index_mut -> Option<&'a mut Value> with Default::default() ... NOT CAUGHT in 2.220s
src/ser.rs:1377: replace <impl Serializer for StringExtractor>::serialize_bool -> Result<String, Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.754s
src/ser.rs:1278: replace <impl Serializer for DateStrEmitter<'a, 'b>>::serialize_unit_struct -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.706s
src/ser.rs:1250: replace <impl Serializer for DateStrEmitter<'a, 'b>>::serialize_char -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 2.161s
src/map.rs:334: replace <impl Extend for Map<String, Value>>::extend with () ... NOT CAUGHT in 1.721s
src/ser.rs:796: replace <impl Serializer for &'b mut Serializer<'a>>::serialize_i16 -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 2.047s
src/map.rs:53: replace Map<String, Value>::with_capacity -> Self with Default::default() ... NOT CAUGHT in 2.104s
src/de.rs:1672: replace Deserializer<'a>::float -> Result<f64, Error> with Ok(Default::default()) ... NOT CAUGHT in 2.391s
src/value.rs:135: replace Value::is_bool -> bool with true ... NOT CAUGHT in 2.156s
src/value.rs:378: replace <impl Index for &'s T>::index_mut -> Option<&'a mut Value> with Default::default() ... NOT CAUGHT in 2.109s
src/datetime.rs:228: replace <impl Display for Offset>::fmt -> fmt::Result with Ok(Default::default()) ... NOT CAUGHT in 1.979s
src/ser.rs:1425: replace <impl Serializer for StringExtractor>::serialize_str -> Result<String, Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.914s
src/ser.rs:1210: replace <impl Serializer for DateStrEmitter<'a, 'b>>::serialize_i8 -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.756s
src/ser.rs:1448: replace <impl Serializer for StringExtractor>::serialize_unit_struct -> Result<String, Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.769s
src/ser.rs:982: replace <impl SerializeSeq for SerializeSeq<'a, 'b>>::serialize_element -> Result<(), Error> with Ok(Default::default()) ... NOT CAUGHT in 1.931s
src/tokens.rs:535: replace Token<'a>::describe -> &'static str with Default::default() ... NOT CAUGHT in 1.740s
src/ser.rs:1031: replace <impl SerializeTuple for SerializeSeq<'a, 'b>>::serialize_element -> Result<(), Error> with Ok(Default::default()) ... NOT CAUGHT in 1.730s
src/map.rs:166: replace Map<String, Value>::is_empty -> bool with false ... NOT CAUGHT in 1.756s
src/value.rs:160: replace Value::as_datetime -> Option<&Datetime> with Default::default() ... NOT CAUGHT in 2.052s
src/ser.rs:1397: replace <impl Serializer for StringExtractor>::serialize_u8 -> Result<String, Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 2.128s
src/ser.rs:442: replace Serializer<'a>::_emit_key -> Result<(), Error> with Ok(Default::default()) ... NOT CAUGHT in 2.019s
src/ser.rs:1819: replace <impl SerializeTupleStruct for Categorize<E>>::serialize_field -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.971s
src/value.rs:220: replace Value::type_str -> &'static str with Default::default() ... NOT CAUGHT in 1.979s
src/ser.rs:875: replace <impl Serializer for &'b mut Serializer<'a>>::serialize_unit_variant -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 2.053s
src/map.rs:296: replace <impl Deserialize for Map<String, Value>>::deserialize::<impl Visitor for Visitor>::visit_unit -> Result<Self::Value, E> with Ok(Default::default()) ... NOT CAUGHT in 2.024s
src/ser.rs:1806: replace <impl SerializeTupleVariant for Categorize<E>>::serialize_field -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.687s
src/ser.rs:1298: replace <impl Serializer for DateStrEmitter<'a, 'b>>::serialize_newtype_struct -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.873s
src/value.rs:189: replace Value::is_array -> bool with false ... NOT CAUGHT in 2.023s
src/ser.rs:788: replace <impl Serializer for &'b mut Serializer<'a>>::serialize_bool -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 2.008s
src/ser.rs:103: replace to_string_pretty -> Result<String, Error> with Ok(Default::default()) ... NOT CAUGHT in 1.927s
src/ser.rs:1287: replace <impl Serializer for DateStrEmitter<'a, 'b>>::serialize_unit_variant -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.925s
src/ser.rs:997: replace <impl SerializeSeq for SerializeSeq<'a, 'b>>::end -> Result<(), Error> with Ok(Default::default()) ... NOT CAUGHT in 1.825s
src/ser.rs:1067: replace <impl SerializeTupleStruct for SerializeSeq<'a, 'b>>::end -> Result<(), Error> with Ok(Default::default()) ... NOT CAUGHT in 2.241s
src/ser.rs:1535: replace <impl Display for Error>::fmt -> fmt::Result with Ok(Default::default()) ... NOT CAUGHT in 2.373s
src/datetime.rs:539: replace <impl Display for DatetimeParseError>::fmt -> fmt::Result with Ok(Default::default()) ... NOT CAUGHT in 1.990s
src/ser.rs:1393: replace <impl Serializer for StringExtractor>::serialize_i64 -> Result<String, Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.820s
src/ser.rs:1179: replace <impl SerializeStruct for SerializeTable<'a, 'b>>::end -> Result<(), Error> with Ok(Default::default()) ... NOT CAUGHT in 1.889s
src/ser.rs:1226: replace <impl Serializer for DateStrEmitter<'a, 'b>>::serialize_u8 -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.889s
src/map.rs:223: replace <impl PartialEq for Map<String, Value>>::eq -> bool with false ... NOT CAUGHT in 1.710s
src/ser.rs:816: replace <impl Serializer for &'b mut Serializer<'a>>::serialize_u32 -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.759s
src/ser.rs:1401: replace <impl Serializer for StringExtractor>::serialize_u16 -> Result<String, Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.752s
src/tokens.rs:221: replace Tokenizer<'a>::eat_comment -> Result<bool, Error> with Ok(Default::default()) ... NOT CAUGHT in 2.190s
src/datetime.rs:450: replace <impl Deserialize for Datetime>::deserialize::<impl Visitor for DatetimeVisitor>::expecting -> fmt::Result with Ok(Default::default()) ... NOT CAUGHT in 2.110s
src/datetime.rs:519: replace <impl Deserialize for DatetimeFromString>::deserialize::<impl Visitor for Visitor>::expecting -> fmt::Result with Ok(Default::default()) ... NOT CAUGHT in 1.758s
src/value.rs:215: replace Value::same_type -> bool with true ... NOT CAUGHT in 1.716s
src/de.rs:2009: replace Deserializer<'a>::to_linecol -> (usize, usize) with Default::default() ... NOT CAUGHT in 2.209s
src/value.rs:654: replace <impl SeqAccess for SeqDeserializer>::size_hint -> Option<usize> with Default::default() ... NOT CAUGHT in 2.275s
src/ser.rs:1222: replace <impl Serializer for DateStrEmitter<'a, 'b>>::serialize_i64 -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.868s
src/spanned.rs:83: replace <impl PartialEq for Spanned<T>>::eq -> bool with false ... NOT CAUGHT in 1.906s
src/ser.rs:1409: replace <impl Serializer for StringExtractor>::serialize_u64 -> Result<String, Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.722s
src/de.rs:1282: replace Deserializer<'a>::end -> Result<(), Error> with Ok(Default::default()) ... NOT CAUGHT in 1.819s
src/ser.rs:1263: replace <impl Serializer for DateStrEmitter<'a, 'b>>::serialize_none -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.812s
src/ser.rs:1832: replace <impl SerializeMap for Categorize<E>>::serialize_key -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.689s
src/value.rs:384: replace <impl Display for Value>::fmt -> fmt::Result with Ok(Default::default()) ... NOT CAUGHT in 2.224s
src/value.rs:210: replace Value::is_table -> bool with false ... NOT CAUGHT in 2.221s
src/value.rs:127: replace Value::as_bool -> Option<bool> with Default::default() ... NOT CAUGHT in 2.190s
src/value.rs:122: replace Value::is_float -> bool with true ... NOT CAUGHT in 2.190s
src/value.rs:986: replace <impl SerializeMap for SerializeMap>::serialize_key -> Result<(), crate::ser::Error> with Ok(Default::default()) ... NOT CAUGHT in 2.120s
src/spanned.rs:91: replace <impl Hash for Spanned<T>>::hash with () ... NOT CAUGHT in 1.837s
src/ser.rs:800: replace <impl Serializer for &'b mut Serializer<'a>>::serialize_i32 -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 2.041s
src/ser.rs:1381: replace <impl Serializer for StringExtractor>::serialize_i8 -> Result<String, Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 2.023s
src/value.rs:352: replace <impl Index for str>::index_mut -> Option<&'a mut Value> with Default::default() ... NOT CAUGHT in 1.952s
src/ser.rs:90: replace to_string -> Result<String, Error> with Ok(Default::default()) ... NOT CAUGHT in 2.826s
src/ser.rs:511: replace Serializer<'a>::escape_key -> Result<(), Error> with Ok(Default::default()) ... NOT CAUGHT in 3.172s
src/ser.rs:1230: replace <impl Serializer for DateStrEmitter<'a, 'b>>::serialize_u16 -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 2.489s
src/ser.rs:832: replace <impl Serializer for &'b mut Serializer<'a>>::serialize_char -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 2.089s
src/ser.rs:824: replace <impl Serializer for &'b mut Serializer<'a>>::serialize_f32 -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 2.205s
src/de.rs:372: replace headers_equal -> bool with false ... NOT CAUGHT in 2.374s
src/datetime.rs:491: replace <impl Deserialize for DatetimeKey>::deserialize::<impl Visitor for FieldVisitor>::visit_str -> Result<(), E> with Ok(Default::default()) ... NOT CAUGHT in 2.539s
src/ser.rs:1311: replace <impl Serializer for DateStrEmitter<'a, 'b>>::serialize_newtype_variant -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.839s
src/value.rs:455: replace <impl Deserialize for Value>::deserialize::<impl Visitor for ValueVisitor>::expecting -> fmt::Result with Ok(Default::default()) ... NOT CAUGHT in 1.723s
src/ser.rs:1793: replace <impl SerializeTuple for Categorize<E>>::serialize_element -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.752s
src/ser.rs:1259: replace <impl Serializer for DateStrEmitter<'a, 'b>>::serialize_bytes -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.688s
src/datetime.rs:187: replace <impl Debug for Datetime>::fmt -> fmt::Result with Ok(Default::default()) ... NOT CAUGHT in 1.706s
src/ser.rs:1063: replace <impl SerializeTupleStruct for SerializeSeq<'a, 'b>>::serialize_field -> Result<(), Error> with Ok(Default::default()) ... NOT CAUGHT in 1.707s
src/value.rs:997: replace <impl SerializeMap for SerializeMap>::serialize_value -> Result<(), crate::ser::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.807s
src/value.rs:336: replace <impl Index for usize>::index_mut -> Option<&'a mut Value> with Default::default() ... NOT CAUGHT in 1.922s
src/ser.rs:1254: replace <impl Serializer for DateStrEmitter<'a, 'b>>::serialize_str -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.938s
src/map.rs:214: replace <impl Clone for Map<String, Value>>::clone -> Self with Default::default() ... NOT CAUGHT in 1.842s
src/value.rs:1026: replace <impl SerializeStruct for SerializeMap>::serialize_field -> Result<(), crate::ser::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.805s
src/ser.rs:1123: replace <impl SerializeMap for SerializeTable<'a, 'b>>::end -> Result<(), Error> with Ok(Default::default()) ... NOT CAUGHT in 1.858s
src/ser.rs:804: replace <impl Serializer for &'b mut Serializer<'a>>::serialize_i64 -> Result<(), Self::Error> with Ok(Default::default()) ... NOT CAUGHT in 1.841s
src/datetime.rs:193: replace <impl Display for Datetime>::fmt -> fmt::Result with Ok(Default::default()) ... NOT CAUGHT in 2.108s
src/ser.rs:177: replace StringSettings::pretty -> StringSettings with Default::default() ... NOT CAUGHT in 2.018s
481 mutants tested in 9:43: 197 missed, 58 caught, 225 unviable, 1 timeouts
Conclusions:
- This is an example where I'd like a test log file in
mutants.out
so that it's easy to upload to a bug afterwards. (https://github.com/sourcefrog/cargo-mutants/issues/38) - Maybe investigate a few and then offer the output to the maintainers.