Testing: grib_to_netcdf error conditions and options

This commit is contained in:
shahramn 2024-08-24 14:39:31 +01:00
parent 90c393a0c2
commit 2d24ad7039
2 changed files with 48 additions and 15 deletions

View File

@ -132,7 +132,8 @@ ${tools_dir}/grib_to_netcdf -o $tempNetcdf $tempGrib
ECCODES_DEBUG=-1 ${tools_dir}/grib_to_netcdf -o $tempNetcdf $tempGrib ECCODES_DEBUG=-1 ${tools_dir}/grib_to_netcdf -o $tempNetcdf $tempGrib
# The -u option echo "Test -u option ..."
# ----------------------
input=${data_dir}/sample.grib2 input=${data_dir}/sample.grib2
${tools_dir}/grib_to_netcdf -u time -o $tempNetcdf $input ${tools_dir}/grib_to_netcdf -u time -o $tempNetcdf $input
@ -170,6 +171,17 @@ grib_check_key_equals $tempGrib 'dataDate:s' 'mar-20'
${tools_dir}/grib_to_netcdf -o $tempNetcdf $tempGrib ${tools_dir}/grib_to_netcdf -o $tempNetcdf $tempGrib
echo "Test -S option..."
# ------------------------------------
input=${data_dir}/high_level_api.grib2
${tools_dir}/grib_to_netcdf -o $tempNetcdf -S param $input
echo "Test -I option..."
# ------------------------------------
input=${data_dir}/high_level_api.grib2
${tools_dir}/grib_to_netcdf -o $tempNetcdf -S method $input
echo "Enable/Disable Checks ..." echo "Enable/Disable Checks ..."
# --------------------------------- # ---------------------------------
rm -f $tempNetcdf rm -f $tempNetcdf
@ -234,6 +246,24 @@ set -e
[ $status -ne 0 ] [ $status -ne 0 ]
grep -q "Invalid reference date" $tempText grep -q "Invalid reference date" $tempText
# Bad -k option
input=$data_dir/sample.grib2
set +e
${tools_dir}/grib_to_netcdf -k hallo -o $tempNetcdf $input > $tempText 2>&1
status=$?
set -e
[ $status -ne 0 ]
grep -q "Invalid value" $tempText
# Bad -d option
input=$data_dir/sample.grib2
set +e
${tools_dir}/grib_to_netcdf -d 999 -o $tempNetcdf $input > $tempText 2>&1
status=$?
set -e
[ $status -ne 0 ]
grep -q "Invalid deflate option" $tempText
# Validity time check # Validity time check
export GRIB_TO_NETCDF_CHECKVALIDTIME=0 export GRIB_TO_NETCDF_CHECKVALIDTIME=0

View File

@ -83,6 +83,11 @@ typedef struct parameter parameter;
static const char* get_value(const request*, const char* name, int n); static const char* get_value(const request*, const char* name, int n);
static bool parsedate(const char* name, long* julian, long* second, bool* isjul); static bool parsedate(const char* name, long* julian, long* second, bool* isjul);
void usage_and_exit(void)
{
usage(); // this calls exit(1)
}
static bool eq_string(const char* l, const char* r) static bool eq_string(const char* l, const char* r)
{ {
if (l && r) if (l && r)
@ -3957,7 +3962,6 @@ struct KindValue
/* The 64-bit offset kind */ /* The 64-bit offset kind */
{ "2", NC_FORMAT_64BIT }, { "2", NC_FORMAT_64BIT },
{ "64-bit-offset", NC_FORMAT_64BIT }, { "64-bit-offset", NC_FORMAT_64BIT },
{ "64-bit offset", NC_FORMAT_64BIT },
/* NetCDF-4 HDF5 format */ /* NetCDF-4 HDF5 format */
{ "3", NC_FORMAT_NETCDF4 }, { "3", NC_FORMAT_NETCDF4 },
@ -4073,9 +4077,13 @@ int grib_tool_init(grib_runtime_options* options)
} }
} }
if (kvalue->name == NULL) { if (kvalue->name == NULL) {
fprintf(stderr, "Invalid format: %s", kind_name); fprintf(stderr, "Invalid value for -k option: %s\n", kind_name);
usage(); fprintf(stderr, "Please use one of:\n");
exit(1); for (kvalue = legalkinds; kvalue->name; kvalue++) {
if (is_number(kvalue->name))
fprintf(stderr, "\t%s\n", kvalue->name);
}
usage_and_exit();
} }
} }
@ -4084,16 +4092,14 @@ int grib_tool_init(grib_runtime_options* options)
char* theArg = grib_options_get_option("d:"); char* theArg = grib_options_get_option("d:");
if (!is_number(theArg) || atol(theArg) < 0 || atol(theArg) > 9) { if (!is_number(theArg) || atol(theArg) < 0 || atol(theArg) > 9) {
fprintf(stderr, "Invalid deflate option: %s (must be 0 to 9)\n", theArg); fprintf(stderr, "Invalid deflate option: %s (must be 0 to 9)\n", theArg);
usage(); usage_and_exit();
exit(1);
} }
set_value(user_r, "deflate", theArg); set_value(user_r, "deflate", theArg);
deflate_option = 1; deflate_option = 1;
} }
else { else {
fprintf(stderr, "Invalid deflate option for non netCDF-4 output formats\n"); fprintf(stderr, "Invalid deflate option for non netCDF-4 output formats\n");
usage(); usage_and_exit();
exit(1);
} }
} }
else { else {
@ -4105,8 +4111,7 @@ int grib_tool_init(grib_runtime_options* options)
set_value(user_r, "shuffle", "true"); set_value(user_r, "shuffle", "true");
else { else {
fprintf(stderr, "Invalid shuffle option. Deflate option needed.\n"); fprintf(stderr, "Invalid shuffle option. Deflate option needed.\n");
usage(); usage_and_exit();
exit(1);
} }
} }
else else
@ -4116,8 +4121,7 @@ int grib_tool_init(grib_runtime_options* options)
char* theArg = grib_options_get_option("R:"); char* theArg = grib_options_get_option("R:");
if (!is_number(theArg)) { if (!is_number(theArg)) {
fprintf(stderr, "Invalid reference date: %s\n", theArg); fprintf(stderr, "Invalid reference date: %s\n", theArg);
usage(); usage_and_exit();
exit(1);
} }
set_value(user_r, "referencedate", theArg); set_value(user_r, "referencedate", theArg);
} }
@ -4295,8 +4299,7 @@ int grib_tool_finalise_action(grib_runtime_options* options)
if (options->outfile == NULL || options->outfile->name == NULL) { if (options->outfile == NULL || options->outfile->name == NULL) {
grib_context_log(ctx, GRIB_LOG_ERROR, "No output file. Exiting!"); grib_context_log(ctx, GRIB_LOG_ERROR, "No output file. Exiting!");
usage(); usage_and_exit();
exit(1);
} }
if (fs->count == 0) { if (fs->count == 0) {