rultor.com logo This build log was produced by rultor.com for yegor256/sibit#321
++ dirname ./run.sh
+ cd .
+ echo 1271
+ echo '2.0-SNAPSHOT BUILD'
2.0-SNAPSHOT BUILD
+ date
Sat Jul 25 07:00:01 UTC 2026
+ uptime
 07:00:01 up 1 min,  0 users,  load average: 0.74, 0.26, 0.09
+ head=git@github.com:yegor256/sibit.git
+ ff=default
+ image=yegor256/ruby
+ rebase=false
+ squash=false
+ head_branch=master
+ author=yegor256
+ tag=0.34.2
+ vars=('--env=skip_cross=true' '--env=head=git@github.com:yegor256/sibit.git' '--env=tag=0.34.2' '--env=scripts=( '\''export '\''\'\'''\''skip_cross=true'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''head=git@github.com:yegor256/sibit.git'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''tag=0.34.2'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''head_branch=master'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''author=yegor256'\''\'\'''\'''\'' '\'';'\'' '\''pdd -f /dev/null'\'' '\'';'\'' '\''bundle install --no-color "--gemfile=$(pwd)/Gemfile"'\'' '\'';'\'' '\''bundle exec rake'\'' '\'';'\'' '\''sed -i "s/0\.0\.0/${tag}/g" lib/sibit/version.rb'\'' '\'';'\'' '\''git add lib/sibit/version.rb'\'' '\'';'\'' '\''git commit -m "version set to ${tag}"'\'' '\'';'\'' '\''gem build sibit.gemspec'\'' '\'';'\'' '\''chmod 0600 ../rubygems.yml'\'' '\'';'\'' '\''gem push *.gem --config-file ../rubygems.yml'\'' '\'';'\'' )' '--env=head_branch=master' '--env=author=yegor256')
+ scripts=('export '\''skip_cross=true'\''' ';' 'export '\''head=git@github.com:yegor256/sibit.git'\''' ';' 'export '\''tag=0.34.2'\''' ';' 'export '\''head_branch=master'\''' ';' 'export '\''author=yegor256'\''' ';' 'pdd -f /dev/null' ';' 'bundle install --no-color "--gemfile=$(pwd)/Gemfile"' ';' 'bundle exec rake' ';' 'sed -i "s/0\.0\.0/${tag}/g" lib/sibit/version.rb' ';' 'git add lib/sibit/version.rb' ';' 'git commit -m "version set to ${tag}"' ';' 'gem build sibit.gemspec' ';' 'chmod 0600 ../rubygems.yml' ';' 'gem push *.gem --config-file ../rubygems.yml' ';')
+ directory=
+ container=yegor256_sibit_321
+ as_root=false
+ set -e -o pipefail
+ hostname
ip-172-31-17-47
+ pwd
/tmp/rultor-cP8C
+ git --version
git version 2.34.1
+ docker --version
Docker version 25.0.3, build 4debf41
+ mkdir -p /home/ubuntu/.ssh
+ echo -e 'Host github.com\n\tStrictHostKeyChecking no\n'
+ chmod 600 /home/ubuntu/.ssh/config
+ git clone --recurse-submodules git@github.com:yegor256/sibit.git repo
Cloning into 'repo'...
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
+ cd repo
+ git config user.email gpg@rultor.com
+ git config user.name Rultor.com
+ '[' -z 'export '\''skip_cross=true'\''' ']'
+ cd ..
+ cat
+ '[' false = true ']'
+ cat
+ chmod a+x entry.sh
+ cat
+ echo 'export '\''skip_cross=true'\''' ';' 'export '\''head=git@github.com:yegor256/sibit.git'\''' ';' 'export '\''tag=0.34.2'\''' ';' 'export '\''head_branch=master'\''' ';' 'export '\''author=yegor256'\''' ';' 'pdd -f /dev/null' ';' 'bundle install --no-color "--gemfile=$(pwd)/Gemfile"' ';' 'bundle exec rake' ';' 'sed -i "s/0\.0\.0/${tag}/g" lib/sibit/version.rb' ';' 'git add lib/sibit/version.rb' ';' 'git commit -m "version set to ${tag}"' ';' 'gem build sibit.gemspec' ';' 'chmod 0600 ../rubygems.yml' ';' 'gem push *.gem --config-file ../rubygems.yml' ';'
+ sensitive=()
+ set -ex -o pipefail
+ '[' -z 0.34.2 ']'
+ [[ 0.34.2 =~ ^[a-zA-Z0-9\.\-]+$ ]]
+ echo 'tag name is valid: "0.34.2"'
tag name is valid: "0.34.2"
+ cd repo
++ git tag -l 0.34.2
+ '[' -n '' ']'
+ BRANCH_NAME=__rultor
++ wc -l
++ git show-branch __rultor
+ '[' 0 -gt 0 ']'
+ export BRANCH_NAME
+ git checkout -b __rultor
Switched to a new branch '__rultor'
+ docker_when_possible
+ true
++ tail -n 1
++ sed 's/ /\n/g'
++ uptime
+ load=0.10
++ bc
++ echo 0.10 '>' 30
+ '[' 0 -eq 1 ']'
+ echo 'load average is 0.10, low enough to run a new Docker container'
load average is 0.10, low enough to run a new Docker container
+ break
+ cd ..
+ '[' -n '' ']'
+ use_image=yegor256/ruby
+ docker pull yegor256/ruby
Using default tag: latest
latest: Pulling from yegor256/ruby
cb259a83ac3d: Pulling fs layer
4f4fb700ef54: Pulling fs layer
50778be6ae7c: Pulling fs layer
de39015cb2a0: Pulling fs layer
c5d1f12c356a: Pulling fs layer
e9b75b04736a: Pulling fs layer
74aacb7acb4e: Pulling fs layer
b343964c14ed: Pulling fs layer
2da5d65999c3: Pulling fs layer
de39015cb2a0: Waiting
c5d1f12c356a: Waiting
e9b75b04736a: Waiting
74aacb7acb4e: Waiting
b343964c14ed: Waiting
2da5d65999c3: Waiting
4f4fb700ef54: Verifying Checksum
4f4fb700ef54: Download complete
50778be6ae7c: Verifying Checksum
50778be6ae7c: Download complete
cb259a83ac3d: Verifying Checksum
cb259a83ac3d: Download complete
e9b75b04736a: Verifying Checksum
e9b75b04736a: Download complete
74aacb7acb4e: Verifying Checksum
74aacb7acb4e: Download complete
b343964c14ed: Verifying Checksum
b343964c14ed: Download complete
c5d1f12c356a: Verifying Checksum
c5d1f12c356a: Download complete
2da5d65999c3: Verifying Checksum
2da5d65999c3: Download complete
de39015cb2a0: Verifying Checksum
de39015cb2a0: Download complete
cb259a83ac3d: Pull complete
4f4fb700ef54: Pull complete
50778be6ae7c: Pull complete
de39015cb2a0: Pull complete
c5d1f12c356a: Pull complete
e9b75b04736a: Pull complete
74aacb7acb4e: Pull complete
b343964c14ed: Pull complete
2da5d65999c3: Pull complete
Digest: sha256:1e3d8ad5ebf9fd2b323717b6b1213e233d033d7dec9eaac9d19bf72b6e5caaf7
Status: Downloaded newer image for yegor256/ruby:latest
docker.io/yegor256/ruby:latest
+ grep --quiet '\syegor256_sibit_321\s*$'
+ docker ps --filter=status=exited
+ ls -al .
total 48
drwx------  3 ubuntu ubuntu 4096 Jul 25 07:00 .
drwxrwxrwt 12 root   root   4096 Jul 25 06:59 ..
-rwxrwxr-x  1 ubuntu ubuntu  666 Jul 25 07:00 end.sh
-rwxrwxr-x  1 ubuntu ubuntu  498 Jul 25 07:00 entry.sh
-rw-rw-r--  1 ubuntu ubuntu    5 Jul 25 07:00 pid
drwxrwxr-x 10 ubuntu ubuntu 4096 Jul 25 07:00 repo
-rw-rw-r--  1 ubuntu ubuntu   81 Jul 25 06:59 rubygems.yml
-rwxrwxr-x  1 ubuntu ubuntu 6574 Jul 25 06:59 run.sh
-rw-rw-r--  1 ubuntu ubuntu  660 Jul 25 07:00 script.sh
-rw-rw-r--  1 ubuntu ubuntu 5474 Jul 25 07:00 stdout
++ pwd
++ pwd
+ docker run -t --rm -v /tmp/rultor-cP8C:/main --env=skip_cross=true --env=head=git@github.com:yegor256/sibit.git --env=tag=0.34.2 '--env=scripts=( '\''export '\''\'\'''\''skip_cross=true'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''head=git@github.com:yegor256/sibit.git'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''tag=0.34.2'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''head_branch=master'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''author=yegor256'\''\'\'''\'''\'' '\'';'\'' '\''pdd -f /dev/null'\'' '\'';'\'' '\''bundle install --no-color "--gemfile=$(pwd)/Gemfile"'\'' '\'';'\'' '\''bundle exec rake'\'' '\'';'\'' '\''sed -i "s/0\.0\.0/${tag}/g" lib/sibit/version.rb'\'' '\'';'\'' '\''git add lib/sibit/version.rb'\'' '\'';'\'' '\''git commit -m "version set to ${tag}"'\'' '\'';'\'' '\''gem build sibit.gemspec'\'' '\'';'\'' '\''chmod 0600 ../rubygems.yml'\'' '\'';'\'' '\''gem push *.gem --config-file ../rubygems.yml'\'' '\'';'\'' )' --env=head_branch=master --env=author=yegor256 --hostname=docker --privileged --net=host --dns 8.8.8.8 --add-host docker:127.0.0.1 --memory=8g --memory-swap=16g --oom-kill-disable --cidfile=/tmp/rultor-cP8C/cid -w=/main -v /var/run/docker.sock:/var/run/docker.sock --name=yegor256_sibit_321 yegor256/ruby /main/entry.sh
WARNING: Your kernel does not support OomKillDisable. OomKillDisable discarded.
+ set -e
+ set -o pipefail
+ shopt -s dotglob
+ useradd -m -G sudo r
++ awk -F : '$3 > 100 { print $1 }'
++ cat /etc/group
+ for g in $(cat /etc/group | awk -F ':' '$3 > 100 { print $1 }')
+ usermod -a -G nogroup r
+ for g in $(cat /etc/group | awk -F ':' '$3 > 100 { print $1 }')
+ usermod -a -G ubuntu r
+ for g in $(cat /etc/group | awk -F ':' '$3 > 100 { print $1 }')
+ usermod -a -G systemd-journal r
+ for g in $(cat /etc/group | awk -F ':' '$3 > 100 { print $1 }')
+ usermod -a -G systemd-network r
+ for g in $(cat /etc/group | awk -F ':' '$3 > 100 { print $1 }')
+ usermod -a -G messagebus r
+ for g in $(cat /etc/group | awk -F ':' '$3 > 100 { print $1 }')
+ usermod -a -G _ssh r
+ for g in $(cat /etc/group | awk -F ':' '$3 > 100 { print $1 }')
+ usermod -a -G polkitd r
+ for g in $(cat /etc/group | awk -F ':' '$3 > 100 { print $1 }')
+ usermod -a -G ssh r
+ for g in $(cat /etc/group | awk -F ':' '$3 > 100 { print $1 }')
+ usermod -a -G docker r
+ for g in $(cat /etc/group | awk -F ':' '$3 > 100 { print $1 }')
+ usermod -a -G r r
+ usermod -s /bin/bash r
+ echo '%sudo ALL=(ALL) NOPASSWD:ALL'
+ cp -R /root/.bashrc /root/.cache /root/.gemrc /root/.profile /root/.ssh /home/r
+ cp -R ./cid ./end.sh ./entry.sh ./pid ./repo ./rubygems.yml ./run.sh ./script.sh ./stdout /home/r
+ rm -rf repo
+ chown -R r:r /home/r
+ chmod a+x /home/r/script.sh
+ cat /home/r/script.sh
#!/usr/bin/env bash
set -e
set -o pipefail
if [ -e /home/r/.profile ]; then source /home/r/.profile; fi
shopt -s expand_aliases
alias 'sudo=sudo -i'
export HOME=/home/r
cd "${HOME}/repo"
export 'skip_cross=true' ; export 'head=git@github.com:yegor256/sibit.git' ; export 'tag=0.34.2' ; export 'head_branch=master' ; export 'author=yegor256' ; pdd -f /dev/null ; bundle install --no-color "--gemfile=$(pwd)/Gemfile" ; bundle exec rake ; sed -i "s/0\.0\.0/${tag}/g" lib/sibit/version.rb ; git add lib/sibit/version.rb ; git commit -m "version set to ${tag}" ; gem build sibit.gemspec ; chmod 0600 ../rubygems.yml ; gem push *.gem --config-file ../rubygems.yml ;
+ su --login r --command /home/r/script.sh
Found 7 lines in /home/r/repo/.pdd
My version is 0.23.1
Ruby version is 3.4.9 at x86_64-linux
Reading from root dir .
Excluding target/**/*
Excluding coverage/**/*
/usr/local/bundle/gems/pdd-0.23.1/lib/pdd/sources.rb:90: warning: undefining the allocator of T_DATA class FileMagic
/home/r/repo/logo.svg is a binary file (3101 bytes)
/home/r/repo/renovate.json is a binary file (107 bytes)
Reading .0pdd.yml ...
Reading .gitattributes ...
Reading .github/typos.toml ...
Reading .github/workflows/actionlint.yml ...
Reading .github/workflows/codecov.yml ...
Reading .github/workflows/copyrights.yml ...
Reading .github/workflows/markdown-lint.yml ...
Reading .github/workflows/pdd.yml ...
Reading .github/workflows/rake.yml ...
Reading .github/workflows/reuse.yml ...
Reading .github/workflows/typos.yml ...
Reading .github/workflows/xcop.yml ...
Reading .github/workflows/yamllint.yml ...
Reading .gitignore ...
Reading .gitleaksignore ...
Reading .pdd ...
Reading .rubocop.yml ...
Reading .rultor.yml ...
Reading Gemfile ...
Reading Gemfile.lock ...
Reading LICENSE.txt ...
Reading LICENSES/MIT.txt ...
Reading README.md ...
Reading REUSE.toml ...
Reading Rakefile ...
Reading bin/sibit ...
Reading cross/alpine.df ...
Reading cross/centos.df ...
Reading cross/debian.df ...
Reading cross/fedora.df ...
Reading cross/opensuse.df ...
Reading cross/rocky.df ...
Reading cross/ubuntu.df ...
Reading cucumber.yml ...
Reading features/cli.feature ...
Reading features/dry.feature ...
Reading features/fake.feature ...
Reading features/gem_package.feature ...
Reading features/step_definitions/steps.rb ...
Reading features/support/env.rb ...
Reading lib/sibit/base58.rb ...
Reading lib/sibit/bech32.rb ...
Reading lib/sibit/bestof.rb ...
Reading lib/sibit/bin.rb ...
Reading lib/sibit/bitcoinchain.rb ...
Reading lib/sibit/blockchain.rb ...
Reading lib/sibit/blockchair.rb ...
Reading lib/sibit/btc.rb ...
Reading lib/sibit/cex.rb ...
Reading lib/sibit/coins.rb ...
Reading lib/sibit/cryptoapis.rb ...
Reading lib/sibit/dry.rb ...
Reading lib/sibit/error.rb ...
Reading lib/sibit/fake.rb ...
Reading lib/sibit/firstof.rb ...
Reading lib/sibit/http.rb ...
Reading lib/sibit/httpproxy.rb ...
Reading lib/sibit/json.rb ...
Reading lib/sibit/key.rb ...
Reading lib/sibit/script.rb ...
Reading lib/sibit/sochain.rb ...
Reading lib/sibit/tx.rb ...
Reading lib/sibit/txbuilder.rb ...
Reading lib/sibit/version.rb ...
Reading lib/sibit.rb ...
Reading sibit.gemspec ...
Reading test/test__helper.rb ...
Reading test/test_base58.rb ...
Reading test/test_bech32.rb ...
Reading test/test_bestof.rb ...
Reading test/test_bin.rb ...
Reading test/test_bitcoinchain.rb ...
Reading test/test_blockchain.rb ...
Reading test/test_blockchair.rb ...
Reading test/test_btc.rb ...
Reading test/test_cex.rb ...
Reading test/test_coins.rb ...
Reading test/test_cross.rb ...
Reading test/test_cryptoapis.rb ...
Reading test/test_dry.rb ...
Reading test/test_fake.rb ...
Reading test/test_firstof.rb ...
Reading test/test_http.rb ...
Reading test/test_httpproxy.rb ...
Reading test/test_json.rb ...
Reading test/test_key.rb ...
Reading test/test_live.rb ...
Reading test/test_realpay.rb ...
Reading test/test_regtest.rb ...
Reading test/test_script.rb ...
Reading test/test_sibit.rb ...
Reading test/test_sochain.rb ...
Reading test/test_tx.rb ...
Reading test/test_txbuilder.rb ...
Bundler 2.6.9 is running, but your lockfile was generated with 2.5.16. Installing Bundler 2.5.16 and restarting using that version.
Fetching gem metadata from https://rubygems.org/.
Fetching bundler 2.5.16
Installing bundler 2.5.16
Fetching gem metadata from https://rubygems.org/.........
Fetching rake 13.4.2
Installing rake 13.4.2
Fetching public_suffix 7.0.5
Installing public_suffix 7.0.5
Fetching addressable 2.9.0
Installing addressable 2.9.0
Fetching ansi 1.6.0
Installing ansi 1.6.0
Fetching contracts 0.17.3
Installing contracts 0.17.3
Fetching base64 0.3.0
Installing base64 0.3.0
Fetching builder 3.3.0
Installing builder 3.3.0
Fetching cucumber-ci-environment 11.0.0
Installing cucumber-ci-environment 11.0.0
Fetching cucumber-messages 32.3.1
Installing cucumber-messages 32.3.1
Fetching cucumber-gherkin 39.1.0
Installing cucumber-gherkin 39.1.0
Fetching cucumber-tag-expressions 8.1.0
Installing cucumber-tag-expressions 8.1.0
Fetching cucumber-core 16.2.0
Installing cucumber-core 16.2.0
Fetching bigdecimal 4.1.2
Installing bigdecimal 4.1.2 with native extensions
Fetching cucumber-cucumber-expressions 19.0.1
Installing cucumber-cucumber-expressions 19.0.1
Fetching cucumber-html-formatter 23.1.0
Installing cucumber-html-formatter 23.1.0
Fetching diff-lcs 1.6.2
Installing diff-lcs 1.6.2
Fetching logger 1.7.0
Installing logger 1.7.0
Fetching mini_mime 1.1.5
Installing mini_mime 1.1.5
Fetching multi_test 1.1.0
Installing multi_test 1.1.0
Fetching ffi 1.17.4 (x86_64-linux-gnu)
Installing ffi 1.17.4 (x86_64-linux-gnu)
Fetching memoist3 1.0.0
Installing memoist3 1.0.0
Fetching sys-uname 1.5.1
Installing sys-uname 1.5.1
Fetching cucumber 11.1.1
Installing cucumber 11.1.1
Fetching prettyprint 0.2.0
Installing prettyprint 0.2.0
Fetching pp 0.6.4
Installing pp 0.6.4
Fetching prism 1.9.0
Installing prism 1.9.0 with native extensions
Fetching erb 6.0.6
Installing erb 6.0.6 with native extensions
Fetching tsort 0.2.0
Installing tsort 0.2.0
Fetching rbs 4.0.3
Installing rbs 4.0.3 with native extensions
Fetching rdoc 8.0.0
Installing rdoc 8.0.0
Fetching io-console 0.8.2
Installing io-console 0.8.2 with native extensions
Fetching reline 0.6.3
Installing reline 0.6.3
Fetching irb 1.18.0
Installing irb 1.18.0
Fetching rspec-support 3.13.7
Installing rspec-support 3.13.7
Fetching rspec-expectations 3.13.5
Installing rspec-expectations 3.13.5
Fetching thor 1.5.0
Installing thor 1.5.0
Fetching aruba 2.4.1
Installing aruba 2.4.1
Fetching ast 2.4.3
Installing ast 2.4.3
Fetching backtrace 0.4.1
Installing backtrace 0.4.1
Fetching crack 1.0.1
Installing crack 1.0.1
Fetching decoor 0.1.0
Installing decoor 0.1.0
Fetching docile 1.4.1
Installing docile 1.4.1
Fetching os 1.1.4
Installing os 1.1.4
Fetching ellipsized 0.3.0
Installing ellipsized 0.3.0
Fetching loog 0.8.0
Installing loog 0.8.0
Fetching tago 0.7.0
Installing tago 0.7.0
Fetching elapsed 0.3.1
Installing elapsed 0.3.1
Fetching qbash 0.8.4
Installing qbash 0.8.4
Fetching donce 0.7.0
Installing donce 0.7.0
Fetching drb 2.2.3
Installing drb 2.2.3
Fetching hashdiff 1.2.1
Installing hashdiff 1.2.1
Fetching iri 0.11.8
Installing iri 0.11.8
Fetching json 2.21.1
Installing json 2.21.1 with native extensions
Fetching language_server-protocol 3.17.0.6
Installing language_server-protocol 3.17.0.6
Fetching lint_roller 1.1.0
Installing lint_roller 1.1.0
Fetching minitest 6.0.6
Installing minitest 6.0.6
Fetching ruby-progressbar 1.13.0
Installing ruby-progressbar 1.13.0
Fetching minitest-reporters 1.8.0
Installing minitest-reporters 1.8.0
Fetching openssl 3.3.3
Installing openssl 3.3.3 with native extensions
Fetching parallel 2.1.0
Installing parallel 2.1.0
Fetching parser 3.3.12.0
Installing parser 3.3.12.0
Fetching regexp_parser 2.12.0
Installing regexp_parser 2.12.0
Fetching retriable 3.8.0
Installing retriable 3.8.0
Fetching retriable_proxy 1.0.2
Installing retriable_proxy 1.0.2
Fetching rubocop-ast 1.50.0
Installing rubocop-ast 1.50.0
Fetching unicode-emoji 4.2.0
Installing unicode-emoji 4.2.0
Fetching unicode-display_width 3.2.0
Installing unicode-display_width 3.2.0
Fetching rubocop 1.88.2
Installing rubocop 1.88.2
Fetching rubocop-elegant 0.7.1
Installing rubocop-elegant 0.7.1
Fetching rubocop-minitest 0.40.0
Installing rubocop-minitest 0.40.0
Fetching rubocop-performance 1.26.1
Installing rubocop-performance 1.26.1
Fetching rubocop-rake 0.7.1
Installing rubocop-rake 0.7.1
Fetching simplecov-html 0.13.2
Installing simplecov-html 0.13.2
Fetching simplecov_json_formatter 0.1.4
Installing simplecov_json_formatter 0.1.4
Fetching simplecov 0.22.0
Installing simplecov 0.22.0
Fetching simplecov-cobertura 3.2.0
Installing simplecov-cobertura 3.2.0
Fetching webmock 3.26.2
Installing webmock 3.26.2
Bundle complete! 20 Gemfile dependencies, 83 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
1 installed gem you directly depend on is looking for funding.
  Run `bundle fund` for details
