diff --git a/.travis.yml b/.travis.yml index d9629b7a..66a4893b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,6 +8,10 @@ matrix: - pip3 install -r requirements.txt script: - "cd test && python3 -m nose --rednose --verbose" + addons: + homebrew: + packages: + - astyle - name: "MacOS + GCC8" os: osx osx_image: xcode10.1 @@ -15,6 +19,7 @@ matrix: addons: homebrew: packages: + - astyle - gcc@8 before_install: - pip3 install -r requirements.txt diff --git a/Makefile b/Makefile index 1abfdec7..0369c83b 100644 --- a/Makefile +++ b/Makefile @@ -13,14 +13,6 @@ endif clean: rm -rf bin -.PHONY: format -format: - astyle --project crypto_*/*/*/*.[ch] common/*.[ch] - -.PHONY: check-format -check-format: - astyle --dry-run --project crypto_*/*/*/*.[ch] common/*.[ch] | grep Formatted && exit 1 || exit 0 - .PHONY: tidy tidy: $(MAKE) do-tidy @@ -40,7 +32,6 @@ apply-tidy: .PHONY: help help: @echo "make clean Clean up the bin/ folder" - @echo "make format Automatically formats all the source code" @echo "make tidy SCHEME=scheme Runs the clang-tidy linter against SCHEME" @echo "make apply-tidy SCHEME=scheme Tries to automatically fix the issues found by clang-tidy in SCHEME" @echo "make tidy-all Runs the clang-tidy linter against all schemes" diff --git a/test/pqclean.py b/test/pqclean.py index 23b2efd2..e4a7cb6a 100644 --- a/test/pqclean.py +++ b/test/pqclean.py @@ -92,6 +92,12 @@ class Implementation: return '{}{}_'.format(self.scheme.namespace_prefix(), self.name.upper()).replace('-', '') + def __str__(self): + return "{} implementation of {}".format(self.name, self.scheme.name) + + def __repr__(self): + return "".format(self.name, self.scheme.name) + class KEM(Scheme): diff --git a/test/test_format.py b/test/test_format.py new file mode 100644 index 00000000..6dc92084 --- /dev/null +++ b/test/test_format.py @@ -0,0 +1,30 @@ +import os +from glob import glob + +import pqclean +from helpers import run_subprocess + + +def test_formatting(): + for scheme in pqclean.Scheme.all_schemes(): + for implementation in scheme.implementations: + yield check_format, implementation + + +def check_format(implementation: pqclean.Implementation): + cfiles = glob(os.path.join(implementation.path(), '*.c')) + hfiles = glob(os.path.join(implementation.path(), '*.h')) + run_subprocess(['astyle', + '--dry-run', + '--options=../.astylerc', + *cfiles, + *hfiles]) + + +if __name__ == "__main__": + try: + import nose2 + nose2.main() + except ImportError: + import nose + nose.runmodule()