mirror of https://github.com/ecmwf/eccodes.git
567 lines
18 KiB
CMake
567 lines
18 KiB
CMake
# tests/CMakeLists.txt
|
|
#
|
|
# Configure the file which all CMake tests will include
|
|
configure_file( include.ctest.sh.in include.ctest.sh @ONLY )
|
|
|
|
execute_process( COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/utils.sh ${CMAKE_CURRENT_BINARY_DIR} )
|
|
execute_process( COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/number_compare.pl ${CMAKE_CURRENT_BINARY_DIR} )
|
|
|
|
# Build the executables used by test scripts
|
|
################################################
|
|
list(APPEND test_c_bins
|
|
list_codetable_flagtable_keys
|
|
wmo_read_bufr_from_file
|
|
wmo_read_gts_from_file
|
|
wmo_read_any_from_file
|
|
wmo_read_any_from_stream
|
|
grib_bpv_limit
|
|
grib_double_cmp
|
|
read_any
|
|
julian
|
|
grib_update_sections_lengths
|
|
grib_indexing
|
|
grib_fieldset
|
|
grib_multi_from_message
|
|
grib_clone_headers_only
|
|
grib_read_index
|
|
grib_set_large_message_fail
|
|
unit_tests
|
|
bufr_keys_iter
|
|
grib_keys_iter
|
|
grib_keys_iter_skip
|
|
grib_geo_iter
|
|
grib_nearest_test
|
|
grib_util_set_spec
|
|
grib_util_set_spec2
|
|
grib_check_param_concepts
|
|
grib_local_MeteoFrance
|
|
grib_2nd_order_numValues
|
|
grib_optimize_scaling
|
|
grib_optimize_scaling_sh
|
|
grib_set_force
|
|
grib_run_length_packing
|
|
grib_partial_message
|
|
grib_ecc-386
|
|
grib_ecc-1467
|
|
grib_ecc-1431
|
|
grib_ecc-1433
|
|
grib_ecc-1764
|
|
bufr_ecc-517
|
|
bufr_ecc-1288
|
|
bufr_get_element
|
|
bufr_extract_headers
|
|
bufr_check_descriptors
|
|
bufr_coordinate_descriptors
|
|
codes_new_from_samples
|
|
codes_dump_action_tree
|
|
codes_set_samples_path
|
|
codes_compare_keys
|
|
codes_dump_content
|
|
codes_codetable
|
|
codes_get_string
|
|
grib_sh_ieee64
|
|
grib_set_bytes
|
|
grib_copy_message
|
|
grib_packing_order
|
|
grib_unpack_subarray
|
|
grib_sh_imag
|
|
grib_spectral
|
|
grib_lam_bf
|
|
grib_lam_gp)
|
|
|
|
|
|
foreach( tool ${test_c_bins} )
|
|
# here we use the fact that each tool has only one C file that matches its name
|
|
ecbuild_add_executable( TARGET ${tool}
|
|
NOINSTALL
|
|
SOURCES ${tool}.cc
|
|
LIBS eccodes )
|
|
endforeach()
|
|
|
|
|
|
# Now add each test (shell scripts)
|
|
#################################################
|
|
if( HAVE_BUILD_TOOLS )
|
|
|
|
# These tests do not require any data downloads
|
|
# and are generally quick
|
|
list(APPEND tests_basic
|
|
codes_info
|
|
codes_deprecated
|
|
unit_tests
|
|
julian
|
|
grib_dump_samples
|
|
bufr_dump_samples
|
|
bufr_check_descriptors
|
|
definitions
|
|
grib2_version
|
|
grib_accessors
|
|
grib_calendar
|
|
grib_md5
|
|
grib_cfNames
|
|
grib_packing_order
|
|
filter_substr
|
|
filter_contains
|
|
filter_size
|
|
filter_is_one_of
|
|
filter_is_in_list
|
|
filter_transient_darray
|
|
grib_ecpoint
|
|
grib_s2s
|
|
grib_fire
|
|
grib_generalised_tiles
|
|
# grib_true_imagery
|
|
grib2_wave_spectra
|
|
grib2_probability
|
|
grib_suppressed
|
|
grib_destine_mars_keys
|
|
grib_2nd_order_numValues
|
|
grib_ecc-136
|
|
grib_ecc-530
|
|
grib_ecc-922
|
|
grib_ecc-966
|
|
grib_ecc-967
|
|
grib_ecc-1150
|
|
grib_ecc-1053
|
|
grib_ecc-1065
|
|
grib_ecc-1167
|
|
grib_ecc-1170
|
|
grib_ecc-1195
|
|
grib_ecc-1212
|
|
grib_ecc-1230
|
|
grib_ecc-1258
|
|
grib_ecc-1260
|
|
grib_ecc-1261
|
|
grib_ecc-1271
|
|
grib_ecc-1315
|
|
grib_ecc-1322
|
|
grib_ecc-1319
|
|
grib_ecc-1406
|
|
grib_ecc-1440
|
|
grib_ecc-1560
|
|
grib_ecc-1571
|
|
grib_ecc-1654
|
|
grib_ecc-1671
|
|
grib_ecc-1708
|
|
grib_ecc-1766
|
|
grib_ecc-1829
|
|
bufr_ecc-1028
|
|
bufr_ecc-1195
|
|
bufr_ecc-1259
|
|
bufr_ecc-1290
|
|
bufr_ecc-1304
|
|
bufr_ecc-1347
|
|
bufr_ecc-1395
|
|
bufr_ecc-1840
|
|
bufr_json_samples
|
|
bufr_ecc-359
|
|
bufr_ecc-517
|
|
grib_efas
|
|
grib_sh_imag
|
|
grib_spectral
|
|
grib_levtype
|
|
grib_typeOfLevel
|
|
grib2_product_templates
|
|
grib_grid_unstructured
|
|
grib_grid_lambert_conformal
|
|
grib_grid_polar_stereographic
|
|
grib_grid_healpix
|
|
grib_g1day_of_the_year_date
|
|
)
|
|
|
|
# These tests require data downloads
|
|
# and/or take much longer
|
|
list(APPEND tests_extra
|
|
grib_data_quality_checks
|
|
grib_check_message_validity
|
|
grib_update_sections_lengths
|
|
grib_units_bias_factor
|
|
grib_set_large_message_fail
|
|
grib_g1monthlydate
|
|
grib_g1fcperiod
|
|
grib_bpv_limit
|
|
grib_complex
|
|
grib_double_cmp
|
|
grib_element
|
|
grib_change_packing
|
|
grib_run_length_packing
|
|
grib_grid_space_view
|
|
grib_partial_message
|
|
grib_true_imagery
|
|
grib_headers_only
|
|
grib_uerra
|
|
grib_unpack_subarray
|
|
grib_count
|
|
grib_clone_headers_only
|
|
grib_ifsParam
|
|
wmo_read_bufr_from_file
|
|
wmo_read_gts_from_file
|
|
wmo_read_any_from_file
|
|
wmo_read_any_from_stream
|
|
bufr_templates
|
|
bufr_rdbSubTypes
|
|
bufr_dump_data
|
|
bufr_dump_descriptors
|
|
bufr_coordinate_descriptors
|
|
bufr_dump_subset
|
|
bufr_dump_decode_filter
|
|
bufr_dump_encode_filter
|
|
bufrdc_desc_ref
|
|
bufrdc_ref
|
|
bufr_compare
|
|
bufr_copy
|
|
bufr_count
|
|
bufr_get
|
|
bufr_operators
|
|
bufr_filter_misc
|
|
bufr_filter_fail
|
|
bufr_filter_extract_subsets
|
|
bufr_filter_extract_datetime
|
|
bufr_filter_extract_area
|
|
bufr_filter_unpack_pack
|
|
bufr_filter_skipExtraKeyAttributes
|
|
bufr_indexing
|
|
bufr_json_data
|
|
bufr_ls
|
|
bufr_ls_json
|
|
bufr_change_edition
|
|
bufr_keys_iter
|
|
grib_keys_iter
|
|
grib_keys_iter_skip
|
|
grib_geo_iter
|
|
grib_to_json
|
|
grib_to_ppm
|
|
grib_list_keys
|
|
grib_histogram
|
|
bufr_get_element
|
|
bufr_wmo_tables
|
|
bufr_extract_headers
|
|
extract_offsets
|
|
bufr_ecc-147
|
|
bufr_ecc-389
|
|
bufr_ecc-673
|
|
bufr_ecc-428
|
|
bufr_ecc-286
|
|
bufr_ecc-288
|
|
bufr_ecc-313
|
|
bufr_ecc-616
|
|
bufr_ecc-680
|
|
bufr_ecc-686
|
|
bufr_ecc-690
|
|
bufr_ecc-379
|
|
bufr_ecc-393
|
|
bufr_ecc-433
|
|
bufr_ecc-750
|
|
bufr_ecc-765
|
|
bufr_ecc-875
|
|
bufr_ecc-887
|
|
bufr_ecc-1187
|
|
bufr_ecc-1305
|
|
bufr_ecc-1476
|
|
bufr_ecc-1623
|
|
bufr_ecc-1785
|
|
bufr_ecc-1958
|
|
bufr_ecc-1938
|
|
grib_488
|
|
grib_ecc-490
|
|
grib_ecc-756
|
|
grib_ecc-806
|
|
grib_ecc-873
|
|
grib_ecc-600
|
|
grib_ecc-923
|
|
grib_ecc-979
|
|
grib_ecc-984
|
|
grib_ecc-1000
|
|
grib_ecc-1001
|
|
grib_ecc-1030
|
|
grib_ecc-1364
|
|
grib_ecc-1397
|
|
grib_ecc-1425
|
|
grib_ecc-1467
|
|
grib_ecc-1764
|
|
grib_ecc-1792
|
|
grib_ecc-1806
|
|
#grib_ecc-1898
|
|
grib_ecc-1907
|
|
grib_ecc-1941
|
|
grib_ecc-1942
|
|
grib_modelName
|
|
grib_sub_hourly
|
|
grib_set_bytes
|
|
grib_set_force
|
|
bufr_ecc-556
|
|
codes_assert
|
|
codes_ecc-1698
|
|
codes_ecc-1929
|
|
codes_get_string
|
|
codes_codetable
|
|
gts_get
|
|
gts_ls
|
|
gts_count
|
|
gts_compare
|
|
gts_dump
|
|
wrap
|
|
hdf5
|
|
taf
|
|
pseudo_diag
|
|
metar_ls
|
|
metar_filter
|
|
metar_get
|
|
metar_dump
|
|
metar_compare
|
|
bufr_set
|
|
grib_ieee
|
|
grib1_gds_not_present
|
|
grib_sh_ieee64
|
|
grib_optimize_scaling
|
|
grib_optimize_scaling_sh
|
|
grib_lam_bf
|
|
grib_lam_gp
|
|
grib1to2
|
|
grib2to1
|
|
grib1to3
|
|
grib2to3
|
|
grib2_templates
|
|
grib2_chemicals_aerosols
|
|
grib3_templates
|
|
grib_bad
|
|
grib_ls
|
|
grib_ls_json
|
|
grib_filter
|
|
grib_filter_fail
|
|
grib_multi
|
|
grib_nearest_test
|
|
pseudo_budg
|
|
grib_gridType
|
|
grib_fieldset
|
|
grib_octahedral
|
|
grib_grid_mercator
|
|
grib_global
|
|
grib_concept
|
|
grib_copy_message
|
|
grib_decimalPrecision
|
|
grib_bitsPerValue
|
|
grib_get_fail
|
|
grib_missing
|
|
grib_local_ECMWF
|
|
grib_step
|
|
grib_set
|
|
grib_set_fail
|
|
grib_iterator
|
|
grib_proj_string
|
|
grib_compare
|
|
grib_copy
|
|
grib_level
|
|
grib_indexing
|
|
grib_bitmap
|
|
grib_secondary_bitmap
|
|
grib_list
|
|
grib_second_order
|
|
grib_multi_from_message
|
|
grib_change_scanning
|
|
grib_statistics
|
|
read_any
|
|
codes_new_from_samples
|
|
codes_dump_action_tree
|
|
codes_set_samples_path
|
|
codes_compare_keys
|
|
codes_dump_content
|
|
codes_to_double
|
|
grib_dump
|
|
grib_dump_debug
|
|
grib_dump_json
|
|
grib_local_MeteoFrance
|
|
grib_local_NCEP
|
|
grib_neg_fctime
|
|
codes_split_file
|
|
grib_mars_keys1
|
|
grib_mars_keys2)
|
|
|
|
if( HAVE_AEC AND ENABLE_EXTRA_TESTS )
|
|
list(APPEND tests_extra grib_ecc-1431)
|
|
list(APPEND tests_extra grib_ecc-1433)
|
|
endif()
|
|
if( HAVE_FORTRAN AND ENABLE_EXTRA_TESTS )
|
|
list(APPEND tests_extra bufr_dump_encode_fortran)
|
|
list(APPEND tests_extra bufr_dump_decode_fortran)
|
|
endif()
|
|
if( ENABLE_EXTRA_TESTS )
|
|
list(APPEND tests_extra grib_util_set_spec)
|
|
list(APPEND tests_extra grib_util_set_spec2)
|
|
list(APPEND tests_extra grib_padding)
|
|
list(APPEND tests_extra grib_tigge_conversions1)
|
|
list(APPEND tests_extra grib_tigge_conversions2)
|
|
list(APPEND tests_extra bufr_dump_encode_C)
|
|
list(APPEND tests_extra bufr_dump_decode_C)
|
|
list(APPEND tests_extra bufr_dump_encode_python)
|
|
list(APPEND tests_extra bufr_dump_decode_python)
|
|
list(APPEND tests_extra list_codetable_flagtable_keys)
|
|
endif()
|
|
|
|
# These tests do not require any data downloads
|
|
foreach( test ${tests_basic} )
|
|
ecbuild_add_test( TARGET eccodes_t_${test}
|
|
TYPE SCRIPT
|
|
LABELS "sanity"
|
|
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/${test}.sh )
|
|
endforeach()
|
|
ecbuild_add_test( TARGET eccodes_t_grib_check_gaussian_grids
|
|
TYPE SCRIPT
|
|
CONDITION ECCODES_INSTALL_EXTRA_TOOLS
|
|
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/grib_check_gaussian_grids.sh )
|
|
ecbuild_add_test( TARGET eccodes_t_grib_repair
|
|
TYPE SCRIPT
|
|
CONDITION ECCODES_INSTALL_EXTRA_TOOLS AND ENABLE_EXTRA_TESTS
|
|
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/grib_repair.sh
|
|
TEST_DEPENDS eccodes_download_gribs )
|
|
|
|
|
|
# Note: making the test dependent on the grib files (with DEPENDS)
|
|
# means they will be downloaded at "make" time
|
|
# rather than when you do "ctest". Use TEST_DEPENDS instead
|
|
foreach( test ${tests_extra} )
|
|
ecbuild_add_test( TARGET eccodes_t_${test}
|
|
TYPE SCRIPT
|
|
CONDITION ENABLE_EXTRA_TESTS
|
|
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/${test}.sh
|
|
RESOURCES asca_139.t1.ref
|
|
TEST_DEPENDS eccodes_download_gribs eccodes_download_tigge_gribs
|
|
eccodes_download_bufrs eccodes_download_bufr_refs
|
|
eccodes_download_metars eccodes_download_gts )
|
|
endforeach()
|
|
|
|
if( HAVE_FORTRAN AND ENABLE_EXTRA_TESTS )
|
|
set_tests_properties( eccodes_t_bufr_dump_encode_fortran PROPERTIES TIMEOUT 2500 )
|
|
endif()
|
|
if( ENABLE_EXTRA_TESTS )
|
|
set_tests_properties( eccodes_t_bufr_dump_encode_C PROPERTIES TIMEOUT 2500 )
|
|
endif()
|
|
|
|
|
|
###########################################
|
|
# Note: the reference file is in the tests dir not data dir!
|
|
ecbuild_add_test( TARGET eccodes_t_grib_grid_lamb_az_eq_area
|
|
TYPE SCRIPT
|
|
CONDITION ENABLE_EXTRA_TESTS
|
|
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/grib_grid_lamb_az_eq_area.sh
|
|
RESOURCES grib_lamb_az_eq_area.ref
|
|
TEST_DEPENDS eccodes_download_gribs )
|
|
|
|
# These ones are conditional
|
|
###########################################
|
|
ecbuild_add_test( TARGET eccodes_t_tools_data_from_stdin
|
|
TYPE SCRIPT
|
|
CONDITION NOT ECCODES_ON_WINDOWS AND ENABLE_EXTRA_TESTS
|
|
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/tools_data_from_stdin.sh
|
|
TEST_DEPENDS eccodes_download_bufrs )
|
|
|
|
ecbuild_add_test( TARGET eccodes_t_bufr_ecc-197
|
|
TYPE SCRIPT
|
|
CONDITION NOT ECCODES_ON_WINDOWS AND ENABLE_EXTRA_TESTS
|
|
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/bufr_ecc-197.sh
|
|
TEST_DEPENDS eccodes_download_bufrs )
|
|
ecbuild_add_test( TARGET eccodes_t_bufr_ecc-1288
|
|
TYPE SCRIPT
|
|
CONDITION NOT ECCODES_ON_WINDOWS AND ENABLE_EXTRA_TESTS
|
|
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/bufr_ecc-1288.sh
|
|
TEST_DEPENDS eccodes_download_bufrs eccodes_download_bufr_refs )
|
|
|
|
|
|
if( ENABLE_EXTRA_TESTS AND HAVE_ECCODES_THREADS )
|
|
ecbuild_add_executable( TARGET grib_encode_pthreads
|
|
NOINSTALL
|
|
SOURCES grib_encode_pthreads.cc
|
|
LIBS eccodes ${CMAKE_THREAD_LIBS_INIT} )
|
|
ecbuild_add_test( TARGET eccodes_t_grib_encode_pthreads
|
|
TYPE SCRIPT
|
|
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/grib_encode_pthreads.sh )
|
|
|
|
foreach( test grib_encode_pthreads2 grib_threads_ecc-604-encode bufr_encode_pthreads )
|
|
ecbuild_add_executable( TARGET ${test}
|
|
NOINSTALL
|
|
SOURCES ${test}.cc
|
|
LIBS eccodes ${CMAKE_THREAD_LIBS_INIT} )
|
|
endforeach()
|
|
ecbuild_add_test( TARGET eccodes_t_grib_encode_pthreads2
|
|
TYPE SCRIPT
|
|
TEST_DEPENDS eccodes_download_gribs
|
|
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/grib_encode_pthreads2.sh )
|
|
ecbuild_add_test( TARGET eccodes_t_bufr_encode_pthreads
|
|
TYPE SCRIPT
|
|
TEST_DEPENDS eccodes_download_bufrs
|
|
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/bufr_encode_pthreads.sh )
|
|
endif()
|
|
|
|
if( NOT ECCODES_ON_WINDOWS )
|
|
ecbuild_add_executable( TARGET extract_offsets
|
|
NOINSTALL
|
|
SOURCES extract_offsets.cc
|
|
LIBS eccodes )
|
|
endif()
|
|
|
|
ecbuild_add_test( TARGET eccodes_t_grib_to_netcdf
|
|
TYPE SCRIPT
|
|
CONDITION HAVE_NETCDF AND ENABLE_EXTRA_TESTS AND NOT ECCODES_ON_WINDOWS
|
|
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/grib_to_netcdf.sh
|
|
TEST_DEPENDS eccodes_download_gribs )
|
|
|
|
ecbuild_add_test( TARGET eccodes_t_grib_jpeg
|
|
TYPE SCRIPT
|
|
CONDITION HAVE_JPEG AND ENABLE_EXTRA_TESTS
|
|
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/grib_jpeg.sh
|
|
TEST_DEPENDS eccodes_download_gribs )
|
|
|
|
ecbuild_add_test( TARGET eccodes_t_grib_png
|
|
TYPE SCRIPT
|
|
CONDITION HAVE_PNG AND ENABLE_EXTRA_TESTS
|
|
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/grib_png.sh
|
|
TEST_DEPENDS eccodes_download_gribs )
|
|
|
|
ecbuild_add_test( TARGET eccodes_t_grib_ccsds
|
|
TYPE SCRIPT
|
|
CONDITION HAVE_AEC AND ENABLE_EXTRA_TESTS
|
|
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/grib_ccsds.sh
|
|
TEST_DEPENDS eccodes_download_gribs )
|
|
|
|
ecbuild_add_test( TARGET eccodes_t_grib_check_param_concepts
|
|
TYPE SCRIPT
|
|
CONDITION ENABLE_EXTRA_TESTS
|
|
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/grib_check_param_concepts.sh )
|
|
|
|
ecbuild_add_test( TARGET eccodes_t_bufr_split_by_rdbSubtype
|
|
TYPE SCRIPT
|
|
CONDITION ENABLE_EXTRA_TESTS AND ECCODES_INSTALL_EXTRA_TOOLS
|
|
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/bufr_split_by_rdbSubtype.sh
|
|
TEST_DEPENDS eccodes_download_bufrs )
|
|
|
|
ecbuild_add_test( TARGET eccodes_t_codes_export_resource
|
|
TYPE SCRIPT
|
|
CONDITION ECCODES_INSTALL_EXTRA_TOOLS
|
|
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/codes_export_resource.sh )
|
|
|
|
|
|
# Performance test. Must have -DENABLE_TIMER=ON
|
|
ecbuild_add_test( TARGET eccodes_t_grib_ecc-386
|
|
TYPE SCRIPT
|
|
CONDITION ENABLE_EXTRA_TESTS
|
|
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/grib_ecc-386.sh
|
|
TEST_DEPENDS eccodes_download_gribs )
|
|
else()
|
|
# No command line tools
|
|
list(APPEND tests_no_tools
|
|
unit_tests
|
|
julian
|
|
bufr_check_descriptors
|
|
grib_sh_imag
|
|
grib_2nd_order_numValues
|
|
grib_sh_ieee64)
|
|
|
|
foreach( test ${tests_no_tools} )
|
|
ecbuild_add_test( TARGET eccodes_t_${test}
|
|
TYPE SCRIPT
|
|
LABELS "sanity"
|
|
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/${test}.sh )
|
|
endforeach()
|
|
|
|
endif()
|