Page MenuHomePhabricator

[64-bit ints] Add 63+sign-bit tests to script_tests.json
ClosedPublic

Authored by tobias_ruck on Aug 8 2025, 11:06.

Details

Reviewers
Fabien
Group Reviewers
Restricted Project
Commits
rABC9db74d61f2d5: [64-bit ints] Add 63+sign-bit tests to script_tests.json
Summary

Add tests specifically testing 63+sign-bit boundary cases.

Note: Most arithmetic opcodes were not tested so well before this diff, therefore there's a lot of additions.

Partial backport of lotusd#71.

Depends on D18460.

Test Plan

ninja check

Diff Detail

Repository
rABC Bitcoin ABC
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

tobias_ruck edited the summary of this revision. (Show Details)
Fabien requested changes to this revision.Aug 11 2025, 12:20
Fabien added inline comments.
src/test/data/script_tests.json
1106 ↗(On Diff #55139)
1110 ↗(On Diff #55139)

This is not obvious at all why this is OK, can you comment please ?

1368 ↗(On Diff #55139)

Macro likestamp:

1373 ↗(On Diff #55139)
1379 ↗(On Diff #55139)
1385 ↗(On Diff #55139)
1385 ↗(On Diff #55139)

maybe comment that the result is negative zero

1392 ↗(On Diff #55139)
1427 ↗(On Diff #55139)
1460–1461 ↗(On Diff #55139)
1593 ↗(On Diff #55139)

duplicated ?

This revision now requires changes to proceed.Aug 11 2025, 12:20
src/test/data/script_tests.json
1593 ↗(On Diff #55139)

better test it twice just to be sure! good find 👍

Fabien requested changes to this revision.Aug 11 2025, 22:53
Fabien added inline comments.
src/test/data/script_tests.json
1379 ↗(On Diff #55180)

you missed that one

This revision now requires changes to proceed.Aug 11 2025, 22:53

fix that one thing I missed

This revision is now accepted and ready to land.Aug 12 2025, 10:41

Tail of the build log:

PASSED                     [ 35%]##teamcity[testFinished timestamp='2025-08-12T10:45:39.754' duration='26' flowId='tests.test_iguana.test_script_sig_success' name='tests.test_iguana.test_script_sig_success']

tests/test_iguana.py::test_script_sig_invalid_opcode_encoding ##teamcity[testStarted timestamp='2025-08-12T10:45:39.754' captureStandardOutput='false' flowId='tests.test_iguana.test_script_sig_invalid_opcode_encoding' metainfo='test_script_sig_invalid_opcode_encoding' name='tests.test_iguana.test_script_sig_invalid_opcode_encoding']
PASSED     [ 40%]##teamcity[testFinished timestamp='2025-08-12T10:45:39.781' duration='25' flowId='tests.test_iguana.test_script_sig_invalid_opcode_encoding' name='tests.test_iguana.test_script_sig_invalid_opcode_encoding']

tests/test_iguana.py::test_script_pub_key_success ##teamcity[testStarted timestamp='2025-08-12T10:45:39.781' captureStandardOutput='false' flowId='tests.test_iguana.test_script_pub_key_success' metainfo='test_script_pub_key_success' name='tests.test_iguana.test_script_pub_key_success']
PASSED                 [ 45%]##teamcity[testFinished timestamp='2025-08-12T10:45:39.809' duration='26' flowId='tests.test_iguana.test_script_pub_key_success' name='tests.test_iguana.test_script_pub_key_success']

tests/test_iguana.py::test_script_pub_key_failure ##teamcity[testStarted timestamp='2025-08-12T10:45:39.809' captureStandardOutput='false' flowId='tests.test_iguana.test_script_pub_key_failure' metainfo='test_script_pub_key_failure' name='tests.test_iguana.test_script_pub_key_failure']
PASSED                 [ 50%]##teamcity[testFinished timestamp='2025-08-12T10:45:39.823' duration='13' flowId='tests.test_iguana.test_script_pub_key_failure' name='tests.test_iguana.test_script_pub_key_failure']

tests/test_iguana.py::test_script_pub_key_empty_stack ##teamcity[testStarted timestamp='2025-08-12T10:45:39.824' captureStandardOutput='false' flowId='tests.test_iguana.test_script_pub_key_empty_stack' metainfo='test_script_pub_key_empty_stack' name='tests.test_iguana.test_script_pub_key_empty_stack']
PASSED             [ 55%]##teamcity[testFinished timestamp='2025-08-12T10:45:39.838' duration='13' flowId='tests.test_iguana.test_script_pub_key_empty_stack' name='tests.test_iguana.test_script_pub_key_empty_stack']

tests/test_iguana.py::test_script_pub_key_false_stack ##teamcity[testStarted timestamp='2025-08-12T10:45:39.838' captureStandardOutput='false' flowId='tests.test_iguana.test_script_pub_key_false_stack' metainfo='test_script_pub_key_false_stack' name='tests.test_iguana.test_script_pub_key_false_stack']
PASSED             [ 60%]##teamcity[testFinished timestamp='2025-08-12T10:45:39.852' duration='13' flowId='tests.test_iguana.test_script_pub_key_false_stack' name='tests.test_iguana.test_script_pub_key_false_stack']

tests/test_iguana.py::test_script_pub_key_cleanstack ##teamcity[testStarted timestamp='2025-08-12T10:45:39.853' captureStandardOutput='false' flowId='tests.test_iguana.test_script_pub_key_cleanstack' metainfo='test_script_pub_key_cleanstack' name='tests.test_iguana.test_script_pub_key_cleanstack']
PASSED              [ 65%]##teamcity[testFinished timestamp='2025-08-12T10:45:39.867' duration='13' flowId='tests.test_iguana.test_script_pub_key_cleanstack' name='tests.test_iguana.test_script_pub_key_cleanstack']

tests/test_iguana.py::test_redeem_script_success ##teamcity[testStarted timestamp='2025-08-12T10:45:39.868' captureStandardOutput='false' flowId='tests.test_iguana.test_redeem_script_success' metainfo='test_redeem_script_success' name='tests.test_iguana.test_redeem_script_success']
PASSED                  [ 70%]##teamcity[testFinished timestamp='2025-08-12T10:45:39.897' duration='28' flowId='tests.test_iguana.test_redeem_script_success' name='tests.test_iguana.test_redeem_script_success']

tests/test_iguana.py::test_redeem_script_error ##teamcity[testStarted timestamp='2025-08-12T10:45:39.898' captureStandardOutput='false' flowId='tests.test_iguana.test_redeem_script_error' metainfo='test_redeem_script_error' name='tests.test_iguana.test_redeem_script_error']
PASSED                    [ 75%]##teamcity[testFinished timestamp='2025-08-12T10:45:39.913' duration='14' flowId='tests.test_iguana.test_redeem_script_error' name='tests.test_iguana.test_redeem_script_error']

tests/test_iguana.py::test_redeem_script_exception ##teamcity[testStarted timestamp='2025-08-12T10:45:39.914' captureStandardOutput='false' flowId='tests.test_iguana.test_redeem_script_exception' metainfo='test_redeem_script_exception' name='tests.test_iguana.test_redeem_script_exception']
PASSED                [ 80%]##teamcity[testFinished timestamp='2025-08-12T10:45:39.932' duration='17' flowId='tests.test_iguana.test_redeem_script_exception' name='tests.test_iguana.test_redeem_script_exception']

tests/test_iguana.py::test_redeem_script_empty_stack ##teamcity[testStarted timestamp='2025-08-12T10:45:39.932' captureStandardOutput='false' flowId='tests.test_iguana.test_redeem_script_empty_stack' metainfo='test_redeem_script_empty_stack' name='tests.test_iguana.test_redeem_script_empty_stack']
PASSED              [ 85%]##teamcity[testFinished timestamp='2025-08-12T10:45:39.953' duration='20' flowId='tests.test_iguana.test_redeem_script_empty_stack' name='tests.test_iguana.test_redeem_script_empty_stack']

tests/test_iguana.py::test_redeem_script_false ##teamcity[testStarted timestamp='2025-08-12T10:45:39.954' captureStandardOutput='false' flowId='tests.test_iguana.test_redeem_script_false' metainfo='test_redeem_script_false' name='tests.test_iguana.test_redeem_script_false']
PASSED                    [ 90%]##teamcity[testFinished timestamp='2025-08-12T10:45:39.970' duration='15' flowId='tests.test_iguana.test_redeem_script_false' name='tests.test_iguana.test_redeem_script_false']

tests/test_iguana.py::test_redeem_script_cleanstack ##teamcity[testStarted timestamp='2025-08-12T10:45:39.971' captureStandardOutput='false' flowId='tests.test_iguana.test_redeem_script_cleanstack' metainfo='test_redeem_script_cleanstack' name='tests.test_iguana.test_redeem_script_cleanstack']
PASSED               [ 95%]##teamcity[testFinished timestamp='2025-08-12T10:45:39.986' duration='14' flowId='tests.test_iguana.test_redeem_script_cleanstack' name='tests.test_iguana.test_redeem_script_cleanstack']

tests/test_iguana.py::test_redeem_script_input_sigchecks ##teamcity[testStarted timestamp='2025-08-12T10:45:39.987' captureStandardOutput='false' flowId='tests.test_iguana.test_redeem_script_input_sigchecks' metainfo='test_redeem_script_input_sigchecks' name='tests.test_iguana.test_redeem_script_input_sigchecks']
PASSED          [100%]##teamcity[testFinished timestamp='2025-08-12T10:45:40.022' duration='34' flowId='tests.test_iguana.test_redeem_script_input_sigchecks' name='tests.test_iguana.test_redeem_script_input_sigchecks']


============================== 20 passed in 0.51s ==============================
[215/492] Running seeder test suite
PASSED: seeder test suite
[216/492] avalanche: testing peermanager_tests
FAILED: src/avalanche/test/CMakeFiles/check-avalanche-peermanager_tests /work/abc-ci-builds/build-without-wallet/src/avalanche/test/CMakeFiles/check-avalanche-peermanager_tests 
cd /work/abc-ci-builds/build-without-wallet/src/avalanche/test && /usr/bin/cmake -E make_directory /work/abc-ci-builds/build-without-wallet/test/junit && /usr/bin/cmake -E make_directory /work/abc-ci-builds/build-without-wallet/test/log && /usr/bin/cmake -E env /work/cmake/utils/log-and-print-on-failure.sh /work/abc-ci-builds/build-without-wallet/test/log/avalanche-peermanager_tests.log /work/abc-ci-builds/build-without-wallet/src/avalanche/test/test-avalanche --run_test=peermanager_tests --logger=HRF,message:JUNIT,message,avalanche-peermanager_tests.xml --catch_system_errors=no -- -printtoconsole=1
Running 37 test cases...
/work/src/avalanche/test/peermanager_tests.cpp(2255): error: in "peermanager_tests/select_staking_reward_winner": check winningCounts.size() == numProofs has failed [7 != 8]

*** 1 failure is detected in the test module "Avalanche Test Suite"
[227/492] Running pow test suite
PASSED: pow test suite
[232/492] Running bitcoin-qt test suite
PASSED: bitcoin-qt test suite
[489/492] Running bitcoin test suite
PASSED: bitcoin test suite
ninja: build stopped: cannot make progress due to previous errors.
Build build-without-wallet failed with exit code 1