mirror of
https://github.com/luxfi/pqclean.git
synced 2026-10-30 15:21:55 +00:00
69 lines
1.9 KiB
Python
69 lines
1.9 KiB
Python
import os
|
|
import platform
|
|
import pytest
|
|
import functools
|
|
|
|
import helpers
|
|
import pqclean
|
|
|
|
__tracebackhide__ = True
|
|
|
|
if platform.machine() == "ppc":
|
|
pytest.skip("Skipping this test on PowerPC to save cycles.", allow_module_level=True)
|
|
|
|
|
|
__astyle_version_result = None
|
|
|
|
def _get_astyle_version() -> str:
|
|
"""Get the AStyle version number"""
|
|
# functools.lru_cache doesn't work because we want to print to stdout each time.
|
|
global __astyle_version_result
|
|
|
|
if __astyle_version_result is None:
|
|
__astyle_version_result = helpers.run_subprocess(['astyle', '--version'])
|
|
else:
|
|
print(__astyle_version_result)
|
|
return __astyle_version_result
|
|
|
|
|
|
helpers.ensure_available('astyle')
|
|
|
|
# Check AStyle version
|
|
def version_check():
|
|
result = _get_astyle_version()
|
|
if ("Artistic Style Version 3.4.8" in result or
|
|
"Artistic Style Version 3.4.9" in result or
|
|
"Artistic Style Version 3.4.10" in result):
|
|
return False
|
|
return "Artistic Style Version 3.4" in result
|
|
|
|
if not version_check() and "CI" not in os.environ:
|
|
pytest.skip("Incompatible AStyle version (need 3.4.x) (not 3.4.{8-10})", allow_module_level=True)
|
|
|
|
if "CI" in os.environ and platform.system() in { 'Windows', 'Darwin' }:
|
|
pytest.skip("Skipping AStyle on Windows and MacOS in CI", allow_module_level=True)
|
|
|
|
@pytest.mark.parametrize(
|
|
'implementation',
|
|
pqclean.Scheme.all_implementations(),
|
|
ids=str,
|
|
)
|
|
@helpers.filtered_test
|
|
def test_format(implementation: pqclean.Implementation):
|
|
cfiles = implementation.cfiles()
|
|
hfiles = implementation.hfiles()
|
|
# Triggers a print
|
|
_get_astyle_version()
|
|
result = helpers.run_subprocess(
|
|
['astyle',
|
|
'--dry-run',
|
|
'--options=../.astylerc',
|
|
*cfiles,
|
|
*hfiles])
|
|
assert 'Formatted' not in result
|
|
|
|
|
|
if __name__ == '__main__':
|
|
import sys
|
|
pytest.main(sys.argv)
|