/usr/local/bundle/gems/bundler-2.5.16/lib/bundler/rubygems_ext.rb:250: warning: method redefined; discarding old encode_with
/usr/local/lib/ruby/3.4.0/rubygems/dependency.rb:341: warning: previous definition of encode_with was here
Started with run options --seed 44581

TestTx
  test_hash_stays_stable_across_calls                            32m PASS0m (0.01s)
  test_output_generates_segwit_script                            32m PASS0m (0.00s)
  test_in_returns_inputs                                         32m PASS0m (0.00s)
  test_rejects_testnet_p2sh_on_mainnet                           32m PASS0m (0.00s)
  test_rejects_wrong_checksum_variant                            32m PASS0m (0.00s)
  test_supports_multiple_outputs                                 32m PASS0m (0.00s)
  test_rejects_unknown_address_version                           32m PASS0m (0.00s)
  test_hash_reverses_txid_bytes_not_nibbles                      32m PASS0m (0.00s)
  test_adds_output                                               32m PASS0m (0.00s)
  test_adds_input                                                32m PASS0m (0.00s)
  test_rejects_mainnet_p2pkh_on_testnet                          32m PASS0m (0.00s)
  test_input_stores_previous_output_hash                         32m PASS0m (0.00s)
  test_output_script_ends_with_checksig                          32m PASS0m (0.00s)
  test_accepts_testnet_segwit_on_testnet                         32m PASS0m (0.00s)
  test_rejects_target_that_decodes_too_short                     32m PASS0m (0.00s)
  test_hash_excludes_witness_for_segwit                          32m PASS0m (0.00s)
  test_creates_empty_transaction                                 32m PASS0m (0.00s)
  test_output_generates_script                                   32m PASS0m (0.00s)
  test_accepts_regtest_segwit_on_regtest                         32m PASS0m (0.00s)
  test_rejects_witness_program_wrong_length                      32m PASS0m (0.00s)
  test_rejects_mainnet_segwit_on_testnet                         32m PASS0m (0.00s)
  test_output_segwit_script_has_correct_length                   32m PASS0m (0.00s)
  test_rejects_target_with_broken_checksum                       32m PASS0m (0.00s)
  test_out_returns_outputs                                       32m PASS0m (0.00s)
  test_generates_hex_payload                                     32m PASS0m (0.00s)
  test_accepts_testnet_p2sh_on_testnet                           32m PASS0m (0.00s)
  test_input_stores_previous_output_index                        32m PASS0m (0.00s)
  test_output_has_correct_value                                  32m PASS0m (0.00s)
  test_generates_transaction_hash                                32m PASS0m (0.00s)
  test_payload_stays_stable_across_calls                         32m PASS0m (0.00s)
  test_input_prev_out_returns_binary_hash                        32m PASS0m (0.00s)
  test_encodes_taproot_as_higher_witness                         32m PASS0m (0.00s)
  test_accepts_testnet_p2pkh_on_testnet                          32m PASS0m (0.00s)
  test_rejects_testnet_segwit_on_mainnet                         32m PASS0m (0.00s)
  test_rejects_testnet_p2pkh_on_mainnet                          32m PASS0m (0.00s)
  test_output_generates_p2sh_script                              32m PASS0m (0.00s)

