Source code for tofu.tests.tests09_tutorials.test_01_runall

import os
import shutil
import subprocess
import matplotlib.pyplot as plt
from tofu import __version__
from pathlib import Path

_HERE = os.path.abspath(os.path.dirname(__file__))
_TFROOT = Path(_HERE).parent.parent.parent

keyVers = 'Vers'


#######################################################
#
#     Setup and Teardown
#
#######################################################

[docs]def setup_module(module, here=_HERE): print("") # this is to get a newline after the dots lf = os.listdir(here) lf = [f for f in lf if all([s in f for s in ['.npz']])] lF = [] for f in lf: ff = f.split('_') v = [fff[len(keyVers):] for fff in ff if fff[:len(keyVers)] == keyVers] msg = f + "\n " + str(ff) + "\n " + str(v) assert len(v) == 1, msg v = v[0] if '.npz' in v: v = v[:v.index('.npz')] # print(v, __version__) if v != __version__: lF.append(f) if len(lF) > 0: print("Removing the following previous test files:") for f in lF: os.remove(os.path.join(here, f))
# print("setup_module before anything in this file")
[docs]def teardown_module(module, here=_HERE): # os.remove(VesTor.Id.SavePath + VesTor.Id.SaveName + '.npz') # os.remove(VesLin.Id.SavePath + VesLin.Id.SaveName + '.npz') # print("teardown_module after everything in this file") # print("") # this is to get a newline lf = os.listdir(here) lf = [f for f in lf if all([s in f for s in ['.npz']])] lF = [] for f in lf: ff = f.split('_') v = [fff[len(keyVers):] for fff in ff if fff[:len(keyVers)] == keyVers] msg = f + "\n "+str(ff) + "\n " + str(v) assert len(v) == 1, msg v = v[0] if '.npz' in v: v = v[:v.index('.npz')] # print(v, __version__) if v == __version__: lF.append(f) if len(lF) > 0: print("Removing the following test files:") for f in lF: os.remove(os.path.join(here, f))
####################################################### # # Struct subclasses # #######################################################
[docs]def get_list_toturials(path=_HERE): ltut = os.listdir(path) ltut = [tt[:-3] for tt in ltut if (all([ss in tt for ss in ['tuto', '.py']]) and not any([ss in tt for ss in ['__init__', '.swp']]))] return ltut
[docs]class Test00_tuto(object):
[docs] @classmethod def setup_class(cls, here=_HERE, pathtuto=_HERE, root=_TFROOT): # print("") # print("---- "+cls.__name__) # ii = 0 # for tuto in get_list_toturials(path=pathtuto): # # Create local temporary copy to make sure the # local version of tofu is imported # method = 'test{0:02.0f}_{1}'.format(ii, tuto) # fmethod = lambda tuto=tuto: cls.Test_tuto._test_tuto(tuto) # setattr(cls, method, types.MethodType(fmethod, cls)) # # setattr(cls, method, lambda cls: cls._test_tuto(tuto)) # ii += 1 pass
[docs] @classmethod def teardown_class(cls): # print("teardown_class() after any methods in this class") pass
[docs] def setup(self): # print("TestUM:setup() before each test method") # self.setup_class() pass
[docs] def teardown(self): # print("TestUM:teardown() after each test method") pass
[docs] @classmethod def _test_tuto(cls, tuto=None, pathtuto=_HERE, root=_TFROOT): src = os.path.join(pathtuto, tuto + '.py') target = os.path.join(root, tuto + '.py') shutil.copyfile(src, target) error = None try: cmd = 'python ' + target out = subprocess.run(cmd, shell=True, check=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE) ls = out.stderr.decode().split('\n') if any(['Error' in ss and not 'ModuleNotFoundError' in ss for ss in ls]): error = '\n'.join(ls) except Exception as err: error = err if error is not None: msg = str(error) raise Exception(msg) plt.close('all') # Remove temporary files and saved files os.remove(target) stdout = out.stdout.decode().split('\n') lf = [stdout[ii].strip() for ii in range(len(stdout)) if 'saved' in stdout[ii-1].lower()] for ii in range(len(lf)): os.remove(lf[ii])
[docs] def test01_plot_basic_tutorial(self): self._test_tuto('tuto_plot_basic')
[docs] def test02_plot_create_geometry(self): self._test_tuto('tuto_plot_create_geometry')
[docs] def test03_plot_custom_emissivity(self): self._test_tuto('tuto_plot_custom_emissivity')