Merge pull request #2084 from zpv/fix-changelog-all-paths-failed-typo
[rust-lightning] / fuzz / src / bin / chanmon_deser_target.rs
index 1677721b2ce641d369171e36d79714d71bd57e2b..9e9b17626768388ed6d4fefa369a40c09c2b3769 100644 (file)
@@ -1,14 +1,23 @@
+// This file is Copyright its original authors, visible in version control
+// history.
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
+
 // This file is auto-generated by gen_target.sh based on target_template.txt
 // To modify it, modify target_template.txt and run gen_target.sh instead.
 
 #![cfg_attr(feature = "libfuzzer_fuzz", no_main)]
 
+#[cfg(not(fuzzing))]
+compile_error!("Fuzz targets need cfg=fuzzing");
+
 extern crate lightning_fuzz;
 use lightning_fuzz::chanmon_deser::*;
 
-use std::fs;
-use std::io::Read;
-
 #[cfg(feature = "afl")]
 #[macro_use] extern crate afl;
 #[cfg(feature = "afl")]
@@ -38,6 +47,8 @@ fuzz_target!(|data: &[u8]| {
 
 #[cfg(feature = "stdin_fuzz")]
 fn main() {
+       use std::io::Read;
+
        let mut data = Vec::with_capacity(8192);
        std::io::stdin().read_to_end(&mut data).unwrap();
        chanmon_deser_run(data.as_ptr(), data.len());
@@ -45,6 +56,8 @@ fn main() {
 
 #[test]
 fn run_test_cases() {
+       use std::fs;
+       use std::io::Read;
        use lightning_fuzz::utils::test_logger::StringBuffer;
 
        use std::sync::{atomic, Arc};
@@ -83,10 +96,18 @@ fn run_test_cases() {
                        }
                }
        }
+       let mut failed_outputs = Vec::new();
        for (test, thread) in threads.drain(..) {
                if let Some(output) = thread.join().unwrap() {
-                       println!("Output of {}:\n{}", test, output);
-                       panic!();
+                       println!("\nOutput of {}:\n{}\n", test, output);
+                       failed_outputs.push(test);
+               }
+       }
+       if !failed_outputs.is_empty() {
+               println!("Test cases which failed: ");
+               for case in failed_outputs {
+                       println!("{}", case);
                }
+               panic!();
        }
 }