Add c++ unit tests with docs; split out ./rpctest and ./cpptest from ./test
This commit is contained in:
6
build.sh
6
build.sh
@@ -7,11 +7,11 @@ set -eu -o pipefail
|
||||
|
||||
# run correct build script for detected OS
|
||||
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
||||
./util/build.sh --disable-tests $@
|
||||
./util/build.sh $@
|
||||
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
./util/build-mac.sh --disable-tests $@
|
||||
./util/build-mac.sh $@
|
||||
elif [[ "$OSTYPE" == "msys"* ]]; then
|
||||
./util/build-win.sh --disable-tests $@
|
||||
./util/build-win.sh $@
|
||||
#elif [[ "$OSTYPE" == "freebsd"* ]]; then
|
||||
# placeholder
|
||||
else
|
||||
|
||||
7
cpptest
Executable file
7
cpptest
Executable file
@@ -0,0 +1,7 @@
|
||||
#!/bin/bash
|
||||
# Copyright 2026-now The Hush developers
|
||||
# Distributed under the GPLv3 software license, see the accompanying
|
||||
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html
|
||||
|
||||
# Run all tests by default
|
||||
./src/hush-test $@
|
||||
@@ -16,6 +16,48 @@ other programs and Operating System overhead. A good rule of thumb is:
|
||||
|
||||
Divide how many GBs of RAM you have by 2, subtract one. Use that many jobs.
|
||||
|
||||
# Run all tests
|
||||
|
||||
To run both C++ and RPC tests:
|
||||
|
||||
./test
|
||||
|
||||
C++ test run much faster than the RPC tests.
|
||||
|
||||
## Run C++ Unit tests
|
||||
|
||||
To run the C++ unit tests
|
||||
|
||||
./src/hush-test
|
||||
|
||||
Example successful output:
|
||||
|
||||
Running 42 test cases...
|
||||
|
||||
*** No errors detected
|
||||
|
||||
Example failure output:
|
||||
|
||||
Running 42 test cases...
|
||||
test-hush/main.cpp(16): error: in "test_sodium": check init_and_check_sodium() != 0 has failed [0 == 0]
|
||||
|
||||
*** 1 failure is detected in the test module "HushTestSuite"
|
||||
|
||||
# Run Python RPC tests
|
||||
|
||||
To run our QA/functional tests:
|
||||
|
||||
./rpctest
|
||||
|
||||
Example successful output:
|
||||
|
||||
# Running 2 tests..
|
||||
PASS!
|
||||
|
||||
Example failure output:
|
||||
|
||||
FAIL! Number of failed tests: 1 . Details in test-1234567.txt
|
||||
|
||||
|
||||
## Dealing with dependency changes
|
||||
|
||||
|
||||
47
rpctest
Executable file
47
rpctest
Executable file
@@ -0,0 +1,47 @@
|
||||
#!/usr/bin/env perl
|
||||
# Copyright 2016-2026 The Hush developers
|
||||
# Distributed under the GPLv3 software license, see the accompanying
|
||||
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use 5.010;
|
||||
|
||||
my $flags = $ENV{TEST_FLAGS} || '--tracerpc';
|
||||
my $test_dir = './qa/rpc-tests';
|
||||
|
||||
$ENV{PYTHONPATH} = "./qa/rpc-tests/test_framework/";
|
||||
#$ENV{PYTHON_DEBUG} = 1;
|
||||
|
||||
my @tests_to_run = qw{
|
||||
lockzins.py
|
||||
shieldcoinbase_donation.py
|
||||
};
|
||||
|
||||
my $exit = 0;
|
||||
my $failed_tests = 0;
|
||||
my $time=time();
|
||||
my $num_tests = @tests_to_run;
|
||||
|
||||
print "# Running $num_tests tests";
|
||||
for my $test (@tests_to_run) {
|
||||
# send both stderr+stdout to our output file
|
||||
my $cmd = "$test_dir/$test $flags 1>test-$time.txt 2>&1";
|
||||
system($cmd);
|
||||
|
||||
print ".";
|
||||
|
||||
if($?) {
|
||||
say "$cmd FAILED!";
|
||||
$exit = 1;
|
||||
$failed_tests++;
|
||||
}
|
||||
}
|
||||
print "\n";
|
||||
|
||||
if ($exit) {
|
||||
say "FAIL! Number of failed tests: $failed_tests . Details in test-$time.txt";
|
||||
} else {
|
||||
say "PASS!";
|
||||
}
|
||||
exit($exit);
|
||||
@@ -683,7 +683,7 @@ endif
|
||||
$(AM_V_GEN) $(PROTOC) --cpp_out=$(@D) --proto_path=$(abspath $(<D) $<)
|
||||
|
||||
if ENABLE_TESTS
|
||||
#include Makefile.test-hush.include
|
||||
include Makefile.test-hush.include
|
||||
#include Makefile.test.include
|
||||
#include Makefile.gtest.include
|
||||
endif
|
||||
|
||||
@@ -7,7 +7,6 @@ bin_PROGRAMS += hush-test
|
||||
|
||||
# tool for generating our public parameters
|
||||
hush_test_SOURCES = test-hush/main.cpp
|
||||
# devs can enable this shit, it just slows down default compiles
|
||||
# test-hush/testutils.cpp \
|
||||
# test-hush/test_cryptoconditions.cpp \
|
||||
# test-hush/test_coinimport.cpp \
|
||||
@@ -19,6 +18,7 @@ hush_test_SOURCES = test-hush/main.cpp
|
||||
|
||||
hush_test_CPPFLAGS = $(hushd_CPPFLAGS)
|
||||
|
||||
hush_test_LDADD = -lgtest $(hushd_LDADD)
|
||||
#hush_test_LDADD = -lgtest $(hushd_LDADD)
|
||||
hush_test_LDADD = $(hushd_LDADD)
|
||||
|
||||
hush_test_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS) -static
|
||||
|
||||
@@ -1,29 +1,37 @@
|
||||
// Copyright (c) 2016-2024 The Hush developers
|
||||
// Copyright (c) 2016-now The Hush developers
|
||||
// Distributed under the GPLv3 software license, see the accompanying
|
||||
// file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html
|
||||
#include "key.h"
|
||||
#include "base58.h"
|
||||
#include "chainparams.h"
|
||||
#include "gtest/gtest.h"
|
||||
#include "crypto/common.h"
|
||||
//#include "testutils.h"
|
||||
#define BOOST_TEST_MODULE HushTestSuite
|
||||
#include <boost/test/included/unit_test.hpp>
|
||||
|
||||
std::string notaryPubkey = "0205a8ad0c1dbc515f149af377981aab58b836af008d4d7ab21bd76faf80550b47";
|
||||
std::string notarySecret = "UxFWWxsf1d7w7K5TvAWSkeX4H95XQKwdwGv49DXwWUTzPTTjHBbU";
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
/*
|
||||
assert(init_and_check_sodium() != -1);
|
||||
ECC_Start();
|
||||
ECCVerifyHandle handle; // Inits secp256k1 verify context
|
||||
SelectParams(CBaseChainParams::REGTEST);
|
||||
|
||||
CBitcoinSecret vchSecret;
|
||||
// this returns false due to network prefix mismatch but works anyway
|
||||
vchSecret.SetString(notarySecret);
|
||||
CKey notaryKey = vchSecret.GetKey();
|
||||
*/
|
||||
|
||||
testing::InitGoogleTest(&argc, argv);
|
||||
return RUN_ALL_TESTS();
|
||||
// Test that libsodium has been initialized correctly
|
||||
BOOST_AUTO_TEST_CASE(test_sodium) {
|
||||
BOOST_CHECK_NE( init_and_check_sodium(), -1 );
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(test_ecc) {
|
||||
ECC_Start();
|
||||
BOOST_CHECK("created secp256k1 context");
|
||||
|
||||
ECCVerifyHandle handle; // Inits secp256k1 verify context
|
||||
// this value is currently private
|
||||
//BOOST_CHECK_EQUAL( ECCVerifyHandle::refcount, 1 );
|
||||
|
||||
ECC_Stop();
|
||||
BOOST_CHECK("destroyed secp256k1 context");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(test_nets) {
|
||||
|
||||
SelectParams(CBaseChainParams::REGTEST);
|
||||
BOOST_CHECK("regtest");
|
||||
SelectParams(CBaseChainParams::MAIN);
|
||||
BOOST_CHECK("mainnet");
|
||||
SelectParams(CBaseChainParams::TESTNET);
|
||||
BOOST_CHECK("testnet");
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env python
|
||||
#!/usr/bin/env python3
|
||||
# Copyright (c) 2016-2024 The Hush developers
|
||||
# Copyright 2014 BitPay, Inc.
|
||||
# Distributed under the GPLv3 software license, see the accompanying
|
||||
|
||||
47
test
47
test
@@ -1,47 +1,8 @@
|
||||
#!/usr/bin/env perl
|
||||
# Copyright 2016-2026 The Hush developers
|
||||
#!/bin/bash
|
||||
# Copyright 2026-now The Hush developers
|
||||
# Distributed under the GPLv3 software license, see the accompanying
|
||||
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use 5.010;
|
||||
# Run c++ tests first, they are faster
|
||||
./cpptest && ./rpctest
|
||||
|
||||
my $flags = $ENV{TEST_FLAGS} || '--tracerpc';
|
||||
my $test_dir = './qa/rpc-tests';
|
||||
|
||||
$ENV{PYTHONPATH} = "./qa/rpc-tests/test_framework/";
|
||||
#$ENV{PYTHON_DEBUG} = 1;
|
||||
|
||||
my @tests_to_run = qw{
|
||||
lockzins.py
|
||||
shieldcoinbase_donation.py
|
||||
};
|
||||
|
||||
my $exit = 0;
|
||||
my $failed_tests = 0;
|
||||
my $time=time();
|
||||
my $num_tests = @tests_to_run;
|
||||
|
||||
print "# Running $num_tests tests";
|
||||
for my $test (@tests_to_run) {
|
||||
# send both stderr+stdout to our output file
|
||||
my $cmd = "$test_dir/$test $flags 1>test-$time.txt 2>&1";
|
||||
system($cmd);
|
||||
|
||||
print ".";
|
||||
|
||||
if($?) {
|
||||
say "$cmd FAILED!";
|
||||
$exit = 1;
|
||||
$failed_tests++;
|
||||
}
|
||||
}
|
||||
print "\n";
|
||||
|
||||
if ($exit) {
|
||||
say "FAIL! Number of failed tests: $failed_tests . Details in test-$time.txt";
|
||||
} else {
|
||||
say "PASS!";
|
||||
}
|
||||
exit($exit);
|
||||
|
||||
Reference in New Issue
Block a user