Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 18 additions & 9 deletions energyplus_regressions/tests/test_energyplus.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,28 @@ class TestEnergyPlus(unittest.TestCase):
def setUp(self):
cur_dir_path = Path(__file__).resolve().parent
self.resource_dir = cur_dir_path / 'resources'
dist_dir = self.resource_dir / 'dist'
use_windows_binaries = sys.platform.startswith('win')
self.build_tree = BuildTree()
self.build_tree.energyplus = self.resource_dir / 'dummy.energyplus.py'
self.build_tree.basement = self.resource_dir / 'dummy.basement.py'
self.build_tree.idd_path = self.resource_dir / 'dummy.Energy+.idd'
self.build_tree.slab = self.resource_dir / 'dummy.slab.py'
self.build_tree.basementidd = self.resource_dir / 'dummy.basement.idd'
self.build_tree.slabidd = self.resource_dir / 'dummy.slab.py'
self.build_tree.expandobjects = self.resource_dir / 'dummy.expandobjects.py'
self.build_tree.epmacro = self.resource_dir / 'dummy.epmacro.py'
self.build_tree.readvars = self.resource_dir / 'dummy.readvars.py'
self.build_tree.parametric = self.resource_dir / 'dummy.parametric.py'
# GH Actions on Windows can execute the packaged dummy exes reliably, while direct shell
# execution of the .py helpers is flaky for the macro/parametric preprocessors.
self.build_tree.energyplus = dist_dir / 'energyplus.exe' if use_windows_binaries \
else self.resource_dir / 'dummy.energyplus.py'
self.build_tree.basement = dist_dir / 'basement.exe' if use_windows_binaries \
else self.resource_dir / 'dummy.basement.py'
self.build_tree.slab = dist_dir / 'slab.exe' if use_windows_binaries \
else self.resource_dir / 'dummy.slab.py'
self.build_tree.expandobjects = dist_dir / 'expandobjects.exe' if use_windows_binaries \
else self.resource_dir / 'dummy.expandobjects.py'
self.build_tree.epmacro = dist_dir / 'epmacro.exe' if use_windows_binaries \
else self.resource_dir / 'dummy.epmacro.py'
self.build_tree.readvars = dist_dir / 'readvars.exe' if use_windows_binaries \
else self.resource_dir / 'dummy.readvars.py'
self.build_tree.parametric = dist_dir / 'parametric.exe' if use_windows_binaries \
else self.resource_dir / 'dummy.parametric.py'
self.build_tree.build_dir = Path('/dummy/')
self.run_dir = Path(tempfile.mkdtemp())

Expand Down Expand Up @@ -118,7 +129,6 @@ def test_eplus_passed_hvac_template(self):
self.assertTrue(return_val[2])
self.assertFalse(return_val[3])

@unittest.skipIf(sys.platform.startswith('win'), "GH Actions is having trouble executing dummy.epmacro")
def test_eplus_passed_macro(self):
with (self.run_dir / 'in.imf').open('w') as f:
f.write('##fileprefix line\n')
Expand All @@ -138,7 +148,6 @@ def test_eplus_passed_macro(self):
self.assertTrue(return_val[2])
self.assertFalse(return_val[3])

