37 lines
2.1 KiB
Python
Executable File
37 lines
2.1 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
from pathlib import Path
|
|
import shutil
|
|
import subprocess
|
|
import tempfile
|
|
|
|
root = Path(__file__).resolve().parents[1]
|
|
(root / 'tmp').mkdir(exist_ok=True)
|
|
with tempfile.TemporaryDirectory(prefix='build-mode-test-', dir=root / 'tmp') as temporary:
|
|
work = Path(temporary)
|
|
for label, arguments in [('checked', []), ('performance', ['--build-mode', 'performance']),
|
|
('native', ['--build-mode', 'performance', '--native'])]:
|
|
directory = work / label
|
|
(directory / 'plasim/bld').mkdir(parents=True)
|
|
for name in ['configure.sh', 'makecheck', 'f90check.f90', 'cc_check.c']:
|
|
shutil.copy2(root / 'exoplasim' / name, directory / name)
|
|
subprocess.run(['bash', 'configure.sh', *arguments], cwd=directory, check=True,
|
|
stdout=subprocess.DEVNULL, timeout=60)
|
|
config = (directory / 'most_compiler').read_text()
|
|
assert ('-fcheck=all' in config) == (label == 'checked')
|
|
assert ('-DEXOPLASIM_CHECKED' in config) == (label == 'checked')
|
|
assert ('-march=native' in config) == (label == 'native')
|
|
assert ('-ffp-contract=off' in config) == (label == 'native')
|
|
assert '-ffpe-trap=invalid,zero,overflow' in config
|
|
assert '-finit-real=zero' in config
|
|
assert '-fcheck=all' in (directory / 'most_debug_options').read_text()
|
|
assert '-fdefault-real-8' in (directory / 'most_precision_options').read_text()
|
|
assert '-march=native' not in (directory / 'most_debug_options').read_text()
|
|
assert config.split('MOST_F90_OPTS=', 1)[1].splitlines()[0] in (directory / 'most_compiler_mpi').read_text()
|
|
for arguments in [['--native'], ['--build-mode', 'invalid'], ['--build-mode']]:
|
|
result = subprocess.run(['bash', str(root / 'exoplasim/configure.sh'), *arguments],
|
|
cwd=work, capture_output=True, timeout=10)
|
|
assert result.returncode == 2, result
|
|
help_result = subprocess.check_output(['bash', str(root / 'exoplasim/configure.sh'), '-h'], cwd=work, timeout=10)
|
|
assert b'EXOPLASIM CONFIGURATION SCRIPT' in help_result
|
|
print('Build-mode tests passed')
|