230 lines
9.1 KiB
Makefile
230 lines
9.1 KiB
Makefile
# NOSTR Test Suite Makefile
|
|
|
|
CC = gcc
|
|
CFLAGS = -Wall -Wextra -std=c99 -g -I.. -I../secp256k1/include -I../mbedtls-install/include
|
|
LDFLAGS = -L.. -L../secp256k1/.libs -L../mbedtls-install/lib -lnostr_core -l:libsecp256k1.a -l:libmbedtls.a -l:libmbedx509.a -l:libmbedcrypto.a -lm -static
|
|
|
|
# ARM64 cross-compilation settings
|
|
ARM64_CC = aarch64-linux-gnu-gcc
|
|
ARM64_CFLAGS = -Wall -Wextra -std=c99 -g -I..
|
|
ARM64_LDFLAGS = -L.. -lnostr_core_arm64 -lm -static
|
|
|
|
# Test executables
|
|
CRYPTO_TEST_EXEC = nostr_crypto_test
|
|
CORE_TEST_EXEC = nostr_core_test
|
|
RELAY_POOL_TEST_EXEC = relay_pool_test
|
|
EVENT_GEN_TEST_EXEC = test_event_generation
|
|
POW_LOOP_TEST_EXEC = test_pow_loop
|
|
NIP04_TEST_EXEC = nip04_test
|
|
ARM64_CRYPTO_TEST_EXEC = nostr_crypto_test_arm64
|
|
ARM64_CORE_TEST_EXEC = nostr_core_test_arm64
|
|
ARM64_RELAY_POOL_TEST_EXEC = relay_pool_test_arm64
|
|
ARM64_NIP04_TEST_EXEC = nip04_test_arm64
|
|
|
|
# Default target - build all test suites
|
|
all: $(CRYPTO_TEST_EXEC) $(CORE_TEST_EXEC) $(RELAY_POOL_TEST_EXEC) $(EVENT_GEN_TEST_EXEC)
|
|
|
|
# Build crypto test executable (x86_64)
|
|
$(CRYPTO_TEST_EXEC): nostr_crypto_test.c
|
|
@echo "Building crypto test suite (x86_64)..."
|
|
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
|
|
|
|
# Build core test executable (x86_64)
|
|
$(CORE_TEST_EXEC): nostr_core_test.c
|
|
@echo "Building core test suite (x86_64)..."
|
|
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
|
|
|
|
# Build relay pool test executable (x86_64)
|
|
$(RELAY_POOL_TEST_EXEC): relay_pool_test.c
|
|
@echo "Building relay pool test suite (x86_64)..."
|
|
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
|
|
|
|
# Build event generation test executable (x86_64)
|
|
$(EVENT_GEN_TEST_EXEC): test_event_generation.c
|
|
@echo "Building event generation test suite (x86_64)..."
|
|
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
|
|
|
|
# Build PoW loop test executable (x86_64)
|
|
$(POW_LOOP_TEST_EXEC): test_pow_loop.c
|
|
@echo "Building PoW loop test program (x86_64)..."
|
|
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
|
|
|
|
# Build NIP-04 test executable (x86_64)
|
|
$(NIP04_TEST_EXEC): nip04_test.c
|
|
@echo "Building NIP-04 encryption test suite (x86_64)..."
|
|
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
|
|
|
|
# Build simple initialization test executable (x86_64)
|
|
simple_init_test: simple_init_test.c
|
|
@echo "Building simple initialization test program (x86_64)..."
|
|
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
|
|
|
|
# Build minimal NIP-04 test executable (x86_64)
|
|
nip04_minimal_test: nip04_minimal_test.c
|
|
@echo "Building minimal NIP-04 test program (x86_64)..."
|
|
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
|
|
|
|
# Build encryption-only NIP-04 test executable (x86_64)
|
|
nip04_encrypt_only_test: nip04_encrypt_only_test.c
|
|
@echo "Building encryption-only NIP-04 test program (x86_64)..."
|
|
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
|
|
|
|
# Build decryption debug NIP-04 test executable (x86_64)
|
|
nip04_decrypt_debug_test: nip04_decrypt_debug_test.c
|
|
@echo "Building decryption debug NIP-04 test program (x86_64)..."
|
|
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
|
|
|
|
# Build detailed debug NIP-04 test executable (x86_64)
|
|
nip04_detailed_debug_test: nip04_detailed_debug_test.c
|
|
@echo "Building detailed debug NIP-04 test program (x86_64)..."
|
|
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
|
|
|
|
# Build ping test executable (x86_64)
|
|
ping_test: ping_test.c
|
|
@echo "Building ping test program (x86_64)..."
|
|
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
|
|
|
|
# Build ChaCha20 test executable (x86_64)
|
|
chacha20_test: chacha20_test.c
|
|
@echo "Building ChaCha20 RFC 8439 test suite (x86_64)..."
|
|
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
|
|
|
|
# Build frame debug test executable (x86_64)
|
|
frame_debug_test: frame_debug_test.c
|
|
@echo "Building frame debug test program (x86_64)..."
|
|
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
|
|
|
|
# Build sync test executable (x86_64)
|
|
sync_test: sync_test.c
|
|
@echo "Building synchronous relay query test program (x86_64)..."
|
|
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
|
|
|
|
# Build crypto test ARM64 executable
|
|
$(ARM64_CRYPTO_TEST_EXEC): nostr_crypto_test.c
|
|
@echo "Building crypto test suite (ARM64)..."
|
|
$(ARM64_CC) $(ARM64_CFLAGS) $< -o $@ $(ARM64_LDFLAGS)
|
|
|
|
# Build core test ARM64 executable
|
|
$(ARM64_CORE_TEST_EXEC): nostr_core_test.c
|
|
@echo "Building core test suite (ARM64)..."
|
|
$(ARM64_CC) $(ARM64_CFLAGS) $< -o $@ $(ARM64_LDFLAGS)
|
|
|
|
# Build relay pool test ARM64 executable
|
|
$(ARM64_RELAY_POOL_TEST_EXEC): relay_pool_test.c
|
|
@echo "Building relay pool test suite (ARM64)..."
|
|
$(ARM64_CC) $(ARM64_CFLAGS) $< -o $@ $(ARM64_LDFLAGS)
|
|
|
|
# Build NIP-04 test ARM64 executable
|
|
$(ARM64_NIP04_TEST_EXEC): nip04_test.c
|
|
@echo "Building NIP-04 encryption test suite (ARM64)..."
|
|
$(ARM64_CC) $(ARM64_CFLAGS) $< -o $@ $(ARM64_LDFLAGS)
|
|
|
|
# Build both architectures
|
|
all-arch: $(CRYPTO_TEST_EXEC) $(CORE_TEST_EXEC) $(RELAY_POOL_TEST_EXEC) $(ARM64_CRYPTO_TEST_EXEC) $(ARM64_CORE_TEST_EXEC) $(ARM64_RELAY_POOL_TEST_EXEC)
|
|
|
|
# Run crypto tests (x86_64)
|
|
test-crypto: $(CRYPTO_TEST_EXEC)
|
|
@echo "Running crypto tests (x86_64)..."
|
|
./$(CRYPTO_TEST_EXEC)
|
|
|
|
# Run core tests (x86_64)
|
|
test-core: $(CORE_TEST_EXEC)
|
|
@echo "Running core tests (x86_64)..."
|
|
./$(CORE_TEST_EXEC)
|
|
|
|
# Run relay pool tests (x86_64)
|
|
test-relay-pool: $(RELAY_POOL_TEST_EXEC)
|
|
@echo "Running relay pool tests (x86_64)..."
|
|
./$(RELAY_POOL_TEST_EXEC)
|
|
|
|
# Run NIP-04 tests (x86_64)
|
|
test-nip04: $(NIP04_TEST_EXEC)
|
|
@echo "Running NIP-04 encryption tests (x86_64)..."
|
|
./$(NIP04_TEST_EXEC)
|
|
|
|
# Run all test suites (x86_64)
|
|
test: test-crypto test-core test-relay-pool test-nip04
|
|
|
|
# Run crypto tests ARM64 (requires qemu-user-static or ARM64 system)
|
|
test-crypto-arm64: $(ARM64_CRYPTO_TEST_EXEC)
|
|
@echo "Running crypto tests (ARM64)..."
|
|
@if command -v qemu-aarch64-static >/dev/null 2>&1; then \
|
|
echo "Using qemu-aarch64-static to run ARM64 binary..."; \
|
|
qemu-aarch64-static ./$(ARM64_CRYPTO_TEST_EXEC); \
|
|
else \
|
|
echo "qemu-aarch64-static not found. ARM64 binary built but cannot run on x86_64."; \
|
|
echo "To run: copy $(ARM64_CRYPTO_TEST_EXEC) to ARM64 system and execute."; \
|
|
file ./$(ARM64_CRYPTO_TEST_EXEC); \
|
|
fi
|
|
|
|
# Run core tests ARM64 (requires qemu-user-static or ARM64 system)
|
|
test-core-arm64: $(ARM64_CORE_TEST_EXEC)
|
|
@echo "Running core tests (ARM64)..."
|
|
@if command -v qemu-aarch64-static >/dev/null 2>&1; then \
|
|
echo "Using qemu-aarch64-static to run ARM64 binary..."; \
|
|
qemu-aarch64-static ./$(ARM64_CORE_TEST_EXEC); \
|
|
else \
|
|
echo "qemu-aarch64-static not found. ARM64 binary built but cannot run on x86_64."; \
|
|
echo "To run: copy $(ARM64_CORE_TEST_EXEC) to ARM64 system and execute."; \
|
|
file ./$(ARM64_CORE_TEST_EXEC); \
|
|
fi
|
|
|
|
# Run relay pool tests ARM64 (requires qemu-user-static or ARM64 system)
|
|
test-relay-pool-arm64: $(ARM64_RELAY_POOL_TEST_EXEC)
|
|
@echo "Running relay pool tests (ARM64)..."
|
|
@if command -v qemu-aarch64-static >/dev/null 2>&1; then \
|
|
echo "Using qemu-aarch64-static to run ARM64 binary..."; \
|
|
qemu-aarch64-static ./$(ARM64_RELAY_POOL_TEST_EXEC); \
|
|
else \
|
|
echo "qemu-aarch64-static not found. ARM64 binary built but cannot run on x86_64."; \
|
|
echo "To run: copy $(ARM64_RELAY_POOL_TEST_EXEC) to ARM64 system and execute."; \
|
|
file ./$(ARM64_RELAY_POOL_TEST_EXEC); \
|
|
fi
|
|
|
|
# Run all test suites on ARM64
|
|
test-arm64: test-crypto-arm64 test-core-arm64 test-relay-pool-arm64
|
|
|
|
# Run tests on both architectures
|
|
test-all: test test-arm64
|
|
|
|
# Clean
|
|
clean:
|
|
@echo "Cleaning test artifacts..."
|
|
rm -f $(CRYPTO_TEST_EXEC) $(CORE_TEST_EXEC) $(RELAY_POOL_TEST_EXEC) $(EVENT_GEN_TEST_EXEC) $(POW_LOOP_TEST_EXEC) $(NIP04_TEST_EXEC) $(ARM64_CRYPTO_TEST_EXEC) $(ARM64_CORE_TEST_EXEC) $(ARM64_RELAY_POOL_TEST_EXEC) $(ARM64_NIP04_TEST_EXEC)
|
|
|
|
# Help
|
|
help:
|
|
@echo "NOSTR Test Suite"
|
|
@echo "================"
|
|
@echo ""
|
|
@echo "Available targets:"
|
|
@echo " all - Build all test executables (x86_64)"
|
|
@echo " all-arch - Build test executables for both x86_64 and ARM64"
|
|
@echo " test-crypto - Build and run crypto tests (x86_64)"
|
|
@echo " test-core - Build and run core tests (x86_64)"
|
|
@echo " test-relay-pool - Build and run relay pool tests (x86_64)"
|
|
@echo " test-nip04 - Build and run NIP-04 encryption tests (x86_64)"
|
|
@echo " test - Build and run all test suites (x86_64)"
|
|
@echo " test-arm64 - Build and run all test suites (ARM64)"
|
|
@echo " test-all - Run tests on both architectures"
|
|
@echo " clean - Remove test artifacts"
|
|
@echo " help - Show this help"
|
|
@echo ""
|
|
@echo "Test Executables:"
|
|
@echo " $(CRYPTO_TEST_EXEC) - x86_64 crypto test binary"
|
|
@echo " $(CORE_TEST_EXEC) - x86_64 core test binary"
|
|
@echo " $(RELAY_POOL_TEST_EXEC) - x86_64 relay pool test binary"
|
|
@echo " $(NIP04_TEST_EXEC) - x86_64 NIP-04 encryption test binary"
|
|
@echo " $(ARM64_CRYPTO_TEST_EXEC) - ARM64 crypto test binary"
|
|
@echo " $(ARM64_CORE_TEST_EXEC) - ARM64 core test binary"
|
|
@echo " $(ARM64_RELAY_POOL_TEST_EXEC) - ARM64 relay pool test binary"
|
|
@echo " $(ARM64_NIP04_TEST_EXEC) - ARM64 NIP-04 encryption test binary"
|
|
@echo ""
|
|
@echo "Test Coverage:"
|
|
@echo " Crypto Tests - Low-level cryptographic primitives (SHA-256, HMAC, secp256k1, BIP39, BIP32)"
|
|
@echo " Core Tests - High-level NOSTR functionality with nak compatibility validation"
|
|
@echo " Relay Pool Tests - Relay pool event processing with real NOSTR relays"
|
|
@echo " NIP-04 Tests - NOSTR NIP-04 encryption/decryption with reference test vectors"
|
|
|
|
.PHONY: all all-arch test-crypto test-core test-relay-pool test test-crypto-arm64 test-core-arm64 test-relay-pool-arm64 test-arm64 test-all clean help
|