@unittest.skipIf(sys.platform.startswith('win'), "GH Actions is having trouble executing dummy.parametric")
def test_eplus_passed_parametric(self):
with (self.run_dir / 'in.idf').open('w') as f:
f.write('PARAMETRIC:')
Expand Down
59 changes: 23 additions & 36 deletions energyplus_regressions/tests/test_runtests.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,37 +36,28 @@ def establish_build_folder(
products_dir.mkdir()
macro_dir = target_source_dir / 'bin' / 'EPMacro' / 'Linux'
macro_dir.mkdir(parents=True)
if system() == 'Windows': # pragma: no cover -- not running coverage results on Travis on Windows
# if we are on Windows, we need to prepackage up the python scripts as exe files for them to run
# properly across interpreters. Its easy enough to do with pyinstaller, just need to set up a couple
# variables and run them all. Also, we don't want to run them for every single test, just once if the dist/
# folder hasn't been created yet.
dist_folder = self.resources / 'dist'
products_map = {
self.resources / 'dummy.basement.idd': products_dir / 'BasementGHT.idd',
dist_folder / 'basement.exe': products_dir / 'Basement.exe',
self.resources / 'dummy.Energy+.idd': products_dir / 'Energy+.idd',
dist_folder / 'energyplus.exe': products_dir / 'energyplus.exe',
dist_folder / 'expandobjects.exe': products_dir / 'ExpandObjects.exe',
dist_folder / 'parametric.exe': products_dir / 'ParametricPreprocessor.exe',
dist_folder / 'readvars.exe': products_dir / 'ReadVarsESO.exe',
dist_folder / 'slab.exe': products_dir / 'Slab.exe',
self.resources / 'dummy.slab.idd': products_dir / 'SlabGHT.idd',
dist_folder / 'epmacro.exe': macro_dir / 'EPMacro.exe',
}
else:
products_map = {
self.resources / 'dummy.basement.idd': products_dir / 'BasementGHT.idd',
self.resources / 'dummy.basement.py': products_dir / 'Basement',
self.resources / 'dummy.Energy+.idd': products_dir / 'Energy+.idd',
self.resources / 'dummy.energyplus.py': products_dir / 'energyplus',
self.resources / 'dummy.expandobjects.py': products_dir / 'ExpandObjects',
self.resources / 'dummy.parametric.py': products_dir / 'ParametricPreprocessor',
self.resources / 'dummy.readvars.py': products_dir / 'ReadVarsESO',
self.resources / 'dummy.slab.py': products_dir / 'Slab',
self.resources / 'dummy.slab.idd': products_dir / 'SlabGHT.idd',
self.resources / 'dummy.epmacro.py': macro_dir / 'EPMacro',
}
use_windows_binaries = system() == 'Windows'
dist_folder = self.resources / 'dist'
products_map = {
self.resources / 'dummy.basement.idd': products_dir / 'BasementGHT.idd',
(dist_folder / 'basement.exe') if use_windows_binaries else (self.resources / 'dummy.basement.py'):
products_dir / ('Basement.exe' if use_windows_binaries else 'Basement'),
self.resources / 'dummy.Energy+.idd': products_dir / 'Energy+.idd',
(dist_folder / 'energyplus.exe') if use_windows_binaries else (self.resources / 'dummy.energyplus.py'):
products_dir / ('energyplus.exe' if use_windows_binaries else 'energyplus'),
(dist_folder / 'expandobjects.exe') if use_windows_binaries
else (self.resources / 'dummy.expandobjects.py'):
products_dir / ('ExpandObjects.exe' if use_windows_binaries else 'ExpandObjects'),
(dist_folder / 'parametric.exe') if use_windows_binaries else (self.resources / 'dummy.parametric.py'):
products_dir / ('ParametricPreprocessor.exe' if use_windows_binaries else 'ParametricPreprocessor'),
(dist_folder / 'readvars.exe') if use_windows_binaries else (self.resources / 'dummy.readvars.py'):
products_dir / ('ReadVarsESO.exe' if use_windows_binaries else 'ReadVarsESO'),
(dist_folder / 'slab.exe') if use_windows_binaries else (self.resources / 'dummy.slab.py'):
products_dir / ('Slab.exe' if use_windows_binaries else 'Slab'),
self.resources / 'dummy.slab.idd': products_dir / 'SlabGHT.idd',
(dist_folder / 'epmacro.exe') if use_windows_binaries else (self.resources / 'dummy.epmacro.py'):
macro_dir / ('EPMacro.exe' if use_windows_binaries else 'EPMacro'),
}
for source in products_map:
shutil.copy(source, products_map[source])
testfiles_dir = target_source_dir / 'testfiles'
Expand Down Expand Up @@ -1045,11 +1036,7 @@ def test_base_case_but_multi_process(self):
diff_results = r.run_test_suite()
# there should be 1 file result
self.assertEqual(2, len(diff_results.entries_by_file))
# these next blocks are pragma -ed from coverage because we don't know which one will get hit
if diff_results.entries_by_file[0].basename == 'my_file': # pragma: no cover
results_for_file = diff_results.entries_by_file[0]
else: # if diff_results.entries_by_file[1].basename == 'my_file': # pragma: no cover
results_for_file = diff_results.entries_by_file[1]
results_for_file = next(entry for entry in diff_results.entries_by_file if entry.basename == 'my_file')
# it should be named according to what we listed above
self.assertEqual('my_file', results_for_file.basename)
# it should have succeeded in both base and mod cases
Expand Down