hdf: convert to new stand-alone test process (#37843)
This commit is contained in:
		| @@ -191,7 +191,7 @@ def check(self): | ||||
|         with working_dir(self.build_directory): | ||||
|             make("check", parallel=False) | ||||
| 
 | ||||
|     extra_install_tests = "hdf/util/testfiles" | ||||
|     extra_install_tests = join_path("hdf", "util", "testfiles") | ||||
| 
 | ||||
|     @property | ||||
|     def cached_tests_work_dir(self): | ||||
| @@ -204,81 +204,78 @@ def setup_build_tests(self): | ||||
|         install test subdirectory for use during `spack test run`.""" | ||||
|         self.cache_extra_test_sources(self.extra_install_tests) | ||||
| 
 | ||||
|     def _test_check_versions(self): | ||||
|         """Perform version checks on selected installed package binaries.""" | ||||
|         spec_vers_str = "Version {0}".format(self.spec.version.up_to(2)) | ||||
|     def _check_version_match(self, exe): | ||||
|         """Ensure exe version check yields spec version.""" | ||||
|         path = join_path(self.prefix.bin, exe) | ||||
|         if not os.path.isfile(path): | ||||
|             raise SkipTest(f"{exe} is not installed") | ||||
| 
 | ||||
|         exes = ["hdfimport", "hrepack", "ncdump", "ncgen"] | ||||
|         for exe in exes: | ||||
|             reason = "test: ensuring version of {0} is {1}".format(exe, spec_vers_str) | ||||
|             self.run_test( | ||||
|                 exe, ["-V"], spec_vers_str, installed=True, purpose=reason, skip_missing=True | ||||
|             ) | ||||
|         exe = which(path) | ||||
|         out = exe("-V", output=str.split, error=str.split) | ||||
|         vers = f"Version {self.spec.version.up_to(2)}" | ||||
|         assert vers in out | ||||
| 
 | ||||
|     def _test_gif_converters(self): | ||||
|         """This test performs an image conversion sequence and diff.""" | ||||
|         work_dir = "." | ||||
|         storm_fn = os.path.join(self.cached_tests_work_dir, "storm110.hdf") | ||||
|     def test_hdfimport_version(self): | ||||
|         """ensure hdfimport version matches spec""" | ||||
|         self._check_version_match("hdfimport") | ||||
| 
 | ||||
|         gif_fn = "storm110.gif" | ||||
|         new_hdf_fn = "storm110gif.hdf" | ||||
|     def test_hrepack_version(self): | ||||
|         """ensure hrepack version matches spec""" | ||||
|         self._check_version_match("hrepack") | ||||
| 
 | ||||
|         # Convert a test HDF file to a gif | ||||
|         self.run_test( | ||||
|             "hdf2gif", | ||||
|             [storm_fn, gif_fn], | ||||
|             "", | ||||
|             installed=True, | ||||
|             purpose="test: hdf-to-gif", | ||||
|             work_dir=work_dir, | ||||
|         ) | ||||
|     def test_ncdump_version(self): | ||||
|         """ensure ncdump version matches spec""" | ||||
|         self._check_version_match("hrepack") | ||||
| 
 | ||||
|         # Convert the gif to an HDF file | ||||
|         self.run_test( | ||||
|             "gif2hdf", | ||||
|             [gif_fn, new_hdf_fn], | ||||
|             "", | ||||
|             installed=True, | ||||
|             purpose="test: gif-to-hdf", | ||||
|             work_dir=work_dir, | ||||
|         ) | ||||
|     def test_ncgen_version(self): | ||||
|         """ensure ncgen version matches spec""" | ||||
|         self._check_version_match("ncgen") | ||||
| 
 | ||||
|         # Compare the original and new HDF files | ||||
|         self.run_test( | ||||
|             "hdiff", | ||||
|             [new_hdf_fn, storm_fn], | ||||
|             "", | ||||
|             installed=True, | ||||
|             purpose="test: compare orig to new hdf", | ||||
|             work_dir=work_dir, | ||||
|         ) | ||||
|     def test_gif_converters(self): | ||||
|         """test image conversion sequence and diff""" | ||||
|         base_name = "storm110" | ||||
|         storm_fn = join_path(self.cached_tests_work_dir, f"{base_name}.hdf") | ||||
|         if not os.path.exists(storm_fn): | ||||
|             raise SkipTest(f"Missing test image {storm_fn}") | ||||
| 
 | ||||
|         if not os.path.exists(self.prefix.bin.hdf2gif) or not os.path.exists( | ||||
|             self.prefix.bin.gif2hdf | ||||
|         ): | ||||
|             raise SkipTest("Missing one or more installed: 'hdf2gif', 'gif2hdf'") | ||||
| 
 | ||||
|         gif_fn = f"{base_name}.gif" | ||||
|         new_hdf_fn = f"{base_name}gif.hdf" | ||||
| 
 | ||||
|         with test_part( | ||||
|             self, "test_gif_converters_hdf2gif", purpose=f"convert {base_name} hdf-to-gif" | ||||
|         ): | ||||
|             hdf2gif = which(self.prefix.bin.hdf2gif) | ||||
|             hdf2gif(storm_fn, gif_fn) | ||||
| 
 | ||||
|         with test_part( | ||||
|             self, "test_gif_converters_gif2hdf", purpose=f"convert {base_name} gif-to-hdf" | ||||
|         ): | ||||
|             gif2hdf = which(self.prefix.bin.gif2hdf) | ||||
|             gif2hdf(gif_fn, new_hdf_fn) | ||||
| 
 | ||||
|         with test_part( | ||||
|             self, "test_gif_converters_hdiff", purpose=f"compare new and orig {base_name} hdf" | ||||
|         ): | ||||
|             hdiff = which(self.prefix.bin.hdiff) | ||||
|             hdiff(new_hdf_fn, storm_fn) | ||||
| 
 | ||||
|     def test_list(self): | ||||
|         """compare low-level HDF file information to expected""" | ||||
|         base_name = "storm110" | ||||
|         if not os.path.isfile(self.prefix.bin.hdfls): | ||||
|             raise SkipTest("hdfls is not installed") | ||||
| 
 | ||||
|     def _test_list(self): | ||||
|         """This test compares low-level HDF file information to expected.""" | ||||
|         storm_fn = os.path.join(self.cached_tests_work_dir, "storm110.hdf") | ||||
|         test_data_dir = self.test_suite.current_test_data_dir | ||||
|         work_dir = "." | ||||
| 
 | ||||
|         reason = "test: checking hdfls output" | ||||
|         details_file = os.path.join(test_data_dir, "storm110.out") | ||||
|         details_file = os.path.join(test_data_dir, f"{base_name}.out") | ||||
|         expected = get_escaped_text_output(details_file) | ||||
|         self.run_test( | ||||
|             "hdfls", | ||||
|             [storm_fn], | ||||
|             expected, | ||||
|             installed=True, | ||||
|             purpose=reason, | ||||
|             skip_missing=True, | ||||
|             work_dir=work_dir, | ||||
|         ) | ||||
| 
 | ||||
|     def test(self): | ||||
|         """Perform smoke tests on the installed package.""" | ||||
|         # Simple version check tests on subset of known binaries that respond | ||||
|         self._test_check_versions() | ||||
|         storm_fn = os.path.join(self.cached_tests_work_dir, f"{base_name}.hdf") | ||||
| 
 | ||||
|         # Run gif converter sequence test | ||||
|         self._test_gif_converters() | ||||
| 
 | ||||
|         # Run hdfls output | ||||
|         self._test_list() | ||||
|         hdfls = which(self.prefix.bin.hdfls) | ||||
|         out = hdfls(storm_fn, output=str.split, error=str.split) | ||||
|         check_outputs(expected, out) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Tamara Dahlgren
					Tamara Dahlgren