@@ -206,6 +206,7 @@ main(int argc, char** argv)
206206 int batch_size;
207207 bool pass_data = false ;
208208 bool pass_context = true ;
209+ uint32_t expected_result = 0 ;
209210
210211 // Check if value "platform" is defined and matches the current platform.
211212 if (test[" platform" ].IsDefined ()) {
@@ -238,6 +239,11 @@ main(int argc, char** argv)
238239 pass_context = test[" pass_context" ].as <bool >();
239240 }
240241
242+ // Check if expected_result is defined and use it.
243+ if (test[" expected_result" ].IsDefined ()) {
244+ expected_result = test[" expected_result" ].as <uint32_t >();
245+ }
246+
241247 // Override batch size if specified on command line.
242248 if (batch_size_override.has_value ()) {
243249 batch_size = batch_size_override.value ();
@@ -337,9 +343,9 @@ main(int argc, char** argv)
337343 throw std::runtime_error (" Failed to run map_state_preparation program " + prep_program_name);
338344 }
339345
340- if (opts.retval != 0 ) {
341- std::string message = " map_state_preparation program " + prep_program_name + " returned non-zero " +
342- std::to_string (opts.retval );
346+ if (opts.retval != expected_result ) {
347+ std::string message = " map_state_preparation program " + prep_program_name + " returned unexpected value " +
348+ std::to_string (opts.retval ) + " expected " + std::to_string (expected_result) ;
343349 if (ignore_return_code.value_or (false )) {
344350 std::cout << message << std::endl;
345351 } else {
@@ -457,11 +463,11 @@ main(int argc, char** argv)
457463 thread.join ();
458464 }
459465
460- // Check if any program returned non-zero .
466+ // Check if any program returned unexpected result .
461467 for (auto & opt : opts) {
462- if (opt.retval != 0 ) {
468+ if (opt.retval != expected_result ) {
463469 std::string message =
464- " Program returned non-zero " + std::to_string (opt.retval ) + " in test " + name;
470+ " Program returned unexpected result " + std::to_string (opt.retval ) + " in test " + name + " expected " + std::to_string (expected_result) ;
465471 if (ignore_return_code.value_or (false )) {
466472 std::cout << message << std::endl;
467473 } else {
0 commit comments