also migrate tests to meson

This commit is contained in:
2025-11-24 22:01:44 +01:00
parent fdfbdb7061
commit 28693971ef
10 changed files with 135 additions and 48 deletions

View File

@@ -6,7 +6,7 @@ labels:
platform: ${platform}
steps:
build-berkeley:
build:
when:
event: [push]
image: alpine:latest
@@ -16,4 +16,14 @@ steps:
- meson setup --reconfigure build
- ninja -C build
test:
when:
event: [push]
image: alpine:latest
commands:
- apk update
- apk add --no-cache bash build-base gdb perl sodium sodium-dev jansson jansson-dev db db-dev pkgconfig meson ninja
- meson setup --reconfigure build
- ninja -C build test

View File

@@ -10,7 +10,7 @@ steps:
image: alpine:latest
commands:
- apk update
- apk add --no-cache bash build-base words-en gdb perl pcre2-static pcre2-dev gdbm gdbm-dev pkgconfig meson ninja git
- apk add --no-cache bash build-base gdb perl sodium sodium-dev jansson jansson-dev db db-dev pkgconfig meson ninja
- meson setup --reconfigure --prefer-static -Dcpp_link_args="-static" --buildtype=release build
- ninja -C build
- meson dist -C build --formats xztar,gztar,zip

View File

@@ -115,3 +115,6 @@ if pod2man.found()
install_man('pcp.1')
endif
endif
subdir('tests')

View File