TestSochain
  test_latest_raises_when_no_data                                32m PASS0m (0.03s)
  test_fees_raises_not_supported                                 32m PASS0m (0.00s)
  test_fetch_price                                               32m PASS0m (0.00s)
  test_block_reads_outputs                                       32m PASS0m (0.00s)
  test_next_of_returns_hash                                      32m PASS0m (0.00s)
  test_next_of_nil_for_zero_hash                                 32m PASS0m (0.00s)
  test_uses_alternate_network                                    32m PASS0m (0.00s)
  test_price_raises_when_no_data                                 32m PASS0m (0.00s)
  test_utxos_raises_without_data                                 32m PASS0m (0.00s)
  test_push_raises_on_bad_status                                 32m PASS0m (0.00s)
  test_block_raises_on_bare_txids                                32m PASS0m (0.00s)
  test_balance_zero_when_no_confirmed_field                      32m PASS0m (0.00s)
  test_fetch_balance                                             32m PASS0m (0.00s)
  test_latest_block                                              32m PASS0m (0.00s)
  test_get_height                                                32m PASS0m (0.00s)
  test_push_posts_hex_as_json                                    32m PASS0m (0.00s)
  test_fetch_utxos                                               32m PASS0m (0.00s)
  test_balance_zero_when_no_data                                 32m PASS0m (0.00s)
  test_utxos_raises_without_txs                                  32m PASS0m (0.00s)

TestBech32
  test_returns_version_zero                                      32m PASS0m (0.00s)
  test_rejects_invalid_character                                 32m PASS0m (0.00s)
  test_encodes_witness_to_testnet_address                        32m PASS0m (0.00s)
  test_rejects_missing_separator                                 32m PASS0m (0.00s)
  test_decodes_p2wpkh_address                                    32m PASS0m (0.00s)
  test_decodes_uppercase_address                                 32m PASS0m (0.00s)
  test_rejects_invalid_checksum                                  32m PASS0m (0.00s)
  test_encodes_witness_to_mainnet_address                        32m PASS0m (0.00s)

TestJson
  test_loads_hash                                                32m PASS0m (0.00s)
  test_post_drops_empty_query                                    32m PASS0m (0.00s)
  test_post_keeps_query                                          32m PASS0m (0.00s)

TestFake
  test_scan_works                                                32m PASS0m (0.00s)
  test_fake_object_works                                         32m PASS0m (0.00s)

TestCross
  test_works_on_opensuse                                         33m SKIP0m (0.00s)
  test_works_on_alpine                                           33m SKIP0m (0.00s)
  test_works_on_ubuntu                                           33m SKIP0m (0.00s)
  test_works_on_fedora                                           33m SKIP0m (0.00s)
  test_works_on_centos                                           33m SKIP0m (0.00s)
  test_works_on_rocky                                            33m SKIP0m (0.00s)
  test_works_on_debian                                           33m SKIP0m (0.00s)

TestCryptoapis
  test_fetch_next_of_block                                       32m PASS0m (0.00s)
  test_price_raises_not_supported                                32m PASS0m (0.00s)
  test_fetch_block                                               32m PASS0m (0.00s)
  test_fetch_height                                              32m PASS0m (0.00s)
  test_push_transaction                                          32m PASS0m (0.00s)
  test_push_sends_json_verbatim                                  32m PASS0m (0.00s)
  test_works_without_api_key                                     32m PASS0m (0.00s)
  test_fees_raises_not_supported                                 32m PASS0m (0.00s)
  test_fetch_latest_block_hash                                   32m PASS0m (0.00s)
  test_next_of_never_returns_own_hash                            32m PASS0m (0.00s)
  test_next_of_missing_payload_raises                            32m PASS0m (0.00s)
  test_utxos_raises_not_supported                                32m PASS0m (0.00s)
  test_fetch_balance                                             32m PASS0m (0.00s)
  test_next_of_latest_block_is_nil                               32m PASS0m (0.00s)
  test_reports_output_value_as_exact_satoshi                     32m PASS0m (0.00s)
  test_fetch_balance_without_rounding_error                      32m PASS0m (0.00s)

TestRealPay
  test_signs_and_pushes_real_self_send                           33m SKIP0m (0.00s)

TestDry
  test_delegates_price                                           32m PASS0m (0.00s)
  test_blocks_push                                               32m PASS0m (0.00s)
  test_responds_to_delegated_methods                             32m PASS0m (0.00s)
  test_delegates_latest                                          32m PASS0m (0.00s)
  test_delegates_balance                                         32m PASS0m (0.00s)
  test_delegates_fees                                            32m PASS0m (0.00s)

TestLive
  test_utxos                                                     33m SKIP0m (0.00s)
  test_latest                                                    33m SKIP0m (0.00s)
  test_height                                                    33m SKIP0m (0.00s)
  test_price                                                     33m SKIP0m (0.00s)
  test_absent_balance                                            33m SKIP0m (0.00s)
  test_balance                                                   33m SKIP0m (0.00s)
  test_next_of                                                   33m SKIP0m (0.00s)
  test_block                                                     33m SKIP0m (0.00s)

TestRegtest
+ docker run --detach --name donce-5a30c4392f1c --add-host host.docker.internal:host-gateway   --publish 42111:18443  ruimarinho/bitcoin-core:28 -regtest -rpcallowip=0.0.0.0/0 -rpcbind=0.0.0.0 -rpcport=18443 -rpcuser=test -rpcpassword=test -fallbackfee=0.0001 -deprecatedrpc=create_bdb /#1364
#1364: Unable to find image 'ruimarinho/bitcoin-core:28' locally
#1364: 28: Pulling from ruimarinho/bitcoin-core
#1364: 0251c4232e40: Pulling fs layer
#1364: 4b16d28ae290: Pulling fs layer
#1364: 3619f16d8d52: Pulling fs layer
#1364: ab8c940792fe: Pulling fs layer
#1364: a6dc994f534b: Pulling fs layer
#1364: ab8c940792fe: Waiting
#1364: a6dc994f534b: Waiting
#1364: 4b16d28ae290: Verifying Checksum
#1364: 4b16d28ae290: Download complete
#1364: 0251c4232e40: Verifying Checksum
#1364: 0251c4232e40: Download complete
#1364: 3619f16d8d52: Verifying Checksum
#1364: 3619f16d8d52: Download complete
#1364: ab8c940792fe: Verifying Checksum
#1364: ab8c940792fe: Download complete
#1364: a6dc994f534b: Verifying Checksum
#1364: a6dc994f534b: Download complete
#1364: 0251c4232e40: Pull complete
#1364: 4b16d28ae290: Pull complete
#1364: 3619f16d8d52: Pull complete
#1364: ab8c940792fe: Pull complete
#1364: a6dc994f534b: Pull complete
#1364: Digest: sha256:1f93ce741760cd0360eba61a7a37432d88ca7680308e268b9d2b136779e0c32a
#1364: Status: Downloaded newer image for ruimarinho/bitcoin-core:28
+ docker logs donce-5a30c4392f1c /#1373
+ docker rm --force donce-5a30c4392f1c /#1382
  test_pays_to_every_standard_address_type                       32m PASS0m (7.88s)
+ docker run --detach --name donce-8ba209ce50e1 --add-host host.docker.internal:host-gateway   --publish 33825:18443  ruimarinho/bitcoin-core:28 -regtest -rpcallowip=0.0.0.0/0 -rpcbind=0.0.0.0 -rpcport=18443 -rpcuser=test -rpcpassword=test -fallbackfee=0.0001 -deprecatedrpc=create_bdb /#1406
+ docker logs donce-8ba209ce50e1 /#1413
+ docker rm --force donce-8ba209ce50e1 /#1420
  test_output_scripts_match_bitcoin_core                         32m PASS0m (2.35s)
+ docker run --detach --name donce-be3cf765d5b0 --add-host host.docker.internal:host-gateway   --publish 42355:18443  ruimarinho/bitcoin-core:28 -regtest -rpcallowip=0.0.0.0/0 -rpcbind=0.0.0.0 -rpcport=18443 -rpcuser=test -rpcpassword=test -fallbackfee=0.0001 -deprecatedrpc=create_bdb /#1446
+ docker logs donce-be3cf765d5b0 /#1453
+ docker rm --force donce-be3cf765d5b0 /#1462
  test_refuses_to_spend_unconfirmed_utxo                         32m PASS0m (2.90s)
+ docker run --detach --name donce-53c99dc82b80 --add-host host.docker.internal:host-gateway   --publish 41847:18443  ruimarinho/bitcoin-core:28 -regtest -rpcallowip=0.0.0.0/0 -rpcbind=0.0.0.0 -rpcport=18443 -rpcuser=test -rpcpassword=test -fallbackfee=0.0001 -deprecatedrpc=create_bdb /#1487
+ docker logs donce-53c99dc82b80 /#1495
+ docker rm --force donce-53c99dc82b80 /#1503
  test_refuses_change_below_dust                                 32m PASS0m (2.89s)
+ docker run --detach --name donce-0533104b6f2a --add-host host.docker.internal:host-gateway   --publish 36255:18443  ruimarinho/bitcoin-core:28 -regtest -rpcallowip=0.0.0.0/0 -rpcbind=0.0.0.0 -rpcport=18443 -rpcuser=test -rpcpassword=test -fallbackfee=0.0001 -deprecatedrpc=create_bdb /#1529
+ docker logs donce-0533104b6f2a /#1536
+ docker rm --force donce-0533104b6f2a /#1544
  test_refuses_address_with_broken_checksum                      32m PASS0m (2.90s)
+ docker run --detach --name donce-6a4887f539c4 --add-host host.docker.internal:host-gateway   --publish 37771:18443  ruimarinho/bitcoin-core:28 -regtest -rpcallowip=0.0.0.0/0 -rpcbind=0.0.0.0 -rpcport=18443 -rpcuser=test -rpcpassword=test -fallbackfee=0.0001 -deprecatedrpc=create_bdb /#1569
+ docker logs donce-6a4887f539c4 /#1576
+ docker rm --force donce-6a4887f539c4 /#1585
  test_multiple_source_addresses                                 32m PASS0m (2.99s)
+ docker run --detach --name donce-c66926d44f23 --add-host host.docker.internal:host-gateway   --publish 33621:18443  ruimarinho/bitcoin-core:28 -regtest -rpcallowip=0.0.0.0/0 -rpcbind=0.0.0.0 -rpcport=18443 -rpcuser=test -rpcpassword=test -fallbackfee=0.0001 -deprecatedrpc=create_bdb /#1609
+ docker logs donce-c66926d44f23 /#1617
+ docker rm --force donce-c66926d44f23 /#1625
  test_sends_payment_in_regtest                                  32m PASS0m (2.85s)
+ docker run --detach --name donce-03c914ef35aa --add-host host.docker.internal:host-gateway   --publish 43711:18443  ruimarinho/bitcoin-core:28 -regtest -rpcallowip=0.0.0.0/0 -rpcbind=0.0.0.0 -rpcport=18443 -rpcuser=test -rpcpassword=test -fallbackfee=0.0001 -deprecatedrpc=create_bdb /#1651
+ docker logs donce-03c914ef35aa /#1661
+ docker rm --force donce-03c914ef35aa /#1669
  test_refuses_payment_without_enough_funds                      32m PASS0m (2.91s)
+ docker run --detach --name donce-9314932f7384 --add-host host.docker.internal:host-gateway   --publish 38537:18443  ruimarinho/bitcoin-core:28 -regtest -rpcallowip=0.0.0.0/0 -rpcbind=0.0.0.0 -rpcport=18443 -rpcuser=test -rpcpassword=test -fallbackfee=0.0001 -deprecatedrpc=create_bdb /#1694
+ docker logs donce-9314932f7384 /#1701
+ docker rm --force donce-9314932f7384 /#1709
  test_sends_change_to_change_address                            32m PASS0m (2.92s)
+ docker run --detach --name donce-2479250d8e3f --add-host host.docker.internal:host-gateway   --publish 43725:18443  ruimarinho/bitcoin-core:28 -regtest -rpcallowip=0.0.0.0/0 -rpcbind=0.0.0.0 -rpcport=18443 -rpcuser=test -rpcpassword=test -fallbackfee=0.0001 -deprecatedrpc=create_bdb /#1734
+ docker logs donce-2479250d8e3f /#1742
+ docker rm --force donce-2479250d8e3f /#1750
  test_spends_from_legacy_address                                32m PASS0m (2.93s)
+ docker run --detach --name donce-31b755e5c9a6 --add-host host.docker.internal:host-gateway   --publish 35843:18443  ruimarinho/bitcoin-core:28 -regtest -rpcallowip=0.0.0.0/0 -rpcbind=0.0.0.0 -rpcport=18443 -rpcuser=test -rpcpassword=test -fallbackfee=0.0001 -deprecatedrpc=create_bdb /#1776
+ docker logs donce-31b755e5c9a6 /#1784
+ docker rm --force donce-31b755e5c9a6 /#1793
  test_roundtrip_payment                                         32m PASS0m (2.94s)
+ docker run --detach --name donce-7acb0e080fc4 --add-host host.docker.internal:host-gateway   --publish 39583:18443  ruimarinho/bitcoin-core:28 -regtest -rpcallowip=0.0.0.0/0 -rpcbind=0.0.0.0 -rpcport=18443 -rpcuser=test -rpcpassword=test -fallbackfee=0.0001 -deprecatedrpc=create_bdb /#1817
+ docker logs donce-7acb0e080fc4 /#1827
+ docker rm --force donce-7acb0e080fc4 /#1835
  test_multiple_inputs_from_same_address                         32m PASS0m (2.99s)
+ docker run --detach --name donce-14e8498e3886 --add-host host.docker.internal:host-gateway   --publish 40561:18443  ruimarinho/bitcoin-core:28 -regtest -rpcallowip=0.0.0.0/0 -rpcbind=0.0.0.0 -rpcport=18443 -rpcuser=test -rpcpassword=test -fallbackfee=0.0001 -deprecatedrpc=create_bdb /#1860
+ docker logs donce-14e8498e3886 /#1868
+ docker rm --force donce-14e8498e3886 /#1876
  test_mixes_legacy_and_witness_inputs                           32m PASS0m (2.92s)
+ docker run --detach --name donce-fc5030921a54 --add-host host.docker.internal:host-gateway   --publish 35201:18443  ruimarinho/bitcoin-core:28 -regtest -rpcallowip=0.0.0.0/0 -rpcbind=0.0.0.0 -rpcport=18443 -rpcuser=test -rpcpassword=test -fallbackfee=0.0001 -deprecatedrpc=create_bdb /#1900
+ docker logs donce-fc5030921a54 /#1907
+ docker rm --force donce-fc5030921a54 /#1915
  test_pays_amount_given_in_btc                                  32m PASS0m (2.90s)
+ docker run --detach --name donce-0293c2ecf860 --add-host host.docker.internal:host-gateway   --publish 41657:18443  ruimarinho/bitcoin-core:28 -regtest -rpcallowip=0.0.0.0/0 -rpcbind=0.0.0.0 -rpcport=18443 -rpcuser=test -rpcpassword=test -fallbackfee=0.0001 -deprecatedrpc=create_bdb /#1940
+ docker logs donce-0293c2ecf860 /#1948
+ docker rm --force donce-0293c2ecf860 /#1957
  test_pays_without_change                                       32m PASS0m (2.90s)
+ docker run --detach --name donce-cda902a0b76f --add-host host.docker.internal:host-gateway   --publish 46493:18443  ruimarinho/bitcoin-core:28 -regtest -rpcallowip=0.0.0.0/0 -rpcbind=0.0.0.0 -rpcport=18443 -rpcuser=test -rpcpassword=test -fallbackfee=0.0001 -deprecatedrpc=create_bdb /#1982
+ docker logs donce-cda902a0b76f /#1991
+ docker rm --force donce-cda902a0b76f /#1999
  test_pays_to_uppercase_address                                 32m PASS0m (2.89s)
+ docker run --detach --name donce-90d6111db896 --add-host host.docker.internal:host-gateway   --publish 42595:18443  ruimarinho/bitcoin-core:28 -regtest -rpcallowip=0.0.0.0/0 -rpcbind=0.0.0.0 -rpcport=18443 -rpcuser=test -rpcpassword=test -fallbackfee=0.0001 -deprecatedrpc=create_bdb /#2023
+ docker logs donce-90d6111db896 /#2032
+ docker rm --force donce-90d6111db896 /#2040
  test_returns_hash_of_confirmed_transaction                     32m PASS0m (2.98s)
+ docker run --detach --name donce-986a7f70603e --add-host host.docker.internal:host-gateway   --publish 42097:18443  ruimarinho/bitcoin-core:28 -regtest -rpcallowip=0.0.0.0/0 -rpcbind=0.0.0.0 -rpcport=18443 -rpcuser=test -rpcpassword=test -fallbackfee=0.0001 -deprecatedrpc=create_bdb /#2064
+ docker logs donce-986a7f70603e /#2071
+ docker rm --force donce-986a7f70603e /#2080
  test_pays_to_script_hash_address                               32m PASS0m (3.24s)
+ docker run --detach --name donce-7aef4bf96085 --add-host host.docker.internal:host-gateway   --publish 36049:18443  ruimarinho/bitcoin-core:28 -regtest -rpcallowip=0.0.0.0/0 -rpcbind=0.0.0.0 -rpcport=18443 -rpcuser=test -rpcpassword=test -fallbackfee=0.0001 -deprecatedrpc=create_bdb /#2106
+ docker logs donce-7aef4bf96085 /#2116
+ docker rm --force donce-7aef4bf96085 /#2124
  test_multihop_payment_chain                                    32m PASS0m (2.99s)
+ docker run --detach --name donce-0da3f92cc42a --add-host host.docker.internal:host-gateway   --publish 46745:18443  ruimarinho/bitcoin-core:28 -regtest -rpcallowip=0.0.0.0/0 -rpcbind=0.0.0.0 -rpcport=18443 -rpcuser=test -rpcpassword=test -fallbackfee=0.0001 -deprecatedrpc=create_bdb /#2149
+ docker logs donce-0da3f92cc42a /#2156
+ docker rm --force donce-0da3f92cc42a /#2164
  test_sibit_generated_keys_send_payment                         32m PASS0m (2.91s)

TestBlockchair
  test_next_of_raises_not_supported                              32m PASS0m (0.00s)
  test_push_transaction                                          32m PASS0m (0.00s)
  test_fetch_balance                                             32m PASS0m (0.00s)
  test_height_raises_not_supported                               32m PASS0m (0.00s)
  test_returns_zero_for_unknown_address                          32m PASS0m (0.00s)
  test_push_with_api_key                                         32m PASS0m (0.00s)
  test_utxos_raises_not_supported                                32m PASS0m (0.00s)
  test_balance_url_omits_key_when_nil                            32m PASS0m (0.00s)
  test_latest_raises_not_supported                               32m PASS0m (0.00s)
  test_push_sends_body_verbatim                                  32m PASS0m (0.00s)
  test_url_encodes_api_key                                       32m PASS0m (0.00s)
  test_block_raises_not_supported                                32m PASS0m (0.00s)
  test_price_raises_not_supported                                32m PASS0m (0.00s)
  test_uses_api_key_in_requests                                  32m PASS0m (0.00s)
  test_fees_raises_not_supported                                 32m PASS0m (0.00s)

TestSibit
  test_refuses_to_sweep_when_fee_leaves_no_room                  32m PASS0m (0.01s)
  test_fail_if_not_enough_funds                                  32m PASS0m (0.01s)
  test_generate_key                                              32m PASS0m (0.00s)
  test_creates_segwit_address                                    32m PASS0m (0.00s)
  test_refuses_when_funds_barely_exceed_amount                   32m PASS0m (0.01s)
  test_refuses_when_change_would_be_dust                         32m PASS0m (0.01s)
  test_send_payment_skips_utxo_below_trust                       32m PASS0m (0.01s)
  test_retry_with_reordered_utxos_conflicts                      32m PASS0m (0.02s)
  test_send_payment_with_xl_minus_fee                            32m PASS0m (0.02s)
  test_send_payment                                              32m PASS0m (0.01s)
  test_balance_with_trust_sums_confirmed_utxos                   32m PASS0m (0.00s)
  test_balance_default_trust_uses_api_balance                    32m PASS0m (0.00s)
  test_fetch_current_price                                       32m PASS0m (0.00s)
  test_get_latest_block                                          32m PASS0m (0.00s)
  test_get_balance                                               32m PASS0m (0.00s)
  test_scan                                                      32m PASS0m (0.00s)
  test_generate_key_and_prints                                   32m PASS0m (0.00s)
  test_balance_rejects_negative_trust                            32m PASS0m (0.00s)

TestBin
849ea1efab8daf489d0d66de501b3da7d624980a1f37102589f055fa982d55a9
  test_pay_dry_does_not_push_transaction                         32m PASS0m (0.02s)
50000
  test_balance_via_sochain_api                                   32m PASS0m (0.00s)
849ea1efab8daf489d0d66de501b3da7d624980a1f37102589f055fa982d55a9
  test_pay_with_max_amount_uses_balance                          32m PASS0m (0.01s)
00000000abc123
  test_latest_via_cryptoapis_api                                 32m PASS0m (0.00s)
7
  test_blockchair_balance_uses_env_key                           32m PASS0m (0.00s)
  test_generates_key_via_command_line                            32m PASS0m (0.37s)

TestBestOf
  test_raises_on_disagreement_without_majority                   32m PASS0m (0.00s)
  test_all_fail                                                  32m PASS0m (0.00s)
  test_two_apis                                                  32m PASS0m (0.00s)
  test_push_stops_at_first_success                               32m PASS0m (0.00s)
  test_not_array                                                 32m PASS0m (0.00s)
  test_returns_strict_majority                                   32m PASS0m (0.00s)
  test_one_apis                                                  32m PASS0m (0.00s)

TestBase58
  test_decodes_single_digit                                      32m PASS0m (0.00s)
  test_roundtrip_encode_decode                                   32m PASS0m (0.00s)
  test_encodes_hex_to_base58                                     32m PASS0m (0.00s)
  test_different_inputs_produce_different_checksums              32m PASS0m (0.00s)
  test_preserves_leading_zeros_on_encode                         32m PASS0m (0.00s)
  test_checksum_is_deterministic                                 32m PASS0m (0.00s)
  test_encodes_small_number                                      32m PASS0m (0.00s)
  test_computes_checksum                                         32m PASS0m (0.00s)
  test_preserves_leading_ones_on_decode                          32m PASS0m (0.00s)
  test_decodes_base58_to_hex                                     32m PASS0m (0.00s)

TestKey
  test_imports_wif_mainnet_compressed                            32m PASS0m (0.00s)
  test_rejects_curve_order                                       32m PASS0m (0.00s)
  test_imports_wif_mainnet_uncompressed                          32m PASS0m (0.00s)
  test_signs_empty_data                                          32m PASS0m (0.00s)
  test_verify_returns_false_for_wrong_data                       32m PASS0m (0.00s)
  test_wif_and_hex_produce_same_address                          32m PASS0m (0.00s)
  test_uppercase_and_lowercase_produce_same_key                  32m PASS0m (0.00s)
  test_generates_unique_keys                                     32m PASS0m (0.00s)
  test_creates_key_from_private                                  32m PASS0m (0.00s)
  test_bech32_address_starts_with_bc1q                           32m PASS0m (0.00s)
  test_returns_compressed_public_key                             32m PASS0m (0.00s)
  test_imports_wif_testnet_uncompressed                          32m PASS0m (0.00s)
  test_rejects_private_key_above_curve_order                     32m PASS0m (0.00s)
  test_base58_address_starts_with_one                            32m PASS0m (0.00s)
  test_signature_not_verifiable_by_different_key                 32m PASS0m (0.01s)
  test_generates_random_key                                      32m PASS0m (0.00s)
  test_derives_correct_base58_address                            32m PASS0m (0.00s)
  test_rejects_above_curve_order                                 32m PASS0m (0.00s)
  test_accepts_maximum_private_key                               32m PASS0m (0.00s)
  test_verify_returns_false_for_invalid_signature                32m PASS0m (0.00s)
  test_signature_is_der_encoded                                  32m PASS0m (0.00s)
  test_rejects_wif_with_invalid_checksum                         32m PASS0m (0.00s)
  test_signatures_differ_for_same_data                           32m PASS0m (0.00s)
  test_public_key_length_is_sixty_six                            32m PASS0m (0.00s)
  test_different_keys_produce_different_signatures               32m PASS0m (0.01s)
  test_accepts_uppercase_hex                                     32m PASS0m (0.00s)
  test_network_override_from_wif                                 32m PASS0m (0.00s)
  test_rejects_invalid_private_key_zero                          32m PASS0m (0.00s)
  test_generated_key_survives_roundtrip                          32m PASS0m (0.00s)
  test_rejects_wif_with_invalid_version                          32m PASS0m (0.00s)
  test_imports_wif_testnet_compressed                            32m PASS0m (0.00s)
  test_derives_correct_bech32_address                            32m PASS0m (0.00s)
  test_accepts_minimum_private_key                               32m PASS0m (0.00s)
  test_signs_large_data                                          32m PASS0m (0.00s)
  test_signs_and_verifies                                        32m PASS0m (0.00s)
  test_regtest_bech32_starts_with_bcrt1q                         32m PASS0m (0.00s)

TestFirstOf
  test_all_fail                                                  32m PASS0m (0.00s)
  test_two_apis                                                  32m PASS0m (0.00s)
  test_not_array                                                 32m PASS0m (0.00s)
  test_one_apis                                                  32m PASS0m (0.00s)

TestCoins
  test_converts_float_amount_without_drift                       32m PASS0m (0.00s)
  test_rejects_sub_satoshi_precision                             32m PASS0m (0.00s)
  test_rejects_non_numeric_amount                                32m PASS0m (0.00s)
  test_converts_small_fraction_btc_exactly                       32m PASS0m (0.00s)
  test_converts_two_decimal_btc_exactly                          32m PASS0m (0.00s)

TestBitcoinchain
  test_fetch_balance                                             32m PASS0m (0.00s)
  test_reports_output_value_as_exact_satoshi                     32m PASS0m (0.00s)
  test_fetch_hash                                                32m PASS0m (0.00s)
  test_fetch_balance_without_rounding_error                      32m PASS0m (0.00s)
  test_fetch_block                                               32m PASS0m (0.00s)

TestScript
  test_parses_p2wpkh_script                                      32m PASS0m (0.00s)
  test_rejects_wrong_hash_length                                 32m PASS0m (0.00s)
  test_extracts_segwit_address_from_p2wpkh                       32m PASS0m (0.00s)
  test_handles_empty_script                                      32m PASS0m (0.00s)
  test_rejects_wrong_op_hash160                                  32m PASS0m (0.00s)
  test_rejects_wrong_op_dup                                      32m PASS0m (0.00s)
  test_returns_nil_hash160_for_non_p2pkh                         32m PASS0m (0.00s)
  test_extracts_address_from_script                              32m PASS0m (0.00s)
  test_parses_p2pkh_script                                       32m PASS0m (0.00s)
  test_rejects_too_short_script                                  32m PASS0m (0.00s)
  test_rejects_wrong_witness_version                             32m PASS0m (0.00s)
  test_extracts_hash160_from_p2wpkh                              32m PASS0m (0.00s)
  test_rejects_non_p2pkh_script                                  32m PASS0m (0.00s)
  test_returns_nil_address_for_non_p2pkh                         32m PASS0m (0.00s)
  test_extracts_hash160_from_script                              32m PASS0m (0.00s)

TestBlockchain
  test_height                                                    32m PASS0m (0.00s)
  test_rejects_unknown_currency                                  32m PASS0m (0.00s)
  test_never_rounds_small_regular_fee_to_zero                    32m PASS0m (0.00s)
  test_height_raises_when_absent                                 32m PASS0m (0.00s)
  test_reads_balance                                             32m PASS0m (0.00s)
  test_balance_raises_on_server_error                            32m PASS0m (0.00s)
  test_next_of                                                   33m SKIP0m (0.00s)
  test_balance_raises_when_absent                                32m PASS0m (0.00s)
  test_push_wraps_body_in_tx_form                                32m PASS0m (0.00s)
  test_fetch_block                                               32m PASS0m (0.00s)

TestHttp
  test_creates_http_client                                       32m PASS0m (0.00s)
  test_enables_ssl                                               32m PASS0m (0.00s)
  test_sets_read_timeout                                         32m PASS0m (0.00s)

TestTxBuilder
  test_rejects_change_below_dust                                 32m PASS0m (0.00s)
  test_returns_inputs_via_in_method                              32m PASS0m (0.00s)
  test_rejects_change_that_would_be_negative                     32m PASS0m (0.00s)
  test_supports_multiple_outputs                                 32m PASS0m (0.00s)
  test_skips_change_when_exactly_zero                            32m PASS0m (0.00s)
  test_skips_change_when_leave_fee_is_false                      32m PASS0m (0.00s)
  test_builds_transaction_with_hash                              32m PASS0m (0.00s)
  test_returns_outputs_via_out_method                            32m PASS0m (0.00s)
  test_supports_multiple_inputs                                  32m PASS0m (0.00s)
  test_creates_change_output                                     32m PASS0m (0.00s)
  test_serializes_to_hex                                         32m PASS0m (0.00s)
  test_input_builder_stores_all_fields                           32m PASS0m (0.00s)

TestBtc
  test_fetch_next_of_block                                       32m PASS0m (0.00s)
  test_get_balance                                               32m PASS0m (0.00s)
  test_fetch_next_of_raises_on_missing_block                     32m PASS0m (0.00s)
  test_utxos_never_duplicates_multi_output_funding               32m PASS0m (0.00s)
  test_utxos_skips_outputs_for_other_addresses                   32m PASS0m (0.00s)
  test_utxos_takes_index_from_tx_output_n                        32m PASS0m (0.01s)
  test_utxos_raises_when_tx_output_n_missing                     32m PASS0m (0.00s)
  test_fetch_latest_raises_on_missing_data                       32m PASS0m (0.00s)
  test_fetch_block                                               32m PASS0m (0.00s)
  test_fees_raises_not_supported                                 32m PASS0m (0.00s)
  test_price_raises_not_supported                                32m PASS0m (0.00s)
  test_fetch_utxos_accumulates_across_addresses                  32m PASS0m (0.01s)
  test_get_price                                                 32m PASS0m (0.00s)
  test_block_sets_next_to_nil_for_latest                         32m PASS0m (0.00s)
  test_txns_raises_on_empty_list                                 32m PASS0m (0.00s)
  test_fetch_latest_block_hash                                   32m PASS0m (0.00s)
  test_fetch_block_broken                                        32m PASS0m (0.00s)
  test_fetch_utxos_skips_outputs_for_other_address               32m PASS0m (0.00s)
  test_balance_raises_on_api_error                               32m PASS0m (0.00s)
  test_utxos_returns_empty_when_list_missing                     32m PASS0m (0.00s)
  test_push_raises_not_supported                                 32m PASS0m (0.00s)
  test_get_zero_balance                                          32m PASS0m (0.00s)
  test_utxos_accumulates_across_addresses                        32m PASS0m (0.01s)
  test_fetch_utxos_raises_when_address_not_found                 32m PASS0m (0.00s)
  test_fetch_height_raises_on_missing_block                      32m PASS0m (0.00s)
  test_block_raises_on_missing_data                              32m PASS0m (0.00s)
  test_fetch_utxos_for_single_address                            32m PASS0m (0.00s)
  test_get_empty_balance                                         32m PASS0m (0.00s)
  test_fetch_height_raises_on_missing_height                     32m PASS0m (0.00s)
  test_get_zero_balance_no_txns                                  32m PASS0m (0.00s)
  test_fetch_next_of_returns_nil_for_latest                      32m PASS0m (0.00s)
  test_fetch_height                                              32m PASS0m (0.00s)
  test_balance_raises_on_malformed_response                      32m PASS0m (0.00s)
  test_utxos_raises_when_data_missing                            32m PASS0m (0.00s)
  test_utxos_emits_only_the_unspent_output                       32m PASS0m (0.00s)
  test_fetch_utxos_returns_empty_when_list_is_nil                32m PASS0m (0.00s)

TestHttpProxy
  test_configures_proxy_user                                     32m PASS0m (0.00s)
  test_sets_read_timeout                                         32m PASS0m (0.00s)
  test_parses_port_with_auth                                     32m PASS0m (0.00s)
  test_creates_http_client                                       32m PASS0m (0.00s)
  test_parses_address_with_auth                                  32m PASS0m (0.00s)
  test_configures_proxy_address                                  32m PASS0m (0.00s)
  test_configures_proxy_password                                 32m PASS0m (0.00s)
  test_enables_ssl                                               32m PASS0m (0.00s)
  test_configures_proxy_port                                     32m PASS0m (0.00s)

Finished in 64.17143s
317 tests, 435 assertions, 32m0 failures, 0 errors, 0m33m17 skips0m
Coverage report generated for test to /home/r/repo/coverage.
Line Coverage: 92.06% (1298 / 1410)
Coverage report generated for test to /home/r/repo/coverage/coverage.xml.
Line Coverage: 92.06% (1298 / 1410)
+ bundle exec ruby lib/sibit/base58.rb /#2178
+ bundle exec ruby lib/sibit/bech32.rb /#2189
+ bundle exec ruby lib/sibit/bestof.rb /#2200
+ bundle exec ruby lib/sibit/bin.rb /#2211
+ bundle exec ruby lib/sibit/bitcoinchain.rb /#2222
+ bundle exec ruby lib/sibit/blockchain.rb /#2233
+ bundle exec ruby lib/sibit/blockchair.rb /#2244
+ bundle exec ruby lib/sibit/btc.rb /#2255
+ bundle exec ruby lib/sibit/cex.rb /#2266
+ bundle exec ruby lib/sibit/coins.rb /#2277
+ bundle exec ruby lib/sibit/cryptoapis.rb /#2288
+ bundle exec ruby lib/sibit/dry.rb /#2299
+ bundle exec ruby lib/sibit/error.rb /#2310
+ bundle exec ruby lib/sibit/fake.rb /#2321
+ bundle exec ruby lib/sibit/firstof.rb /#2332
+ bundle exec ruby lib/sibit/http.rb /#2343
+ bundle exec ruby lib/sibit/httpproxy.rb /#2354
+ bundle exec ruby lib/sibit/json.rb /#2365
+ bundle exec ruby lib/sibit/key.rb /#2376
+ bundle exec ruby lib/sibit/script.rb /#2387
+ bundle exec ruby lib/sibit/sochain.rb /#2398
+ bundle exec ruby lib/sibit/tx.rb /#2409
+ bundle exec ruby lib/sibit/txbuilder.rb /#2420
+ bundle exec ruby lib/sibit/version.rb /#2431
+ bundle exec ruby lib/sibit.rb /#2442
/usr/local/bin/ruby -S bundle exec cucumber
Using the default profile...
90m# SPDX-FileCopyrightText: Copyright (c) 2019-2026 Yegor Bugayenko0m
90m# SPDX-License-Identifier: MIT0m
Feature: Command Line Processing
  As a holder of BTC I want to be able to use sibit

  Scenario: Help can be printed        90m# features/cli.feature:60m
    32mWhen I run bin/sibit with "32m1m--help0m0m32m"90m # features/step_definitions/steps.rb:280m0m
    32mThen Exit code is zero90m             # features/step_definitions/steps.rb:420m0m
    32mAnd Stdout contains "32m1mCommands:0m0m32m"90m    # features/step_definitions/steps.rb:340m0m

  Scenario: Bitcoin price can be retrieved         90m# features/cli.feature:110m
    32mWhen I run bin/sibit with "32m1mprice --attempts=40m0m32m"90m # features/step_definitions/steps.rb:280m0m
    32mThen Exit code is zero90m                         # features/step_definitions/steps.rb:420m0m

  Scenario: Bitcoin latest block hash can be retrieved  90m# features/cli.feature:150m
    32mWhen I run bin/sibit with "32m1mlatest --api=blockchain0m0m32m"90m # features/step_definitions/steps.rb:280m0m
    32mThen Exit code is zero90m                              # features/step_definitions/steps.rb:420m0m

  Scenario: Bitcoin private key can be generated 90m# features/cli.feature:190m
    32mWhen I run bin/sibit with "32m1mgenerate0m0m32m"90m         # features/step_definitions/steps.rb:280m0m
    32mThen Exit code is zero90m                       # features/step_definitions/steps.rb:420m0m

  Scenario: Bitcoin address can be created                                                              90m# features/cli.feature:230m
    32mWhen I run bin/sibit with "32m1mcreate 46feba063e9b59a8ae0dba68abd39a3cb8f52089e776576d6eb1bb5bfec123d10m0m32m"90m # features/step_definitions/steps.rb:280m0m
    32mThen Exit code is zero90m                                                                              # features/step_definitions/steps.rb:420m0m

  Scenario: Bitcoin address can be created with base58 option at the end                                         90m# features/cli.feature:270m
    32mWhen I run bin/sibit with "32m1mcreate 46feba063e9b59a8ae0dba68abd39a3cb8f52089e776576d6eb1bb5bfec123d1 --base580m0m32m"90m # features/step_definitions/steps.rb:280m0m
    32mThen Exit code is zero90m                                                                                       # features/step_definitions/steps.rb:420m0m

  Scenario: Bitcoin address can be created with base58 option before command                                     90m# features/cli.feature:310m
    32mWhen I run bin/sibit with "32m1m--base58 create 46feba063e9b59a8ae0dba68abd39a3cb8f52089e776576d6eb1bb5bfec123d10m0m32m"90m # features/step_definitions/steps.rb:280m0m
    32mThen Exit code is zero90m                                                                                       # features/step_definitions/steps.rb:420m0m

  Scenario: Bitcoin balance can be checked                                           90m# features/cli.feature:350m
    32mWhen I run bin/sibit with "32m1mbalance 1MZT1fa6y8H9UmbZV6HqKF4UY41o9MGT5f --verbose0m0m32m"90m # features/step_definitions/steps.rb:280m0m
    32mThen Exit code is zero90m                                                           # features/step_definitions/steps.rb:420m0m

  Scenario: Bitcoin fees can be printed                   90m# features/cli.feature:390m
    32mWhen I run bin/sibit with "32m1mfees --verbose --api=fake0m0m32m"90m # features/step_definitions/steps.rb:280m0m
    32mThen Exit code is zero90m                                # features/step_definitions/steps.rb:420m0m

  Scenario: Pay help shows all options     90m# features/cli.feature:430m
    32mWhen I run bin/sibit with "32m1mpay --help0m0m32m"90m # features/step_definitions/steps.rb:280m0m
    32mThen Exit code is zero90m                 # features/step_definitions/steps.rb:420m0m
    32mAnd Stdout contains "32m1m--skip-utxo0m0m32m"90m      # features/step_definitions/steps.rb:340m0m
    32mAnd Stdout contains "32m1m--price0m0m32m"90m          # features/step_definitions/steps.rb:340m0m

  Scenario: Unknown option shows error message 90m# features/cli.feature:490m
    32mWhen I run bin/sibit with "32m1mgenerate --foo0m0m32m"90m # features/step_definitions/steps.rb:280m0m
    32mThen Exit code is not zero90m                 # features/step_definitions/steps.rb:460m0m
    32mAnd Stdout contains "32m1mUnknown option0m0m32m"90m       # features/step_definitions/steps.rb:340m0m

Feature: Command Line Processing
  As a holder of BTC I want to use sibit in dry mode

  Scenario: Bitcoin payment can be sent                                                                                                                                                                                                 90m# features/dry.feature:60m
    32mWhen I run bin/sibit with "32m1mpay --dry --verbose --api=fake --proxy=localhost:3128 999999 XL- 46feba063e9b59a8ae0dba68abd39a3cb8f52089e776576d6eb1bb5bfec123d1 1MZT1fa6y8H9UmbZV6HqKF4UY41o9MGT5f 1Fsyq5YGe8zbSjLS8YsDnZWM8U6AYMR6ZD0m0m32m"90m # features/step_definitions/steps.rb:280m0m
    32mThen Exit code is not zero90m                                                                                                                                                                                                          # features/step_definitions/steps.rb:460m0m
    32mThen Stdout contains "32m1mUTXO arrived to 1JvCsJtLmCxEk7ddZFnVkGXpr9uhxZPmJi is incorrect0m0m32m"90m                                                                                                                                              # features/step_definitions/steps.rb:340m0m

Feature: Command Line Processing
  As a holder of BTC I want to use sibit with fake provider

  Scenario: Bitcoin price can be retrieved                    90m# features/fake.feature:60m
    32mWhen I run bin/sibit with "32m1mprice --attempts=4 --api=fake0m0m32m"90m # features/step_definitions/steps.rb:280m0m
    32mThen Exit code is zero90m                                    # features/step_definitions/steps.rb:420m0m

  Scenario: Bitcoin latest block hash can be retrieved 90m# features/fake.feature:100m
    32mWhen I run bin/sibit with "32m1mlatest --api=fake0m0m32m"90m      # features/step_definitions/steps.rb:280m0m
    32mThen Exit code is zero90m                             # features/step_definitions/steps.rb:420m0m

  Scenario: Bitcoin balance can be checked                                                      90m# features/fake.feature:140m
    32mWhen I run bin/sibit with "32m1mbalance 1MZT1fa6y8H9UmbZV6HqKF4UY41o9MGT5f --verbose --api=fake0m0m32m"90m # features/step_definitions/steps.rb:280m0m
    32mThen Exit code is zero90m                                                                      # features/step_definitions/steps.rb:420m0m

  Scenario: Bitcoin fees can be printed                   90m# features/fake.feature:180m
    32mWhen I run bin/sibit with "32m1mfees --verbose --api=fake0m0m32m"90m # features/step_definitions/steps.rb:280m0m
    32mThen Exit code is zero90m                                # features/step_definitions/steps.rb:420m0m

  Scenario: Bitcoin payment can be sent                                                                                                                                                                                           90m# features/fake.feature:220m
    32mWhen I run bin/sibit with "32m1mpay --verbose --api=fake --proxy=localhost:3128 999999 XL- 46feba063e9b59a8ae0dba68abd39a3cb8f52089e776576d6eb1bb5bfec123d1 1MZT1fa6y8H9UmbZV6HqKF4UY41o9MGT5f 1Fsyq5YGe8zbSjLS8YsDnZWM8U6AYMR6ZD0m0m32m"90m # features/step_definitions/steps.rb:280m0m
    32mThen Exit code is not zero90m                                                                                                                                                                                                    # features/step_definitions/steps.rb:460m0m
    32mThen Stdout contains "32m1mUTXO arrived to 1JvCsJtLmCxEk7ddZFnVkGXpr9uhxZPmJi is incorrect0m0m32m"90m                                                                                                                                        # features/step_definitions/steps.rb:340m0m

Feature: Gem Package
  As a source code writer I want to be able to
  package the Gem into .gem file

  Scenario: Gem can be packaged                  90m# features/gem_package.feature:70m
    32mGiven It is Unix90m                             # features/step_definitions/steps.rb:620m0m
    32mGiven I have a "32m1mexecs.rb0m0m32m" file with content:90m # features/step_definitions/steps.rb:230m0m
32m      """0m
32m      #!/usr/bin/env ruby0m
32m      require 'rubygems'0m
32m      spec = Gem::Specification::load('./spec.rb')0m
32m      if spec.executables.empty?0m
32m        fail 'no executables: ' + File.read('./spec.rb')0m
32m      end0m
32m      """0m
    32mWhen I run bash with:90m                        # features/step_definitions/steps.rb:560m0m
32m      """0m
32m      cd sibit0m
32m      gem build sibit.gemspec0m
32m      gemfile=$(ls -t sibit-*.gem | head -1)0m
32m      gem specification --ruby "$gemfile" > ../spec.rb0m
32m      cd ..0m
32m      ruby execs.rb0m
32m      """0m
    32mThen Exit code is zero90m                       # features/step_definitions/steps.rb:420m0m

18 scenarios (32m18 passed0m)
44 steps (32m44 passed0m)
0m7.901s
1m32m┌──────────────────────────────────────────────────────────────────────────────┐0m0m
1m32m│0m0m Share your Cucumber Report with your team at 4m1m36mhttps://reports.cucumber.io0m0m0m     1m32m│0m0m
1m32m│0m0m                                                                              1m32m│0m0m
1m32m│0m0m Command line option:    36m--publish0m                                            1m32m│0m0m
1m32m│0m0m Environment variable:   36mCUCUMBER_PUBLISH_ENABLED0m=36mtrue0m                        1m32m│0m0m
1m32m│0m0m cucumber.yml:           36mdefault: --publish0m                                   1m32m│0m0m
1m32m│0m0m                                                                              1m32m│0m0m
1m32m│0m0m More information at 4m1m36mhttps://cucumber.io/docs/cucumber/environment-variables/0m0m0m 1m32m│0m0m
1m32m│0m0m                                                                              1m32m│0m0m
1m32m│0m0m To disable this message, specify 1mCUCUMBER_PUBLISH_QUIET=true0m or use the      1m32m│0m0m
1m32m│0m0m 1m--publish-quiet0m option. You can also add this to your 1mcucumber.yml:0m          1m32m│0m0m
1m32m│0m0m 1mdefault: --publish-quiet0m                                                     1m32m│0m0m
1m32m└──────────────────────────────────────────────────────────────────────────────┘0m0m
Running RuboCop...
Inspecting 59 files
32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m

59 files inspected, 32mno offenses0m detected
[__rultor db79427] version set to 0.34.2
 1 file changed, 1 insertion(+), 1 deletion(-)
  Successfully built RubyGem
  Name: sibit
  Version: 0.34.2
  File: sibit-0.34.2.gem
Pushing gem to https://rubygems.org...
Successfully registered gem: sibit (0.34.2)
+ mv /home/r/repo .
++ whoami
+ chown -R root repo
+ '[' -n '' ']'
++ whoami
+ sudo chown -R ubuntu repo
+ cd repo
+ git checkout __rultor
Already on '__rultor'
+ git tag 0.34.2 -m '0.34.2: tagged by rultor.com'
+ git reset --hard
HEAD is now at db79427 version set to 0.34.2
+ git clean -fd
+ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
+ git branch -D __rultor
Deleted branch __rultor (was db79427).
+ git push --all origin
Everything up-to-date
+ git push --tags origin
To github.com:yegor256/sibit.git
 * [new tag]         0.34.2 -> 0.34.2
container 226e5b6e284f824dfc53528fad5cdb53a440093343b2065c7aae7f5a3b35c6a7 is dead
Sat Jul 25 07:04:28 UTC 2026