@@ -83,14 +83,50 @@ fn collect_index_iterator() {
83
83
84
84
#[ test]
85
85
fn add_file_error ( ) {
86
+ thread:: spawn ( || {
87
+ let grib_path = Path :: new ( "./data/iceland-levels.grib" ) ;
88
+ let keys = vec ! [ "shortName" , "typeOfLevel" , "level" , "stepType" ] ;
89
+ let mut index_op = CodesIndex :: new_from_keys ( & keys) . unwrap ( ) ;
90
+
91
+ loop {
92
+ index_op = index_op. add_grib_file ( grib_path) . unwrap ( ) ;
93
+ }
94
+ } ) ;
95
+
96
+ thread:: sleep ( std:: time:: Duration :: from_millis ( 250 ) ) ;
97
+
86
98
let keys = vec ! [ "shortName" , "typeOfLevel" , "level" , "stepType" ] ;
87
- let index = CodesIndex :: new_from_keys ( & keys) . unwrap ( ) ;
88
- let grib_path = Path :: new ( "./data/xxx.grib" ) ;
89
- let index = index. add_grib_file ( grib_path) ;
99
+ let wrong_path = Path :: new ( "./data/xxx.grib" ) ;
100
+ let index = CodesIndex :: new_from_keys ( & keys)
101
+ . unwrap ( )
102
+ . add_grib_file ( wrong_path) ;
90
103
91
104
assert ! ( index. is_err( ) ) ;
92
105
}
93
106
107
+ #[ test]
108
+ fn index_panic ( ) {
109
+ thread:: spawn ( || {
110
+ let grib_path = Path :: new ( "./data/iceland-levels.grib" ) ;
111
+ let keys = vec ! [ "shortName" , "typeOfLevel" , "level" , "stepType" ] ;
112
+ let mut index_op = CodesIndex :: new_from_keys ( & keys) . unwrap ( ) ;
113
+
114
+ loop {
115
+ index_op = index_op. add_grib_file ( grib_path) . unwrap ( ) ;
116
+ }
117
+ } ) ;
118
+
119
+ thread:: sleep ( std:: time:: Duration :: from_millis ( 250 ) ) ;
120
+
121
+ let keys = vec ! [ "shortName" , "typeOfLevel" , "level" , "stepType" ] ;
122
+ let wrong_path = Path :: new ( "./data/xxx.grib" ) ;
123
+ let index = CodesIndex :: new_from_keys ( & keys) . unwrap ( ) ;
124
+
125
+ let result = std:: panic:: catch_unwind ( || index. add_grib_file ( wrong_path) . unwrap ( ) ) ;
126
+
127
+ assert ! ( result. is_err( ) ) ;
128
+ }
129
+
94
130
#[ test]
95
131
fn add_file_while_index_open ( ) {
96
132
thread:: spawn ( || {
0 commit comments