@@ -20,17 +20,20 @@
# You can contact me by mail: <tlinden AT cpan DOT org>.
#
pcp=../src/pcp1
pcp=../pcp
vault=v1
passwd=xxx
md5msg=66b8c4ca9e5d2a7e3c0559c3cdea3d50
os=$(uname)
. ./keys.cfg
check_dependencies_shell () {
if test "$os" = "FreeBSD"; then
cmd="which mdmfs"
expect="/mdmfs/"
check "$cmd" "$expect" "$input"
fi
}
check_dependencies_pcp () {
@@ -39,10 +42,16 @@ check_dependencies_pcp () {
check "$cmd" "$expect" "$input"
}
# this one only works on freebsd for my user. sorrry
# this one only works on freebsd for my user. sorry
check_vault_disk_full () {
if test "$os" = "FreeBSD"; then
sudo mdmfs -s 1M -w 1001:1001 md env && dd if=/dev/zero of=env/b bs=1024 count=700
cmd="./jot 100 | while read N; do if ! (echo a; echo b) | $pcp -V env/v1 -k -x x; then break; fi; done"
expect="/Failed to copy/"
check "$cmd" "$expect" "$input"
fi
}
prepare() {
:
}

View File

@@ -20,7 +20,7 @@
# You can contact me by mail: <tlinden AT cpan DOT org>.
#
pcp=../src/pcp1
pcp=../pcp
passwd=xxx
verbose=1

View File

@@ -1,5 +1,5 @@
#!/bin/sh
file=$1
../src/pcp1 -C $file | awk '{print $4}'
../pcp -C $file | awk '{print $4}'

54
tests/meson.build Normal file
View File

@@ -0,0 +1,54 @@
# -*-python-*-
# genheader statictest buffertest sample pipetest decodertest
fs = import('fs')
binaries = [
'gencheader',
'statictest',
'buffertest',
'sample',
'pipetest',
'decodertest',
'mangle',
'invalidkeys',
'pwhashes',
'streamtest',
]
configs = [
'cppunittests.cfg',
'iotests.cfg',
'jsonunittests.cfg',
'keys.cfg',
'pyunittests.cfg',
'stresstests.cfg',
'unittests.cfg',
'md5',
'jot',
'bart.pub',
'key-alicia-pub',
'key-alicia-sec',
'key-bobby-pub',
'key-bobby-sec'
]
foreach binary: binaries
executable(
binary,
binary + '.c',
include_directories: [pcp_inc],
dependencies: [libpcp_dep, pcp_deps],
)
endforeach
foreach config: configs
cp = fs.copyfile(config)
endforeach
unittest = find_program('unittests.sh', '.')
test('C tests', unittest, args : ['unittests.cfg'])
test('IO tests', unittest, args : ['iotests.cfg'])
test('JSON tests', unittest, args : ['jsonunittests.cfg'])

View File

@@ -1,13 +1,13 @@
#include <unistd.h>
#include <limits.h>
#include <sodium.h>
#include <stdio.h>
#include <stdlib.h>
#include <sodium.h>
#include <limits.h>
#include <unistd.h>
#include "mem.h"
#include "defines.h"
#include "keyprint.h"
#include "key.h"
#include "keyprint.h"
#include "mem.h"
struct _pw_t {
char hash[65];
@@ -24,28 +24,29 @@ int main() {
pw *list = NULL;
pw *have = NULL;
unsigned char nonce[32] = {1};
PCPCTX *ptx = ptx_new();
if(sodium_init() == -1) return 1;
if (sodium_init() == -1)
return 1;
for(i=97; i<126; ++i) {
for (i = 97; i < 126; ++i) {
pass[0] = i;
pass[1] = 0;
h = pcp_derivekey(pass, nonce);
h = pcp_derivekey(ptx, pass, nonce);
p =0;
for(t=0; t<32; ++t) {
p = 0;
for (t = 0; t < 32; ++t) {
sprintf(&tmp[p], "%02x", h[t]);
p += 2;
}
have = NULL;
HASH_FIND_STR(list, tmp, have);
if(have == NULL) {
if (have == NULL) {
item = ucmalloc(sizeof(pw));
memcpy(item->hash, tmp, 65);
HASH_ADD_STR( list, hash, item );
}
else {
HASH_ADD_STR(list, hash, item);
} else {
fprintf(stderr, "Error: collision found: %s!\n", have->hash);
return 1;
}

View File

@@ -20,7 +20,7 @@
# You can contact me by mail: <tlinden AT cpan DOT org>.
#
pcp=../src/pcp1
pcp=../pcp
vault=v1
passwd=ech9xeiT%CuxuH1ch-is2ies1R
md5msg=66b8c4ca9e5d2a7e3c0559c3cdea3d50
@@ -40,29 +40,29 @@ check_dependencies_pcp () {
}
check_streams_8 () {
md5=`./md5 ../COPYING`
cmd="./pipetest 8 e < ../COPYING | ./pipetest 8 d | ./md5"
md5=`./md5 ../../COPYING`
cmd="./pipetest 8 e < ../../COPYING | ./pipetest 8 d | ./md5"
expect="/$md5/"
check "$cmd" "$expect" "$input"
}
check_streams_16 () {
md5=`./md5 ../COPYING`
cmd="./pipetest 16 e < ../COPYING | ./pipetest 16 d | ./md5"
md5=`./md5 ../../COPYING`
cmd="./pipetest 16 e < ../../COPYING | ./pipetest 16 d | ./md5"
expect="/$md5/"
check "$cmd" "$expect" "$input"
}
check_streams_32 () {
md5=`./md5 ../COPYING`
cmd="./pipetest 32 e < ../COPYING | ./pipetest 32 d | ./md5"
md5=`./md5 ../../COPYING`
cmd="./pipetest 32 e < ../../COPYING | ./pipetest 32 d | ./md5"
expect="/$md5/"
check "$cmd" "$expect" "$input"
}
check_streams_64 () {
md5=`./md5 ../COPYING`
cmd="./pipetest 64 e < ../COPYING | ./pipetest 64 d | ./md5"
md5=`./md5 ../../COPYING`
cmd="./pipetest 64 e < ../../COPYING | ./pipetest 64 d | ./md5"
expect="/$md5/"
check "$cmd" "$expect" "$input"
}
@@ -284,27 +284,27 @@ check_sym_decrypt () {
#
# signature tests
check_sign_detached_to_bobby () {
cmd="$pcp -V va -g -I README -f testsig -x a"
cmd="$pcp -V va -g -I ../../COPYING -f testsig -x a"
expectfile="testsig"
expect=""
check "$cmd" "$expect" "$input" "$expectfile"
}
check_verify_detached_signature () {
cmd="$pcp -V vb -c -f testsig -I README -i $idalicia"
cmd="$pcp -V vb -c -f testsig -I ../../COPYING -i $idalicia"
expect="/verified/"
check "$cmd" "$expect" "$input"
}
check_verify_detached_signature_self () {
cmd="$pcp -V va -c -f testsig -I README"
cmd="$pcp -V va -c -f testsig -I ../../COPYING"
expect="/verified/"
check "$cmd" "$expect" "$input"
}
check_sign_armored_to_bobby () {
rm -f testsig
cmd="$pcp -V va -g -I README -O testsig -x a -z"
cmd="$pcp -V va -g -I ../../COPYING -O testsig -x a -z"
expectfile="testsig"
expect=""
check "$cmd" "$expect" "$input" "$expectfile"
@@ -324,7 +324,7 @@ check_verify_armored_signature_self () {
check_sign_bin_to_bobby () {
rm -f testsig
cmd="$pcp -V va -g -I README -O testsig -x a"
cmd="$pcp -V va -g -I ../../COPYING -O testsig -x a"
expectfile="testsig"
expect=""
check "$cmd" "$expect" "$input" "$expectfile"
@@ -345,7 +345,7 @@ check_verify_bin_signature_self () {
#
# sign+encrypt tests
check_sign_crypt_to_bobby () {
cmd="$pcp -V va -g -e -I README -O testsig -r Bobby -x a"
cmd="$pcp -V va -g -e -I ../../COPYING -O testsig -r Bobby -x a"
expect="/Encrypted/"
check "$cmd" "$expect" "$input"
}
@@ -572,26 +572,26 @@ check_fuzz_binary_seckey () {
# checksum tests
check_checksum_copying () {
cmd="$pcp -C ../COPYING"
cmd="$pcp -C ../../COPYING"
expect="/$blake2/"
check "$cmd" "$expect" "$input"
}
check_checksum_authenticated_copying () {
cmd="$pcp -x $key -C ../COPYING"
cmd="$pcp -x $key -C ../../COPYING"
expect="/$blake2auth/"
check "$cmd" "$expect" "$input"
}
check_checksum_copying_stdin () {
cmd="$pcp -C < ../COPYING"
cmd="$pcp -C < ../../COPYING"
expect="/$blake2/"
check "$cmd" "$expect" "$input"
}
check_checksum_multiple () {
cmd="$pcp -C ../COPYING ../README"
expect="/README/"
cmd="$pcp -C ../../COPYING ../../../COPYING"
expect="/../../COPYING/"
check "$cmd" "$expect" "$input"
}

View File

@@ -106,13 +106,23 @@ callcheck () {
cfg="$1"
check="$2"
pwd=$(pwd)
base=$(basename "$pwd")
if test "$base" != "test"; then
cd tests
fi
echo "PWD: $(pwd)"
if test -z "$cfg"; then
echo "Usage: $0 <config> [check]"
exit 1
fi
if ! test -e "$cfg"; then
echo "$cfg doesn't exist!"
echo "$cfg doesn't exist ($(pwd))!"
exit 1
fi