浏览代码

Add automatic testing

tags/v0.0.1
Thom Wiggers 5 年前
父节点
当前提交
c0deaa4952
找不到此签名对应的密钥 GPG 密钥 ID: 1BB0A7CE26E363
共有 5 个文件被更改,包括 64 次插入33 次删除
  1. +2
    -4
      .travis.yml
  2. +58
    -26
      Makefile
  3. +2
    -1
      crypto_kem/test.c
  4. +1
    -2
      crypto_sign/dilithium-iii/clean/rounding.c
  5. +1
    -0
      crypto_sign/test.c

+ 2
- 4
.travis.yml 查看文件

@@ -6,8 +6,6 @@ compiler:

script:
- make test-all
- if [[ $(find . -iname *.h -o -iname *.c | xargs clang-format -style=file) ]]; then;
echo "Files need formatting.";
exit 1;
fi;
- make check-format
- make tidy
# vim: set ft=yaml ts=2 sw=2 tw=0 et :

+ 58
- 26
Makefile 查看文件

@@ -1,6 +1,17 @@
# This -Wall was supported by the European Commission through the ERC Starting Grant 805031 (EPOQUE)
CFLAGS=-Wall -Wextra -Wpedantic -Werror -std=c99 $(EXTRAFLAGS)

ALL_SCHEMES=$(filter-out crypto_%/test.c, $(wildcard crypto_*/*))

default: help

.PHONY: require_scheme
require_scheme:
# assumes a SCHEME variable; e.g. make functest_kem SCHEME=crypto_kem/kyber768
ifndef SCHEME
$(error The SCHEME variable is not set. Example: SCHEME=crypto_kem/kyber768)
endif

bin/functest_$(subst /,_,$(SCHEME)): $(dir $(SCHEME))test.c $(wildcard $(SCHEME)/clean/*.c) $(wildcard $(SCHEME)/clean/*.h) | require_scheme
mkdir -p bin
$(CC) $(CFLAGS) \
@@ -26,49 +37,70 @@ clean:
format:
find . -iname *.h -o -iname *.c | xargs clang-format -i -style=file

.PHONY: check-format
check-format:
@for src in $(SOURCES) ; do \
var=`clang-format "$(SRC_DIR)/$$src" | diff "$(SRC_DIR)/$$src" - | wc -l` ; \
if [ $$var -ne 0 ] ; then \
echo "$$src does not respect the coding style (diff: $$var lines)" ; \
exit 1 ; \
fi ; \
done
@echo "Style check passed"

.PHONY: tidy
tidy: require_scheme
tidy:
$(eval undefine .TIDY_FIX)
$(MAKE) do-tidy

do-tidy: require_scheme
clang-tidy \
-quiet $(.TIDY_FIX) \
$(SCHEME)/clean/*.c \
$(SCHEME)/../test.c \
common/*.c \
$(.TIDY_FIX) \
-- -iquote "common/" -iquote "$(SCHEME)/clean"

.PHONY: fix-tidy
apply-tidy: | $(eval .TIDY_FIX = -fix) tidy
.PHONY: apply-tidy
apply-tidy:
$(MAKE) do-tidy .TIDY_FIX=-fix

# The below should be outlined with ts=8
.PHONY: help
help:
@echo make functest SCHEME=scheme run functional tests for SCHEME
@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 fix-tidy SCHEME=scheme Tries to automatically fix the issues found by clang-tidy in SCHEME
@echo make help Displays this message

.PHONY: require_scheme
require_scheme:
# assumes a SCHEME variable; e.g. make functest_kem SCHEME=crypto_kem/kyber768
ifndef SCHEME
$(error The SCHEME variable is not set. Example: SCHEME=crypto_kem/kyber768)
endif
@echo "make functest SCHEME=scheme Build functional tests for SCHEME"
@echo "make run-functest SCHEME=scheme Run functional tests for SCHEME"
@echo "make run-functest-all Run all functests"
@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"
@echo "make apply-tidy-all Tidy up all schemes"
@echo "make help Displays this message"

.PHONY: build-functests
build-functests:
find crypto_kem/ crypto_sign/ -mindepth 1 -maxdepth 1 -type d -exec make functest SCHEME={} \;
.PHONY: functest-all
build-functests: $(foreach skeme,$(ALL_SCHEMES),bin/functest_$(subst /,_,$(skeme)))

.PHONY: run-functests
run-functests:
find crypto_kem/ crypto_sign/ -mindepth 1 -maxdepth 1 -type d -exec make run-functest SCHEME={} \;
.PHONY: run-functest-all
run-functest-all: build-functests
@for functest in bin/functest_* ; do \
echo ./$$functest ; \
./$$functest ; \
done
@echo Tests completed

.PHONY: test-all
test-all: run-functests

.PHONY: tidy-all
tidy-all:
find crypto_kem/ crypto_sign/ -mindepth 1 -maxdepth 1 -type d -exec make tidy SCHEME={} \;
@for scheme in $(ALL_SCHEMES); do \
$(MAKE) tidy SCHEME=$$scheme; \
done

.PHONY: applytidy-all
.PHONY: apply-tidy-all
apply-tidy-all:
find crypto_kem/ crypto_sign/ -mindepth 1 -maxdepth 1 -type d -exec make apply-tidy SCHEME={} \;
@for scheme in $(ALL_SCHEMES); do \
$(MAKE) apply-tidy SCHEME=$$scheme; \
done

+ 2
- 1
crypto_kem/test.c 查看文件

@@ -16,7 +16,8 @@ static int check_canary(const unsigned char *d) {
if (*(uint64_t *)d != 0x0123456789ABCDEF) {
return -1;
}
{ return 0; }

return 0;
}

static int test_keys(void) {


+ 1
- 2
crypto_sign/dilithium-iii/clean/rounding.c 查看文件

@@ -102,9 +102,8 @@ uint32_t use_hint(const uint32_t a, const unsigned int hint) {
}
if (a0 > Q) {
return (a1 + 1) & 0xF;
} else {
return (a1 - 1) & 0xF;
}
return (a1 - 1) & 0xF;

/* If decompose does not divide out ALPHA:
if(hint == 0)


+ 1
- 0
crypto_sign/test.c 查看文件

@@ -17,6 +17,7 @@ static int check_canary(const unsigned char *d) {
if (*(uint64_t *)d != 0x0123456789ABCDEF) {
return -1;
}

return 0;
}
static int test_sign(void) {


正在加载...
取消
保存