Merge pull request #66 from PQClean/tidy-python

Move clang-tidy into python-based tests
This commit is contained in:
Joost Rijneveld 2019-03-05 11:23:03 +01:00 zatwierdzone przez GitHub
commit e74fcbecc0
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
2 zmienionych plików z 38 dodań i 52 usunięć

Wyświetl plik

@ -1,52 +0,0 @@
ALL_SCHEMES=$(filter-out crypto_%.c, $(wildcard crypto_*/*))
default: help
.PHONY: require_scheme
require_scheme:
# assumes a SCHEME variable; e.g. make functest SCHEME=crypto_kem/kyber768
ifndef SCHEME
$(error The SCHEME variable is not set. Example: SCHEME=crypto_kem/kyber768)
endif
.PHONY: clean
clean:
rm -rf bin
.PHONY: tidy
tidy:
$(MAKE) do-tidy
do-tidy: require_scheme
clang-tidy \
-quiet $(.TIDY_FIX) \
$(SCHEME)/clean/*.c \
common/*.c \
-- -iquote "common/" -iquote "$(SCHEME)/clean"
.PHONY: apply-tidy
apply-tidy:
$(MAKE) do-tidy .TIDY_FIX=-fix
# The below should be outlined with ts=8
.PHONY: help
help:
@echo "make clean Clean up the bin/ folder"
@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"
@echo "make apply-tidy-all Tidy up all schemes"
@echo "make help Displays this message"
.PHONY: tidy-all
tidy-all:
@for scheme in $(ALL_SCHEMES); do \
$(MAKE) tidy SCHEME=$$scheme || exit 1 ; \
done
.PHONY: apply-tidy-all
apply-tidy-all:
@for scheme in $(ALL_SCHEMES); do \
$(MAKE) apply-tidy SCHEME=$$scheme; \
done

38
test/test_linter.py Normal file
Wyświetl plik

@ -0,0 +1,38 @@
import os
from glob import glob
import shutil
import unittest
import pqclean
from helpers import run_subprocess
def test_clang_tidy():
for scheme in pqclean.Scheme.all_schemes():
for implementation in scheme.implementations:
yield check_tidy, implementation
def check_tidy(implementation: pqclean.Implementation):
if shutil.which('clang-tidy') is None:
raise unittest.SkipTest("clang-tidy unavailable in PATH")
cfiles = glob(os.path.join(implementation.path(), '*.c'))
common_files = glob(os.path.join('..', 'common', '*.c'))
run_subprocess(['clang-tidy',
'-quiet',
'-header-filter=.*',
*cfiles,
*common_files,
'--',
'-iquote', os.path.join('..', 'common'),
'-iquote', implementation.path(),
])
if __name__ == "__main__":
try:
import nose2
nose2.main()
except ImportError:
import nose
nose.runmodule()