clm5/python/ctsm/test/test_sys_run_neon.py
2024-05-09 15:14:01 +08:00

72 lines
1.8 KiB
Python

#!/usr/bin/env python3
"""System tests for run_neon
"""
import glob
import os
import unittest
import tempfile
import shutil
import sys
from ctsm import unit_testing
from ctsm.site_and_regional.run_neon import main
from ctsm.path_utils import path_to_ctsm_root
# Allow test names that pylint doesn't like; otherwise hard to make them
# readable
# pylint: disable=invalid-name
class TestSysRunNeon(unittest.TestCase):
"""System tests for run_neon"""
def setUp(self):
"""
Make /_tempdir for use by these tests.
Check tempdir for history files
"""
self._previous_dir = os.getcwd()
self._tempdir = tempfile.mkdtemp()
os.chdir(self._tempdir) # cd to tempdir
def tearDown(self):
"""
Remove temporary directory
"""
os.chdir(self._previous_dir)
shutil.rmtree(self._tempdir, ignore_errors=True)
def test_one_site(self):
"""
This test specifies a site to run
Run the tool, check that file structure is set up correctly
"""
# run the run_neon tool
sys.argv = [
os.path.join(path_to_ctsm_root(), "tools", "site_and_regional", "run_neon"),
"--neon-sites",
"BART",
"--setup-only",
"--output-root",
self._tempdir,
]
main("")
# assert that BART directories were created during setup
self.assertTrue("BART" in glob.glob(self._tempdir + "/BART*")[0])
# TODO: Would also be useful to test the following items:
# It might be good to ensure the log files are working as expected?
# Test running transient, ad and post ad cases.
# Test use of base case root.
# Test for using prism?
if __name__ == "__main__":
unit_testing.setup_for_tests()
unittest.main()