11extern crate copy_dir;
2- extern crate lazy_static;
32extern crate regex;
43extern crate serde_json;
54
@@ -12,19 +11,25 @@ use std::fs;
1211use std:: io:: Write ;
1312use std:: path:: { Path , PathBuf } ;
1413use std:: process:: { Command , Stdio } ;
15- use std:: sync:: { LazyLock } ;
16-
17- static EXE_CASR_CORE : LazyLock < & ' static str > = LazyLock :: new ( || env ! ( "CARGO_BIN_EXE_casr-core" ) ) ;
18- static EXE_CASR_AFL : LazyLock < & ' static str > = LazyLock :: new ( || env ! ( "CARGO_BIN_EXE_casr-afl" ) ) ;
19- static EXE_CASR_LIBFUZZER : LazyLock < & ' static str > = LazyLock :: new ( || env ! ( "CARGO_BIN_EXE_casr-libfuzzer" ) ) ;
20- static EXE_CASR_CLUSTER : LazyLock < & ' static str > = LazyLock :: new ( || env ! ( "CARGO_BIN_EXE_casr-cluster" ) ) ;
21- static EXE_CASR_SAN : LazyLock < & ' static str > = LazyLock :: new ( || env ! ( "CARGO_BIN_EXE_casr-san" ) ) ;
22- static EXE_CASR_UBSAN : LazyLock < & ' static str > = LazyLock :: new ( || env ! ( "CARGO_BIN_EXE_casr-ubsan" ) ) ;
23- static EXE_CASR_PYTHON : LazyLock < & ' static str > = LazyLock :: new ( || env ! ( "CARGO_BIN_EXE_casr-python" ) ) ;
24- static EXE_CASR_JAVA : LazyLock < & ' static str > = LazyLock :: new ( || env ! ( "CARGO_BIN_EXE_casr-java" ) ) ;
25- static EXE_CASR_JS : LazyLock < & ' static str > = LazyLock :: new ( || env ! ( "CARGO_BIN_EXE_casr-js" ) ) ;
26- static EXE_CASR_GDB : LazyLock < & ' static str > = LazyLock :: new ( || env ! ( "CARGO_BIN_EXE_casr-gdb" ) ) ;
27- static PROJECT_DIR : LazyLock < & ' static str > = LazyLock :: new ( || env ! ( "CARGO_MANIFEST_DIR" ) ) ;
14+ use std:: sync:: LazyLock ;
15+
16+ static EXE_CASR_CORE : LazyLock < & ' static str > = LazyLock :: new ( || env ! ( "CARGO_BIN_EXE_casr-core" ) ) ;
17+ static EXE_CASR_AFL : LazyLock < & ' static str > = LazyLock :: new ( || env ! ( "CARGO_BIN_EXE_casr-afl" ) ) ;
18+ static EXE_CASR_LIBFUZZER : LazyLock < & ' static str > =
19+ LazyLock :: new ( || env ! ( "CARGO_BIN_EXE_casr-libfuzzer" ) ) ;
20+ static EXE_CASR_CLUSTER : LazyLock < & ' static str > =
21+ LazyLock :: new ( || env ! ( "CARGO_BIN_EXE_casr-cluster" ) ) ;
22+ static EXE_CASR_SAN : LazyLock < & ' static str > = LazyLock :: new ( || env ! ( "CARGO_BIN_EXE_casr-san" ) ) ;
23+ static EXE_CASR_UBSAN : LazyLock < & ' static str > = LazyLock :: new ( || env ! ( "CARGO_BIN_EXE_casr-ubsan" ) ) ;
24+ static EXE_CASR_PYTHON : LazyLock < & ' static str > =
25+ LazyLock :: new ( || env ! ( "CARGO_BIN_EXE_casr-python" ) ) ;
26+ static EXE_CASR_LUA : LazyLock < & ' static str > = LazyLock :: new ( || env ! ( "CARGO_BIN_EXE_casr-lua" ) ) ;
27+ static EXE_CASR_JAVA : LazyLock < & ' static str > = LazyLock :: new ( || env ! ( "CARGO_BIN_EXE_casr-java" ) ) ;
28+ static EXE_CASR_JS : LazyLock < & ' static str > = LazyLock :: new ( || env ! ( "CARGO_BIN_EXE_casr-js" ) ) ;
29+ static EXE_CASR_CSHARP : LazyLock < & ' static str > =
30+ LazyLock :: new ( || env ! ( "CARGO_BIN_EXE_casr-csharp" ) ) ;
31+ static EXE_CASR_GDB : LazyLock < & ' static str > = LazyLock :: new ( || env ! ( "CARGO_BIN_EXE_casr-gdb" ) ) ;
32+ static PROJECT_DIR : LazyLock < & ' static str > = LazyLock :: new ( || env ! ( "CARGO_MANIFEST_DIR" ) ) ;
2833
2934fn abs_path ( rpath : & str ) -> String {
3035 // Define paths.
@@ -2675,7 +2680,7 @@ fn test_casr_cluster_d_and_m() {
26752680 } ;
26762681 let casrep = dirvec. next ( ) . unwrap ( ) . unwrap ( ) . path ( ) ;
26772682 let _ = std:: fs:: remove_file ( casrep) ;
2678- let output = Command :: new ( * EXE_CASR_CLUSTER . read ( ) . unwrap ( ) )
2683+ let output = Command :: new ( * EXE_CASR_CLUSTER )
26792684 . args ( [ "--diff" , & paths[ 0 ] , & paths[ 1 ] , & paths[ 2 ] ] )
26802685 . output ( )
26812686 . expect ( "failed to start casr-cluster" ) ;
@@ -2699,7 +2704,7 @@ fn test_casr_cluster_u() {
26992704
27002705 let _ = fs:: remove_dir_all ( & paths[ 1 ] ) ;
27012706
2702- let output = Command :: new ( * EXE_CASR_CLUSTER . read ( ) . unwrap ( ) )
2707+ let output = Command :: new ( * EXE_CASR_CLUSTER )
27032708 . args ( [ "-c" , & paths[ 0 ] , & paths[ 1 ] ] )
27042709 . env ( "CASR_CLUSTER_UNIQUE_CRASHLINE" , "1" )
27052710 . output ( )
@@ -2733,7 +2738,7 @@ fn test_casr_cluster_u() {
27332738 let _ = std:: fs:: remove_dir_all ( & paths[ 3 ] ) ;
27342739 let _ = std:: fs:: rename ( & paths[ 4 ] , & paths[ 3 ] ) ;
27352740
2736- let output = Command :: new ( * EXE_CASR_CLUSTER . read ( ) . unwrap ( ) )
2741+ let output = Command :: new ( * EXE_CASR_CLUSTER )
27372742 . args ( [ "-u" , & paths[ 0 ] , & paths[ 1 ] ] )
27382743 . env ( "CASR_CLUSTER_UNIQUE_CRASHLINE" , "1" )
27392744 . output ( )
@@ -2814,7 +2819,7 @@ fn test_casr_cluster_u() {
28142819 assert_eq ! ( sil, 0.15436556855344655 , "Silhouette score mismatch." ) ;
28152820
28162821 // Test estimation
2817- let output = Command :: new ( * EXE_CASR_CLUSTER . read ( ) . unwrap ( ) )
2822+ let output = Command :: new ( * EXE_CASR_CLUSTER )
28182823 . args ( [ "-e" , & paths[ 1 ] ] )
28192824 . output ( )
28202825 . expect ( "failed to start casr-cluster" ) ;
@@ -3983,9 +3988,7 @@ fn test_casr_libfuzzer() {
39833988
39843989 let _ = fs:: create_dir ( abs_path ( "tests/tmp_tests_casr" ) ) ;
39853990
3986- let bins = Path :: new ( * EXE_CASR_LIBFUZZER )
3987- . parent ( )
3988- . unwrap ( ) ;
3991+ let bins = Path :: new ( * EXE_CASR_LIBFUZZER ) . parent ( ) . unwrap ( ) ;
39893992 let mut cmd = Command :: new ( * EXE_CASR_LIBFUZZER ) ;
39903993 cmd. args ( [ "-i" , & paths[ 0 ] , "-o" , & paths[ 1 ] , "-f" , "--" , & paths[ 3 ] ] )
39913994 . env (
@@ -4215,10 +4218,8 @@ fn test_casr_libfuzzer_atheris() {
42154218 . status ( )
42164219 . expect ( "failed to unzip ruamel.zip" ) ;
42174220
4218- let bins = Path :: new ( * EXE_CASR_LIBFUZZER . read ( ) . unwrap ( ) )
4219- . parent ( )
4220- . unwrap ( ) ;
4221- let mut cmd = Command :: new ( * EXE_CASR_LIBFUZZER . read ( ) . unwrap ( ) ) ;
4221+ let bins = Path :: new ( * EXE_CASR_LIBFUZZER ) . parent ( ) . unwrap ( ) ;
4222+ let mut cmd = Command :: new ( * EXE_CASR_LIBFUZZER ) ;
42224223 cmd. args ( [ "-i" , & paths[ 0 ] , "-o" , & paths[ 1 ] , "--" , & paths[ 2 ] ] )
42234224 . env (
42244225 "PATH" ,
@@ -4797,9 +4798,7 @@ fn test_casr_python_call_san_df() {
47974798
47984799 assert ! ( Path :: new( & lib_path. to_string( ) ) . exists( ) ) ;
47994800
4800- let bins = Path :: new ( * EXE_CASR_PYTHON )
4801- . parent ( )
4802- . unwrap ( ) ;
4801+ let bins = Path :: new ( * EXE_CASR_PYTHON ) . parent ( ) . unwrap ( ) ;
48034802 let output = Command :: new ( * EXE_CASR_PYTHON )
48044803 . env ( "ASAN_OPTIONS" , "detect_leaks=0,symolize=1" )
48054804 . env ( "LD_PRELOAD" , lib_path. to_string ( ) )
@@ -4968,7 +4967,7 @@ fn test_casr_js() {
49684967 panic ! ( "No node is found." ) ;
49694968 } ;
49704969
4971- let output = Command :: new ( * EXE_CASR_JS . read ( ) . unwrap ( ) )
4970+ let output = Command :: new ( * EXE_CASR_JS )
49724971 . args ( [ "--stdout" , "--" , ( node_path. to_str ( ) . unwrap ( ) ) , & test_path] )
49734972 . output ( )
49744973 . expect ( "failed to start casr-js" ) ;
@@ -5572,9 +5571,7 @@ fn test_casr_libfuzzer_jsfuzz() {
55725571 . status ( )
55735572 . expect ( "failed to unzip crashes.zip" ) ;
55745573
5575- let bins = Path :: new ( * EXE_CASR_LIBFUZZER )
5576- . parent ( )
5577- . unwrap ( ) ;
5574+ let bins = Path :: new ( * EXE_CASR_LIBFUZZER ) . parent ( ) . unwrap ( ) ;
55785575 let mut cmd = Command :: new ( * EXE_CASR_LIBFUZZER ) ;
55795576 cmd. args ( [
55805577 "-i" ,
@@ -5659,9 +5656,7 @@ fn test_casr_libfuzzer_jazzer_js() {
56595656 . status ( )
56605657 . expect ( "failed to unzip crashes.zip" ) ;
56615658
5662- let bins = Path :: new ( * EXE_CASR_LIBFUZZER )
5663- . parent ( )
5664- . unwrap ( ) ;
5659+ let bins = Path :: new ( * EXE_CASR_LIBFUZZER ) . parent ( ) . unwrap ( ) ;
56655660 let mut cmd = Command :: new ( * EXE_CASR_LIBFUZZER ) ;
56665661 cmd. args ( [
56675662 "-i" ,
@@ -5818,9 +5813,7 @@ fn test_casr_libfuzzer_jazzer_js_xml2js() {
58185813 panic ! ( "No npx is found." ) ;
58195814 } ;
58205815
5821- let bins = Path :: new ( * EXE_CASR_LIBFUZZER )
5822- . parent ( )
5823- . unwrap ( ) ;
5816+ let bins = Path :: new ( * EXE_CASR_LIBFUZZER ) . parent ( ) . unwrap ( ) ;
58245817 let mut cmd = Command :: new ( * EXE_CASR_LIBFUZZER ) ;
58255818 cmd. args ( [
58265819 "-i" ,
@@ -5918,7 +5911,7 @@ fn test_casr_csharp() {
59185911 panic ! ( "No dotnet is found." ) ;
59195912 } ;
59205913
5921- let output = Command :: new ( * EXE_CASR_CSHARP . read ( ) . unwrap ( ) )
5914+ let output = Command :: new ( * EXE_CASR_CSHARP )
59225915 . args ( [
59235916 "--stdout" ,
59245917 "--" ,
@@ -5988,7 +5981,7 @@ fn test_casr_csharp_native() {
59885981 . output ( )
59895982 . expect ( "failed to build test" ) ;
59905983
5991- let output = Command :: new ( * EXE_CASR_CSHARP . read ( ) . unwrap ( ) )
5984+ let output = Command :: new ( * EXE_CASR_CSHARP )
59925985 . args ( [
59935986 "--stdout" ,
59945987 "--" ,
@@ -6065,8 +6058,8 @@ fn test_casr_afl_csharp() {
60656058 . output ( )
60666059 . expect ( "dotnet publish crashed" ) ;
60676060
6068- let bins = Path :: new ( * EXE_CASR_AFL . read ( ) . unwrap ( ) ) . parent ( ) . unwrap ( ) ;
6069- let mut output = Command :: new ( * EXE_CASR_AFL . read ( ) . unwrap ( ) ) ;
6061+ let bins = Path :: new ( * EXE_CASR_AFL ) . parent ( ) . unwrap ( ) ;
6062+ let mut output = Command :: new ( * EXE_CASR_AFL ) ;
60706063 output. args ( [ "-i" , & paths[ 0 ] , "-o" , & paths[ 1 ] ] ) . env (
60716064 "PATH" ,
60726065 format ! ( "{}:{}" , bins. display( ) , std:: env:: var( "PATH" ) . unwrap( ) ) ,
@@ -6164,8 +6157,8 @@ fn test_casr_afl_csharp_ignore_cmd() {
61646157 . output ( )
61656158 . expect ( "dotnet build crashed" ) ;
61666159
6167- let bins = Path :: new ( * EXE_CASR_AFL . read ( ) . unwrap ( ) ) . parent ( ) . unwrap ( ) ;
6168- let mut output = Command :: new ( * EXE_CASR_AFL . read ( ) . unwrap ( ) ) ;
6160+ let bins = Path :: new ( * EXE_CASR_AFL ) . parent ( ) . unwrap ( ) ;
6161+ let mut output = Command :: new ( * EXE_CASR_AFL ) ;
61696162 output
61706163 . args ( [
61716164 "--ignore-cmdline" ,
@@ -6277,8 +6270,8 @@ fn test_casr_afl_csharp_vanilla_afl() {
62776270 . output ( )
62786271 . expect ( "dotnet build crashed" ) ;
62796272
6280- let bins = Path :: new ( * EXE_CASR_AFL . read ( ) . unwrap ( ) ) . parent ( ) . unwrap ( ) ;
6281- let mut output = Command :: new ( * EXE_CASR_AFL . read ( ) . unwrap ( ) ) ;
6273+ let bins = Path :: new ( * EXE_CASR_AFL ) . parent ( ) . unwrap ( ) ;
6274+ let mut output = Command :: new ( * EXE_CASR_AFL ) ;
62826275 output
62836276 . args ( [
62846277 "-i" ,
@@ -6375,10 +6368,8 @@ fn test_casr_libfuzzer_libafl() {
63756368 "/tmp/test_libafl_fuzzer" ,
63766369 ) ;
63776370
6378- let bins = Path :: new ( * EXE_CASR_LIBFUZZER . read ( ) . unwrap ( ) )
6379- . parent ( )
6380- . unwrap ( ) ;
6381- let output = Command :: new ( * EXE_CASR_LIBFUZZER . read ( ) . unwrap ( ) )
6371+ let bins = Path :: new ( * EXE_CASR_LIBFUZZER ) . parent ( ) . unwrap ( ) ;
6372+ let output = Command :: new ( * EXE_CASR_LIBFUZZER )
63826373 . args ( [
63836374 "-i" ,
63846375 & paths[ 0 ] ,
0 commit comments