mirror of https://github.com/ecmwf/eccodes.git
ECC-1551: grib_get: Error message does not include the offending key
This commit is contained in:
parent
07cd7242b7
commit
1c905d7cd3
|
@ -10,6 +10,8 @@
|
|||
|
||||
. ./include.ctest.sh
|
||||
|
||||
label="grib_get_fail_test"
|
||||
tempText=temp.$label.txt
|
||||
REDIRECT=/dev/null
|
||||
|
||||
# Check input file has been downloaded
|
||||
|
@ -17,9 +19,18 @@ REDIRECT=/dev/null
|
|||
|
||||
# Expect failure as the key does not exist
|
||||
set +e
|
||||
${tools_dir}/grib_get -p gribname ${data_dir}/regular_latlon_surface.grib1 2> $REDIRECT > $REDIRECT
|
||||
|
||||
${tools_dir}/grib_get -p boomerang ${data_dir}/regular_latlon_surface.grib1 2> $REDIRECT > $REDIRECT
|
||||
if [ $? -eq 0 ] ; then
|
||||
# Should not have succeeded
|
||||
exit 1;
|
||||
exit 1; # Should not have succeeded
|
||||
fi
|
||||
set -e
|
||||
|
||||
# ECC-1551: Print which key does not exist
|
||||
set +e
|
||||
${tools_dir}/grib_get -p Ni,Nh,Nj $ECCODES_SAMPLES_PATH/GRIB2.tmpl > $tempText 2>&1
|
||||
status=$?
|
||||
set -e
|
||||
[ $status -ne 0 ]
|
||||
grep -q "Nh (Key/value not found)" $tempText
|
||||
|
||||
rm -f $tempText
|
||||
|
|
|
@ -1048,7 +1048,9 @@ static void get_value_for_key(grib_handle* h, const char* key_name, int key_type
|
|||
if (ret == GRIB_NOT_FOUND) {
|
||||
snprintf(value_str, 32, "not_found");
|
||||
} else {
|
||||
fprintf(dump_file, "ERROR: Failed to get value for key %s (%s)\n", key_name, grib_get_error_message(ret));
|
||||
fprintf(dump_file, "ERROR: Failed to get value for key '%s' (%s)\n", key_name, grib_get_error_message(ret));
|
||||
if (ret == GRIB_ARRAY_TOO_SMALL)
|
||||
fprintf(dump_file, "\tHint: Tool %s cannot print keys of array type. Use grib_filter.\n", tool_name);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
@ -1205,12 +1207,18 @@ void grib_print_key_values(grib_runtime_options* options, grib_handle* h)
|
|||
}
|
||||
|
||||
if (ret != GRIB_SUCCESS) {
|
||||
if (options->fail)
|
||||
GRIB_CHECK_NOLINE(ret, options->print_keys[i].name);
|
||||
if (ret == GRIB_NOT_FOUND)
|
||||
if (options->fail) { // ECC-1551
|
||||
//GRIB_CHECK_NOLINE(ret, options->print_keys[i].name);
|
||||
grib_context_log(h->context, GRIB_LOG_ERROR, "%s (%s)",
|
||||
options->print_keys[i].name, grib_get_error_message(ret));
|
||||
exit(ret);
|
||||
}
|
||||
if (ret == GRIB_NOT_FOUND) {
|
||||
strcpy(value, notfound);
|
||||
else {
|
||||
fprintf(dump_file, "%s %s\n", grib_get_error_message(ret), options->print_keys[i].name);
|
||||
} else {
|
||||
fprintf(dump_file, "%s (%s)\n", options->print_keys[i].name, grib_get_error_message(ret));
|
||||
if (ret == GRIB_ARRAY_TOO_SMALL)
|
||||
fprintf(dump_file, "\tHint: Tool %s cannot print keys of array type. Use grib_filter.\n", tool_name);
|
||||
exit(ret);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue