++ dirname ./run.sh + cd . + echo 1272 + echo '2.0-SNAPSHOT BUILD' 2.0-SNAPSHOT BUILD + date Wed Jun 25 08:21:34 UTC 2025 + uptime 08:21:34 up 0 min, 0 users, load average: 0.92, 0.27, 0.10 + head=git@github.com:cqfn/pdd.git + ff=default + image=yegor256/ruby + rebase=false + squash=false + head_branch=master + author=yegor256 + tag=0.24.1 + vars=('--env=head=git@github.com:cqfn/pdd.git' '--env=tag=0.24.1' '--env=scripts=( '\''export '\''\'\'''\''head=git@github.com:cqfn/pdd.git'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''tag=0.24.1'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''head_branch=master'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''author=yegor256'\''\'\'''\'''\'' '\'';'\'' '\''pdd -f /dev/null'\'' '\'';'\'' '\''bundle install --no-color'\'' '\'';'\'' '\''[[ "${tag}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] || exit -1'\'' '\'';'\'' '\''bundle exec rake'\'' '\'';'\'' '\''rm -rf *.gem'\'' '\'';'\'' '\''sed -i "s/0\.0\.0/${tag}/g" lib/pdd/version.rb'\'' '\'';'\'' '\''git add lib/pdd/version.rb'\'' '\'';'\'' '\''git commit -m "version set to ${tag}"'\'' '\'';'\'' '\''gem build pdd.gemspec'\'' '\'';'\'' '\''chmod 0600 ../rubygems.yml'\'' '\'';'\'' '\''gem push *.gem --config-file ../rubygems.yml'\'' '\'';'\'' )' '--env=head_branch=master' '--env=author=yegor256') + scripts=('export '\''head=git@github.com:cqfn/pdd.git'\''' ';' 'export '\''tag=0.24.1'\''' ';' 'export '\''head_branch=master'\''' ';' 'export '\''author=yegor256'\''' ';' 'pdd -f /dev/null' ';' 'bundle install --no-color' ';' '[[ "${tag}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] || exit -1' ';' 'bundle exec rake' ';' 'rm -rf *.gem' ';' 'sed -i "s/0\.0\.0/${tag}/g" lib/pdd/version.rb' ';' 'git add lib/pdd/version.rb' ';' 'git commit -m "version set to ${tag}"' ';' 'gem build pdd.gemspec' ';' 'chmod 0600 ../rubygems.yml' ';' 'gem push *.gem --config-file ../rubygems.yml' ';') + directory= + container=cqfn_pdd_243 + as_root=false + set -e -o pipefail + hostname ip-172-31-23-52 + pwd /tmp/rultor-0vYX + 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 git@github.com:cqfn/pdd.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 '\''head=git@github.com:cqfn/pdd.git'\''' ']' + cd .. + cat + '[' false = true ']' + cat + chmod a+x entry.sh + cat + echo 'export '\''head=git@github.com:cqfn/pdd.git'\''' ';' 'export '\''tag=0.24.1'\''' ';' 'export '\''head_branch=master'\''' ';' 'export '\''author=yegor256'\''' ';' 'pdd -f /dev/null' ';' 'bundle install --no-color' ';' '[[ "${tag}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] || exit -1' ';' 'bundle exec rake' ';' 'rm -rf *.gem' ';' 'sed -i "s/0\.0\.0/${tag}/g" lib/pdd/version.rb' ';' 'git add lib/pdd/version.rb' ';' 'git commit -m "version set to ${tag}"' ';' 'gem build pdd.gemspec' ';' 'chmod 0600 ../rubygems.yml' ';' 'gem push *.gem --config-file ../rubygems.yml' ';' + sensitive=() + set -ex -o pipefail + '[' -z 0.24.1 ']' + [[ 0.24.1 =~ ^[a-zA-Z0-9\.\-]+$ ]] + echo 'tag name is valid: "0.24.1"' tag name is valid: "0.24.1" + cd repo ++ git tag -l 0.24.1 + '[' -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.11 ++ bc ++ echo 0.11 '>' 30 + '[' 0 -eq 1 ']' + echo 'load average is 0.11, low enough to run a new Docker container' load average is 0.11, 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 72049b7b8f26: Pulling fs layer cac8156a957a: Pulling fs layer a2678613884c: Pulling fs layer a5c662499587: Pulling fs layer 36160d2877bb: Pulling fs layer 40bfde081b4e: Pulling fs layer e17fd6a8908f: Pulling fs layer 4f4fb700ef54: Pulling fs layer d5de12645ff5: Pulling fs layer 521a1fd9d30a: Pulling fs layer 159470902a51: Pulling fs layer b5ada550863b: Pulling fs layer c3410fe156ab: Pulling fs layer e17a5e990a4d: Pulling fs layer a5c662499587: Waiting 36160d2877bb: Waiting 40bfde081b4e: Waiting e17fd6a8908f: Waiting 4f4fb700ef54: Waiting d5de12645ff5: Waiting 521a1fd9d30a: Waiting 159470902a51: Waiting b5ada550863b: Waiting c3410fe156ab: Waiting e17a5e990a4d: Waiting cac8156a957a: Verifying Checksum cac8156a957a: Download complete 72049b7b8f26: Verifying Checksum 72049b7b8f26: Download complete a2678613884c: Verifying Checksum a2678613884c: Download complete 36160d2877bb: Verifying Checksum 36160d2877bb: Download complete e17fd6a8908f: Verifying Checksum e17fd6a8908f: Download complete 4f4fb700ef54: Verifying Checksum 4f4fb700ef54: Download complete 40bfde081b4e: Verifying Checksum 40bfde081b4e: Download complete d5de12645ff5: Verifying Checksum d5de12645ff5: Download complete 521a1fd9d30a: Verifying Checksum 521a1fd9d30a: Download complete 159470902a51: Verifying Checksum 159470902a51: Download complete c3410fe156ab: Verifying Checksum c3410fe156ab: Download complete e17a5e990a4d: Verifying Checksum e17a5e990a4d: Download complete b5ada550863b: Verifying Checksum b5ada550863b: Download complete a5c662499587: Verifying Checksum a5c662499587: Download complete 72049b7b8f26: Pull complete cac8156a957a: Pull complete a2678613884c: Pull complete a5c662499587: Pull complete 36160d2877bb: Pull complete 40bfde081b4e: Pull complete e17fd6a8908f: Pull complete 4f4fb700ef54: Pull complete d5de12645ff5: Pull complete 521a1fd9d30a: Pull complete 159470902a51: Pull complete b5ada550863b: Pull complete c3410fe156ab: Pull complete e17a5e990a4d: Pull complete Digest: sha256:ad360ceecd591b173a5973b28ce92246eefcf2bdd4a5e37ed82e0116daac0394 Status: Downloaded newer image for yegor256/ruby:latest docker.io/yegor256/ruby:latest + docker ps --filter=status=exited + grep --quiet '\scqfn_pdd_243\s*$' + ls -al . total 48 drwx------ 3 ubuntu ubuntu 4096 Jun 25 08:21 . drwxrwxrwt 12 root root 4096 Jun 25 08:21 .. -rwxrwxr-x 1 ubuntu ubuntu 658 Jun 25 08:21 end.sh -rwxrwxr-x 1 ubuntu ubuntu 490 Jun 25 08:21 entry.sh -rw-rw-r-- 1 ubuntu ubuntu 5 Jun 25 08:21 pid drwxrwxr-x 12 ubuntu ubuntu 4096 Jun 25 08:21 repo -rw-rw-r-- 1 ubuntu ubuntu 81 Jun 25 08:21 rubygems.yml -rwxrwxr-x 1 ubuntu ubuntu 6471 Jun 25 08:21 run.sh -rw-rw-r-- 1 ubuntu ubuntu 657 Jun 25 08:21 script.sh -rw-rw-r-- 1 ubuntu ubuntu 6149 Jun 25 08:22 stdout ++ pwd ++ pwd + docker run -t --rm -v /tmp/rultor-0vYX:/main --env=head=git@github.com:cqfn/pdd.git --env=tag=0.24.1 '--env=scripts=( '\''export '\''\'\'''\''head=git@github.com:cqfn/pdd.git'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''tag=0.24.1'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''head_branch=master'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''author=yegor256'\''\'\'''\'''\'' '\'';'\'' '\''pdd -f /dev/null'\'' '\'';'\'' '\''bundle install --no-color'\'' '\'';'\'' '\''[[ "${tag}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] || exit -1'\'' '\'';'\'' '\''bundle exec rake'\'' '\'';'\'' '\''rm -rf *.gem'\'' '\'';'\'' '\''sed -i "s/0\.0\.0/${tag}/g" lib/pdd/version.rb'\'' '\'';'\'' '\''git add lib/pdd/version.rb'\'' '\'';'\'' '\''git commit -m "version set to ${tag}"'\'' '\'';'\'' '\''gem build pdd.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-0vYX/cid -w=/main -v /var/run/docker.sock:/var/run/docker.sock --name=cqfn_pdd_243 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 ssh 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 /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 #!/bin/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 'head=git@github.com:cqfn/pdd.git' ; export 'tag=0.24.1' ; export 'head_branch=master' ; export 'author=yegor256' ; pdd -f /dev/null ; bundle install --no-color ; [[ "${tag}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] || exit -1 ; bundle exec rake ; rm -rf *.gem ; sed -i "s/0\.0\.0/${tag}/g" lib/pdd/version.rb ; git add lib/pdd/version.rb ; git commit -m "version set to ${tag}" ; gem build pdd.gemspec ; chmod 0600 ../rubygems.yml ; gem push *.gem --config-file ../rubygems.yml ; + su --login r --command /home/r/script.sh Found 26 lines in /home/r/repo/.pdd My version is 0.23.1 Ruby version is 3.4.4 at x86_64-linux Reading from root dir . Excluding .idea/**/* Excluding .bundle/**/* Excluding target/**/* Excluding coverage/**/* Excluding test_assets/**/* Excluding README.md Excluding features/cli.feature Excluding features/parsing.feature Excluding features/catches_broken_puzzles.feature Excluding features/remove.feature Excluding features/uses_config.feature Excluding features/html_output.feature Excluding features/json_output.feature Excluding features/avoiding_duplicates.feature Excluding features/applies_rules.feature Excluding features/unicode.feature Excluding lib/pdd/source.rb Excluding test/test_source.rb Excluding test/test_source_todo.rb Excluding test/test_pdd.rb Excluding src/main/resources/images/**/* /usr/local/bundle/gems/pdd-0.23.1/lib/pdd/sources.rb:90: warning: undefining the allocator of T_DATA class FileMagic Reading .0pdd.yml ... Reading .gitattributes ... 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 .markdownlint.yml ... Reading .pdd ... Reading .rubocop.yml ... Reading .rultor.yml ... Reading .simplecov ... Reading CITATION.cff ... Reading Gemfile ... Reading Gemfile.lock ... Reading LICENSE.txt ... Reading LICENSES/MIT.txt ... Reading REUSE.toml ... Reading Rakefile ... Reading assets/puzzles.xsd ... Reading assets/puzzles.xsl ... Reading assets/puzzles_json.xsl ... Reading bin/pdd ... Reading cucumber.yml ... Reading features/gem_package.feature ... Reading features/rake.feature ... Reading features/step_definitions/steps.rb ... Reading features/support/env.rb ... Reading lib/pdd/puzzle.rb ... Reading lib/pdd/rake_task.rb ... Reading lib/pdd/rule/duplicates.rb ... Reading lib/pdd/rule/estimates.rb ... Reading lib/pdd/rule/roles.rb ... Reading lib/pdd/rule/text.rb ... Reading lib/pdd/sources.rb ... Reading lib/pdd/version.rb ... Reading lib/pdd.rb ... Reading pdd.gemspec ... Reading test/test__helper.rb ... Reading test/test_duplicates.rb ... Reading test/test_estimates.rb ... Reading test/test_many.rb ... Reading test/test_rake_task.rb ... Reading test/test_roles.rb ... Reading test/test_sources.rb ... Reading test/test_text.rb ... Reading utils/glob.rb ... Bundler 2.6.7 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.3.0 Installing rake 13.3.0 Fetching ansi 1.5.0 Installing ansi 1.5.0 Fetching contracts 0.17.2 Installing contracts 0.17.2 Fetching base64 0.3.0 Installing base64 0.3.0 Fetching builder 3.3.0 Installing builder 3.3.0 Fetching cucumber-ci-environment 10.0.1 Installing cucumber-ci-environment 10.0.1 Fetching cucumber-messages 27.2.0 Installing cucumber-messages 27.2.0 Fetching cucumber-gherkin 30.0.4 Installing cucumber-gherkin 30.0.4 Fetching cucumber-tag-expressions 6.1.2 Installing cucumber-tag-expressions 6.1.2 Fetching cucumber-core 15.1.0 Installing cucumber-core 15.1.0 Fetching bigdecimal 3.2.2 Installing bigdecimal 3.2.2 with native extensions Fetching cucumber-cucumber-expressions 18.0.1 Installing cucumber-cucumber-expressions 18.0.1 Fetching cucumber-html-formatter 21.12.0 Installing cucumber-html-formatter 21.12.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.2 (x86_64-linux-gnu) Installing ffi 1.17.2 (x86_64-linux-gnu) Fetching sys-uname 1.3.1 Installing sys-uname 1.3.1 Fetching cucumber 10.0.0 Installing cucumber 10.0.0 Fetching rspec-support 3.13.4 Installing rspec-support 3.13.4 Fetching rspec-expectations 3.13.5 Installing rspec-expectations 3.13.5 Fetching thor 1.3.2 Installing thor 1.3.2 Fetching aruba 2.3.1 Installing aruba 2.3.1 Fetching ast 2.4.3 Installing ast 2.4.3 Fetching backtrace 0.4.1 Installing backtrace 0.4.1 Fetching date 3.4.1 Installing date 3.4.1 with native extensions Fetching docile 1.4.1 Installing docile 1.4.1 Fetching erb 5.0.1 Installing erb 5.0.1 with native extensions Fetching json 2.12.2 Installing json 2.12.2 with native extensions Fetching language_server-protocol 3.17.0.5 Installing language_server-protocol 3.17.0.5 Fetching lint_roller 1.1.0 Installing lint_roller 1.1.0 Fetching minitest 5.25.5 Installing minitest 5.25.5 Fetching ruby-progressbar 1.13.0 Installing ruby-progressbar 1.13.0 Fetching minitest-reporters 1.7.1 Installing minitest-reporters 1.7.1 Fetching parallel 1.27.0 Installing parallel 1.27.0 Fetching parser 3.3.8.0 Installing parser 3.3.8.0 Fetching prism 1.4.0 Installing prism 1.4.0 with native extensions Fetching stringio 3.1.7 Installing stringio 3.1.7 with native extensions Fetching psych 5.2.6 Installing psych 5.2.6 with native extensions Fetching rdoc 6.14.1 Installing rdoc 6.14.1 Fetching regexp_parser 2.10.0 Installing regexp_parser 2.10.0 Fetching rexml 3.4.1 Installing rexml 3.4.1 Fetching rubocop-ast 1.45.1 Installing rubocop-ast 1.45.1 Fetching unicode-emoji 4.0.4 Installing unicode-emoji 4.0.4 Fetching unicode-display_width 3.1.4 Installing unicode-display_width 3.1.4 Fetching rubocop 1.77.0 Installing rubocop 1.77.0 Fetching rubocop-minitest 0.38.1 Installing rubocop-minitest 0.38.1 Fetching rubocop-performance 1.25.0 Installing rubocop-performance 1.25.0 Fetching rubocop-rake 0.7.1 Installing rubocop-rake 0.7.1 Fetching simplecov-html 0.13.1 Installing simplecov-html 0.13.1 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 2.1.0 Installing simplecov-cobertura 2.1.0 Bundle complete! 15 Gemfile dependencies, 63 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 58578 TestMaxDuplicates test_max_duplicates_without_errors 32m PASS0m (0.00s) test_max_duplicates 32m PASS0m (0.00s) TestRakeTask test_basic 32m PASS0m (0.00s) TestRoles test_incorrect_role 32m PASS0m (0.00s) test_empty_role 32m PASS0m (0.00s) test_correct_role 32m PASS0m (0.00s) TestSourceTodo test_todo_colon_parsing_multi_line_random_prefix 32m PASS0m (0.01s) test_multiple_todo_colon 32m PASS0m (0.00s) test_todo_parsing_puzzle_javadoc_with_empty_line 32m PASS0m (0.00s) test_todo_not_puzzle 32m PASS0m (0.00s) test_todo_colon_parsing_multi_line 32m PASS0m (0.00s) test_todo_failing_no_space_before 32m PASS0m (0.00s) test_todo_parsing_puzzle_last_empty_line 32m PASS0m (0.00s) test_todo_colon_parsing_double_puzzle_with_empty_line 32m PASS0m (0.00s) test_todo_colon_parsing_multi_line_with_empty_line_and_space 32m PASS0m (0.00s) test_todo_parsing_multi_line 32m PASS0m (0.00s) test_todo_colon_failing_no_space_before 32m PASS0m (0.00s) test_todo_backslash_escape 32m PASS0m (0.00s) test_todo_colon_failing_space_after_hash 32m PASS0m (0.00s) test_todo_colon_parsing_multi_line_with_empty_line 32m PASS0m (0.00s) test_todo_parsing 32m PASS0m (0.00s) test_todo_failing_space_after_hash 32m PASS0m (0.00s) test_todo_utf8_encoded_body 32m PASS0m (0.00s) test_todo_failing_no_ticket 32m PASS0m (0.00s) test_todo_colon_parsing 32m PASS0m (0.00s) test_todo_colon_failing_no_ticket 32m PASS0m (0.00s) TestSources /home/r/repo/lib/pdd/sources.rb:73: warning: undefining the allocator of T_DATA class FileMagic test_ignores_binary_files 32m PASS0m (0.02s) test_detects_xml_file 32m PASS0m (0.00s) test_detects_js_file 32m PASS0m (0.00s) test_iterator 32m PASS0m (0.01s) test_excludes_recursively 32m PASS0m (0.00s) test_detects_all_text_files 32m PASS0m (0.04s) test_includes_by_pattern 32m PASS0m (0.01s) test_fails_with_verbose_output 32m PASS0m (0.00s) test_excludes_by_pattern 32m PASS0m (0.00s) test_includes_recursively 32m PASS0m (0.01s) TestMany 1-04e35eb3: "How are you?" 132-bc1dfafe: "Just a few lines before another comment" 1425-59819ae3: "Continue replacing usage of MatcherAssert.assertThat with Assertion from cactoos-matchers. Keep PR short and limit the changes to single package. Update this puzzle for the next package. After all packages are done, add MatcherAssert to forbidden-apis.txt" 42-0d933cc0: "This is a very long puzzle of many lines and not always well formatted..." 44-660e9d6f: "This puzzle consists of two paragraphs" 55-947a180a: "This is the puzzle; Indented this way." 71-8097fa26: "This puzzle consists of just one paragraph" 91-ecb9aa47: "This puzzle Looks weird But it has to work Even though It's weird" 93-641fe341: "This puzzle is very simple. It is indented right by more spaces than the other text." test_parsing 32m PASS0m (0.34s) TestText test_min_words 32m PASS0m (0.00s) TestPDD 31mERROR0m: Puzzle a.txt:1-1 has an estimate of 0 minutes, which is lower than 30 minutes test_rules_failure 32m PASS0m (0.01s) test_git_repo 32m PASS0m (0.26s) test_basic 32m PASS0m (0.01s) TestEstimates test_min 32m PASS0m (0.00s) test_max 32m PASS0m (0.00s) TestSource test_failing_on_broken_unicode 32m PASS0m (0.00s) test_succeed_despite_bad_puzzles 32m PASS0m (0.00s) test_no_prefix_multiline_puzzle_block 32m PASS0m (0.00s) test_skips_invalid_git_mail 32m PASS0m (0.02s) test_succeed_utf8_encoded_body 32m PASS0m (0.00s) test_parsing 32m PASS0m (0.01s) test_skips_thymeleaf_close_tag 32m PASS0m (0.00s) test_failing_on_invalid_puzzle_without_hash_sign 32m PASS0m (0.00s) test_failing_on_incomplete_puzzle 32m PASS0m (0.00s) test_failing_on_puzzle_without_leading_space 32m PASS0m (0.00s) test_reads_git_author 32m PASS0m (0.02s) test_uses_github_login 32m PASS0m (0.02s) test_skips_uncommitted_changes 32m PASS0m (0.02s) test_parsing_leading_spaces 32m PASS0m (0.00s) test_multiple_puzzles_single_comment_block 32m PASS0m (0.01s) test_space_indented_multiline_puzzle_block 32m PASS0m (0.00s) test_failing_on_puzzle_with_space_after_dash 32m PASS0m (0.00s) Finished in 0.95930s 60 tests, 175 assertions, 32m0 failures, 0 errors, 0m33m0 skips0m Coverage report generated for Unit Tests to /home/r/repo/coverage. Line Coverage: 95.7% (356 / 372) /usr/local/bin/ruby -S bundle exec cucumber features --strict-undefined Using the default profile... 90m# SPDX-FileCopyrightText: Copyright (c) 2014-2025 Yegor Bugayenko0m 90m# SPDX-License-Identifier: MIT0m Feature: Applies Post-Parsing Rules As a source code writer I want to be sure that certain post-parsing rules are applied Scenario: Throwing exception on big estimates 90m# features/applies_rules.feature:70m 32mGiven I have a "32m1mSample.java0m0m32m" file with content:90m # features/step_definitions/steps.rb:310m0m 32m """0m 32m @todo #13:180m This puzzle has too big estimate0m 32m """0m /home/r/repo/lib/pdd/sources.rb:73: warning: undefining the allocator of T_DATA class FileMagic 32mWhen I run bin/pdd with "32m1m--rule=max-estimate:900m0m32m"90m # features/step_definitions/steps.rb:580m0m 32mThen Exit code is not zero90m # features/step_definitions/steps.rb:930m0m 32mThen Stdout contains "32m1mbigger than 90 minutes0m0m32m"90m # features/step_definitions/steps.rb:640m0m Scenario: Throwing exception on small estimates 90m# features/applies_rules.feature:160m 32mGiven I have a "32m1mSample.java0m0m32m" file with content:90m # features/step_definitions/steps.rb:310m0m 32m """0m 32m @todo #13:15min This puzzle has too small estimate0m 32m """0m /home/r/repo/lib/pdd/sources.rb:73: warning: undefining the allocator of T_DATA class FileMagic 32mWhen I run bin/pdd with "32m1m--rule=min-estimate:300m0m32m"90m # features/step_definitions/steps.rb:580m0m 32mThen Exit code is not zero90m # features/step_definitions/steps.rb:930m0m 32mThen Stdout contains "32m1mlower than 30 minutes0m0m32m"90m # features/step_definitions/steps.rb:640m0m Scenario: Throwing exception on duplicates 90m# features/applies_rules.feature:250m 32mGiven I have a "32m1mSample.java0m0m32m" file with content:90m # features/step_definitions/steps.rb:310m0m 32m """0m 32m @todo #13:15min The text0m 32m @todo #13:15min The text0m 32m """0m /home/r/repo/lib/pdd/sources.rb:73: warning: undefining the allocator of T_DATA class FileMagic 32mWhen I run bin/pdd with "32m1m0m0m32m"90m # features/step_definitions/steps.rb:580m0m 32mThen Exit code is not zero90m # features/step_definitions/steps.rb:930m0m 32mThen Stdout contains "32m1mthere are 2 duplicate0m0m32m"90m # features/step_definitions/steps.rb:640m0m Scenario: Throwing exception on duplicates 90m# features/applies_rules.feature:350m 32mGiven I have a "32m1mSample.java0m0m32m" file with content:90m # features/step_definitions/steps.rb:310m0m 32m """0m 32m @todo #13/DEV:15min Some text first0m 32m @todo #13/TEST:15min The text second0m 32m """0m /home/r/repo/lib/pdd/sources.rb:73: warning: undefining the allocator of T_DATA class FileMagic 32mWhen I run bin/pdd with "32m1m--rule=available-roles:DEV,ARC0m0m32m"90m # features/step_definitions/steps.rb:580m0m 32mThen Exit code is not zero90m # features/step_definitions/steps.rb:930m0m 32mThen Stdout contains "32m1mdefines role TEST0m0m32m"90m # features/step_definitions/steps.rb:640m0m Scenario: Throwing exception on touching max-duplicates rule 90m# features/applies_rules.feature:450m 32mGiven I have a "32m1mSample.java0m0m32m" file with content:90m # features/step_definitions/steps.rb:310m0m 32m """0m 32m @todo #334:15m This is the puzzle0m 32m @todo #35:30m This is the puzzle0m 32m """0m /home/r/repo/lib/pdd/sources.rb:73: warning: undefining the allocator of T_DATA class FileMagic 32mWhen I run bin/pdd with "32m1m--rule=max-duplicates:30m0m32m"90m # features/step_definitions/steps.rb:580m0m 32mThen Exit code is not zero90m # features/step_definitions/steps.rb:930m0m Feature: Avoiding Duplicate Puzzles As a source code writer I want to be sure that XML output doesn't contain any duplicates Scenario: Throwing exception on duplicates 90m# features/avoiding_duplicates.feature:70m 32mGiven I have a "32m1mSample.java0m0m32m" file with content:90m # features/step_definitions/steps.rb:310m0m 32m """0m 32m public class Main {0m 32m /**0m 32m * @todo #13 A simple puzzle0m 32m * @todo #15 A simple puzzle0m 32m */0m 32m public void main(String[] args) {0m 32m // later0m 32m }0m 32m }0m 32m """0m /home/r/repo/lib/pdd/sources.rb:73: warning: undefining the allocator of T_DATA class FileMagic 31mERROR0m: there are 2 duplicate(s) of the same puzzle: Sample.java:3-3, Sample.java:4-4, while maximum 1 duplicate is allowed 32mWhen I run pdd it fails with "32m1merrors, see log above0m0m32m"90m # features/step_definitions/steps.rb:460m0m Feature: Catches Broken Puzzles As a source code writer I want to be sure that broken puzzles won't be processed and will cause runtime errors Scenario: Throwing exception on broken puzzles 90m# features/catches_broken_puzzles.feature:80m 32mGiven I have a "32m1mSample.java0m0m32m" file with content:90m # features/step_definitions/steps.rb:310m0m 32m """0m 32m public class Main {0m 32m /**0m 32m * Some other documentation0m 32m * text that is not relevant to0m 32m * the puzzle below.0m 32m * @todo This puzzle has an incorrect format0m 32m * because it doesn't have a ticket number0m 32m */0m 32m public void main(String[] args) {0m 32m // later0m 32m }0m 32m }0m 32m """0m 32mWhen I run pdd it fails with "32m1mSample.java:60m0m32m"90m # features/step_definitions/steps.rb:460m0m Feature: Command Line Processing As a source code writer I want to be able to call PDD as a command line tool Scenario: Help can be printed 90m# features/cli.feature:70m 32mWhen I run bin/pdd with "32m1m-h0m0m32m"90m # features/step_definitions/steps.rb:580m0m 32mThen Exit code is zero90m # features/step_definitions/steps.rb:890m0m 32mAnd Stdout contains "32m1m-v, --verbose0m0m32m"90m # features/step_definitions/steps.rb:640m0m Scenario: Version can be printed 90m# features/cli.feature:120m 32mWhen I run bin/pdd with "32m1m--version0m0m32m"90m # features/step_definitions/steps.rb:580m0m 32mThen Exit code is zero90m # features/step_definitions/steps.rb:890m0m Scenario: Simple puzzles collecting 90m# features/cli.feature:160m 32mGiven I have a "32m1mSample.java0m0m32m" file with content:90m # features/step_definitions/steps.rb:310m0m 32m """0m 32m public class Main {0m 32m /**0m 32m * @todo #13 Привет, Let's do it later, dude0m 32m * or maybe even never :)0m 32m */0m 32m public void main(String[] args) {0m 32m // later0m 32m }0m 32m }0m 32m """0m /home/r/repo/lib/pdd/sources.rb:73: warning: undefining the allocator of T_DATA class FileMagic 32mWhen I run bin/pdd with "32m1m-v -s . -f out.xml0m0m32m"90m # features/step_definitions/steps.rb:580m0m 32mThen Exit code is zero90m # features/step_definitions/steps.rb:890m0m 32mAnd Stdout contains "32m1mReading from root dir .0m0m32m"90m # features/step_definitions/steps.rb:640m0m 32mAnd XML file "32m1mout.xml0m0m32m" matches "32m1m/puzzles[count(puzzle)=1]0m0m32m"90m # features/step_definitions/steps.rb:730m0m 32mAnd XML file "32m1mout.xml0m0m32m" matches "32m1m//puzzle[starts-with(body,'Привет, Let')]0m0m32m"90m # features/step_definitions/steps.rb:730m0m Scenario: Using basic rules 90m# features/cli.feature:350m 32mGiven I have a "32m1msample.java0m0m32m" file with content:90m # features/step_definitions/steps.rb:310m0m 32m """0m 32m Nothing0m 32m """0m /home/r/repo/lib/pdd/sources.rb:73: warning: undefining the allocator of T_DATA class FileMagic 32mWhen I run bin/pdd with "32m1m-v -s . -f out.xml --rule min-words:20 --rule=available-roles:DEV,ARC,PO0m0m32m"90m # features/step_definitions/steps.rb:580m0m 32mThen Exit code is zero90m # features/step_definitions/steps.rb:890m0m Scenario: Simple puzzles collecting into stdout 90m# features/cli.feature:430m 32mGiven I have a "32m1mSample.txt0m0m32m" file with content:90m # features/step_definitions/steps.rb:310m0m 32m """0m 32m ~~0m 32m ~~ @todo #44 First0m 32m ~~ and0m 32m ~~ second0m 32m """0m /home/r/repo/lib/pdd/sources.rb:73: warning: undefining the allocator of T_DATA class FileMagic 32mWhen I run bin/pdd with "32m1m> out.xml0m0m32m"90m # features/step_definitions/steps.rb:580m0m 32mThen Exit code is zero90m # features/step_definitions/steps.rb:890m0m 32mAnd Stdout is empty90m # features/step_definitions/steps.rb:690m0m 32mAnd XML file "32m1mout.xml0m0m32m" matches "32m1m/puzzles[count(puzzle)=1]0m0m32m"90m # features/step_definitions/steps.rb:730m0m Scenario: Excluding unnecessary files 90m# features/cli.feature:560m 32mGiven I have a "32m1ma/b/c/test.txt0m0m32m" file with content:90m # features/step_definitions/steps.rb:310m0m 32m """0m 32m ~~ @todo #44 some puzzle to be excluded0m 32m """0m 32mAnd I have a "32m1mf/g/h/hello.md0m0m32m" file with content:90m # features/step_definitions/steps.rb:310m0m 32m """0m 32m ~~ @todo #44 some puzzle to be excluded as well0m 32m """0m /home/r/repo/lib/pdd/sources.rb:73: warning: undefining the allocator of T_DATA class FileMagic 32mWhen I run bin/pdd with "32m1m-e f/g/**/*.md --exclude a/**/*.txt > out.xml0m0m32m"90m # features/step_definitions/steps.rb:580m0m 32mThen Exit code is zero90m # features/step_definitions/steps.rb:890m0m 32mAnd XML file "32m1mout.xml0m0m32m" matches "32m1m/puzzles[count(puzzle)=0]0m0m32m"90m # features/step_definitions/steps.rb:730m0m Scenario: Excluding unnecessary files from .gitignore 90m# features/cli.feature:690m 32mGiven I have a "32m1ma/b/c/test.txt0m0m32m" file with content:90m # features/step_definitions/steps.rb:310m0m 32m """0m 32m ~~ @todo #44 some puzzle to be excluded0m 32m """0m 32mAnd I have a "32m1mf/g/h/hello.md0m0m32m" file with content:90m # features/step_definitions/steps.rb:310m0m 32m """0m 32m ~~ @todo #45 some puzzle to be excluded as well0m 32m """0m 32mAnd I have a "32m1m.gitignore0m0m32m" file with content:90m # features/step_definitions/steps.rb:310m0m 32m """0m 32m # This is the list of patterns0m 32m a/**/*0m 32m !/f0m 32m """0m /home/r/repo/lib/pdd/sources.rb:73: warning: undefining the allocator of T_DATA class FileMagic 32mWhen I run bin/pdd with "32m1m--skip-gitignore > out.xml0m0m32m"90m # features/step_definitions/steps.rb:580m0m 32mThen Exit code is zero90m # features/step_definitions/steps.rb:890m0m 32mAnd XML file "32m1mout.xml0m0m32m" matches "32m1m/puzzles/puzzle[./ticket='45']0m0m32m"90m # features/step_definitions/steps.rb:730m0m 32mAnd XML file "32m1mout.xml0m0m32m" matches "32m1m/puzzles[count(puzzle)=1]0m0m32m"90m # features/step_definitions/steps.rb:730m0m Scenario: Excluding unnecessary files from .gitignore and ignore comments 90m# features/cli.feature:890m 32mGiven I have a "32m1ma/b/c/test.txt0m0m32m" file with content:90m # features/step_definitions/steps.rb:310m0m 32m """0m 32m ~~ @todo #44 some puzzle to be excluded0m 32m """0m 32mAnd I have a "32m1mf/g/h/hello.md0m0m32m" file with content:90m # features/step_definitions/steps.rb:310m0m 32m """0m 32m ~~ @todo #45 some puzzle to be excluded as well0m 32m """0m 32mAnd I have a "32m1m.gitignore0m0m32m" file with content:90m # features/step_definitions/steps.rb:310m0m 32m """0m 32m # This is the list of patterns0m 32m # a/**/*0m 32m f/**/*0m 32m """0m /home/r/repo/lib/pdd/sources.rb:73: warning: undefining the allocator of T_DATA class FileMagic 32mWhen I run bin/pdd with "32m1m--skip-gitignore > out.xml0m0m32m"90m # features/step_definitions/steps.rb:580m0m 32mThen Exit code is zero90m # features/step_definitions/steps.rb:890m0m 32mAnd XML file "32m1mout.xml0m0m32m" matches "32m1m/puzzles/puzzle[./ticket='44']0m0m32m"90m # features/step_definitions/steps.rb:730m0m 32mAnd XML file "32m1mout.xml0m0m32m" matches "32m1m/puzzles[count(puzzle)=1]0m0m32m"90m # features/step_definitions/steps.rb:730m0m Scenario: Files from .gitignore is not excluded by default 90m# features/cli.feature:1090m 32mGiven I have a "32m1ma/b/c/test.txt0m0m32m" file with content:90m # features/step_definitions/steps.rb:310m0m 32m """0m 32m ~~ @todo #44 some puzzle to be excluded0m 32m """0m 32mAnd I have a "32m1mf/g/h/hello.md0m0m32m" file with content:90m # features/step_definitions/steps.rb:310m0m 32m """0m 32m ~~ @todo #45 some puzzle to be excluded as well0m 32m """0m 32mAnd I have a "32m1m.gitignore0m0m32m" file with content:90m # features/step_definitions/steps.rb:310m0m 32m """0m 32m # This is the list of patterns0m 32m a/**/*0m 32m !/f0m 32m """0m /home/r/repo/lib/pdd/sources.rb:73: warning: undefining the allocator of T_DATA class FileMagic 32mWhen I run bin/pdd with "32m1m> out.xml0m0m32m"90m # features/step_definitions/steps.rb:580m0m 32mThen Exit code is zero90m # features/step_definitions/steps.rb:890m0m 32mAnd XML file "32m1mout.xml0m0m32m" matches "32m1m/puzzles/puzzle[./ticket='44']0m0m32m"90m # features/step_definitions/steps.rb:730m0m 32mAnd XML file "32m1mout.xml0m0m32m" matches "32m1m/puzzles/puzzle[./ticket='45']0m0m32m"90m # features/step_definitions/steps.rb:730m0m 32mAnd XML file "32m1mout.xml0m0m32m" matches "32m1m/puzzles[count(puzzle)=2]0m0m32m"90m # features/step_definitions/steps.rb:730m0m Scenario: Rejects unknown options 90m# features/cli.feature:1300m 32mGiven I have a "32m1mtest.txt0m0m32m" file with content:90m # features/step_definitions/steps.rb:310m0m 32m """0m 32m0m 32m """0m 32mWhen I run bin/pdd with "32m1m--some-unknown-option0m0m32m"90m # features/step_definitions/steps.rb:580m0m 32mThen Exit code is not zero90m # features/step_definitions/steps.rb:930m0m 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:1090m0m 32mGiven I have a "32m1mexecs.rb0m0m32m" file with content:90m # features/step_definitions/steps.rb:310m0m 32m """0m 32m #!/usr/bin/env ruby0m 32m require 'rubygems'0m 32m spec = Gem::Specification::load('./spec.rb')0m 32m fail 'no executables' if spec.executables.empty?0m 32m """0m /tmp/test20250625-856-sm8uu0/pdd/lib/pdd/version.rb:9: warning: already initialized constant PDD::VERSION /home/r/repo/lib/pdd/version.rb:9: warning: previous definition of VERSION was here 32mWhen I run bash with90m # features/step_definitions/steps.rb:970m0m 32m """0m 32m cd pdd0m 32m gem build pdd.gemspec0m 32m gem specification --ruby pdd-*.gem > ../spec.rb0m 32m cd ..0m 32m ruby execs.rb0m 32m """0m 32mThen Exit code is zero90m # features/step_definitions/steps.rb:890m0m Feature: HTML output As a source code writer I want to be able to call PDD as a command line tool, and retrieve an HTML report Scenario: HTML report building 90m# features/html_output.feature:80m 32mGiven I have a "32m1mSample.java0m0m32m" file with content:90m # features/step_definitions/steps.rb:310m0m 32m """0m 32m public class Main {0m 32m /**0m 32m * @todo #13 Let's do it later, dude0m 32m * or maybe even never :)0m 32m */0m 32m public void main(String[] args) {0m 32m // later0m 32m }0m 32m }0m 32m """0m /home/r/repo/lib/pdd/sources.rb:73: warning: undefining the allocator of T_DATA class FileMagic 32mWhen I run bin/pdd with "32m1m-v -s . -f out.html --format=html0m0m32m"90m # features/step_definitions/steps.rb:580m0m 32mThen Exit code is zero90m # features/step_definitions/steps.rb:890m0m 32mAnd Stdout contains "32m1mReading from root dir .0m0m32m"90m # features/step_definitions/steps.rb:640m0m 32mAnd XML file "32m1mout.html0m0m32m" matches "32m1m/html/body0m0m32m"90m # features/step_definitions/steps.rb:730m0m Feature: JSON output As a source code writer I want to be able to call PDD as a command line tool, and retrieve an JSON report Scenario: JSON report building 90m# features/json_output.feature:80m 32mGiven I have a "32m1mSample.java0m0m32m" file with content:90m # features/step_definitions/steps.rb:310m0m 32m """0m 32m public class Main {0m 32m /**0m 32m * @todo #13 Let's do json0m 32m * or maybe not json ":)"0m 32m */0m 32m public void main(String[] args) {0m 32m // later0m 32m }0m 32m }0m 32m """0m /home/r/repo/lib/pdd/sources.rb:73: warning: undefining the allocator of T_DATA class FileMagic 32mWhen I run bin/pdd with "32m1m-v -s . -f out.json --format=json0m0m32m"90m # features/step_definitions/steps.rb:580m0m 32mThen Exit code is zero90m # features/step_definitions/steps.rb:890m0m 32mAnd Stdout contains "32m1mReading from root dir .0m0m32m"90m # features/step_definitions/steps.rb:640m0m 32mAnd Text File "32m1mout.json0m0m32m" contains "32m1mLet's do json or maybe not json “:)“0m0m32m"90m # features/step_definitions/steps.rb:810m0m Feature: Parsing As a source code writer I want to be able to collect all puzzles from all my text files and present them in XML format Scenario: Simple puzzles collecting 90m# features/parsing.feature:80m 32mGiven I have a "32m1mSample.java0m0m32m" file with content:90m # features/step_definitions/steps.rb:310m0m 32m """0m 32m public class Main {0m 32m /**0m 32m * @todo #13 Let's do it later, dude0m 32m * or maybe even never :)0m 32m */0m 32m public void main(String[] args) {0m 32m // later0m 32m }0m 32m }0m 32m """0m 32mWhen I run pdd90m # features/step_definitions/steps.rb:380m0m 32mThen XML matches "32m1m/puzzles[count(puzzle)=1]0m0m32m"90m # features/step_definitions/steps.rb:420m0m 32mAnd XML matches "32m1m//puzzle[file='Sample.java']0m0m32m"90m # features/step_definitions/steps.rb:420m0m 32mAnd XML matches "32m1m//puzzle[ticket='13']0m0m32m"90m # features/step_definitions/steps.rb:420m0m 32mAnd XML matches "32m1m//puzzle[lines='3-4']0m0m32m"90m # features/step_definitions/steps.rb:420m0m 32mAnd XML matches "32m1m//puzzle[starts-with(body,'Let')]0m0m32m"90m # features/step_definitions/steps.rb:420m0m 32mAnd XML matches "32m1m//puzzle[role='DEV']0m0m32m"90m # features/step_definitions/steps.rb:420m0m 32mAnd XML matches "32m1m//puzzle[estimate='0']0m0m32m"90m # features/step_definitions/steps.rb:420m0m Scenario: Simple puzzle within comment block 90m# features/parsing.feature:300m 32mGiven I have a "32m1mtest/a/b/Sample.java0m0m32m" file with content:90m # features/step_definitions/steps.rb:310m0m 32m """0m 32m public class Main {0m 32m /**0m 32m * Some other documentation0m 32m * text that is not relevant to0m 32m * the puzzle below.0m 32m * @todo #13 This puzzle has a correct format0m 32m * It doesn't start with a space on0m 32m * the second and the third lines0m 32m */0m 32m public void main(String[] args) {0m 32m // later0m 32m }0m 32m }0m 32m """0m 32mWhen I run pdd90m # features/step_definitions/steps.rb:380m0m 32mThen XML matches "32m1m/puzzles[count(puzzle)=1]0m0m32m"90m # features/step_definitions/steps.rb:420m0m 32mAnd XML matches "32m1m//puzzle[file='test/a/b/Sample.java']0m0m32m"90m # features/step_definitions/steps.rb:420m0m 32mAnd XML matches "32m1m//puzzle[ticket='13']0m0m32m"90m # features/step_definitions/steps.rb:420m0m 32mAnd XML matches "32m1m//puzzle[lines='6-8']0m0m32m"90m # features/step_definitions/steps.rb:420m0m 32mAnd XML matches "32m1m//puzzle[starts-with(body,'This')]0m0m32m"90m # features/step_definitions/steps.rb:420m0m 32mAnd XML matches "32m1m//puzzle[role='DEV']0m0m32m"90m # features/step_definitions/steps.rb:420m0m 32mAnd XML matches "32m1m//puzzle[estimate='0']0m0m32m"90m # features/step_definitions/steps.rb:420m0m Scenario: Multiple puzzles in one file 90m# features/parsing.feature:560m 32mGiven I have a "32m1mtest/a/b/c/Sample.java0m0m32m" file with content:90m # features/step_definitions/steps.rb:310m0m 32m """0m 32m public class Main {0m 32m /**0m 32m * @todo #13 This one later0m 32m * @todo #ABC-67:15min And this one ever later0m 32m * @todo #F-78-3:2h/DEV This is for a developer0m 32m * who will join us later0m 32m * @todo #44 This puzzle has a correct format0m 32m * even though it doesn't start with a space on0m 32m * the second and the third lines0m 32m */0m 32m public void main(String[] args) {0m 32m // later0m 32m }0m 32m }0m 32m """0m 32mWhen I run pdd90m # features/step_definitions/steps.rb:380m0m 32mThen XML matches "32m1m/puzzles[count(puzzle)=4]0m0m32m"90m # features/step_definitions/steps.rb:420m0m 32mAnd XML matches "32m1m//puzzle[ticket='13' and lines='3-3']0m0m32m"90m # features/step_definitions/steps.rb:420m0m 32mAnd XML matches "32m1m//puzzle[ticket='13' and body='This one later']0m0m32m"90m # features/step_definitions/steps.rb:420m0m 32mAnd XML matches "32m1m//puzzle[ticket='ABC-67' and lines='4-4']0m0m32m"90m # features/step_definitions/steps.rb:420m0m 32mAnd XML matches "32m1m//puzzle[ticket='F-78-3' and lines='5-6']0m0m32m"90m # features/step_definitions/steps.rb:420m0m 32mAnd XML matches "32m1m//puzzle[ticket='ABC-67' and estimate='15']0m0m32m"90m # features/step_definitions/steps.rb:420m0m 32mAnd XML matches "32m1m//puzzle[ticket='F-78-3' and estimate='120']0m0m32m"90m # features/step_definitions/steps.rb:420m0m 32mAnd XML matches "32m1m//puzzle[ticket='44' and lines='7-9']0m0m32m"90m # features/step_definitions/steps.rb:420m0m Feature: Rake Task As a source code writer I want to be able to run PDD from Rakefile Scenario: PDD can be used in Rakefile 90m# features/rake.feature:60m 32mGiven It is Unix90m # features/step_definitions/steps.rb:1090m0m 32mAnd I have a "32m1mRakefile0m0m32m" file with content:90m # features/step_definitions/steps.rb:310m0m 32m """0m 32m require 'pdd/rake_task'0m 32m PDD::RakeTask.new(:pdd) do |task|0m 32m task.includes = ['a.txt']0m 32m end0m 32m """0m 32mAnd I have a "32m1ma.txt0m0m32m" file with content:90m # features/step_definitions/steps.rb:310m0m 32m """0m 32m \x40todo #55 hello!0m 32m """0m 32mWhen I run bash with "32m1mrake pdd0m0m32m"90m # features/step_definitions/steps.rb:1030m0m 32mThen Exit code is zero90m # features/step_definitions/steps.rb:890m0m Feature: Removing Puzzles As a source code writer I want to be able to remove PDD puzzles from source code Scenario: Removing puzzles from code 90m# features/remove.feature:70m 32mGiven I have a "32m1ma/test.txt0m0m32m" file with content:90m # features/step_definitions/steps.rb:310m0m 32m """0m 32m Hello,0m 32m # @todo #42 Bye!0m 32m # Bye!0m 32m The End.0m 32m """0m /home/r/repo/lib/pdd/sources.rb:73: warning: undefining the allocator of T_DATA class FileMagic 32mWhen I run bin/pdd with "32m1m-v --remove -f /dev/null0m0m32m"90m # features/step_definitions/steps.rb:580m0m 32mThen Exit code is zero90m # features/step_definitions/steps.rb:890m0m 32mAnd Stdout contains "32m1m1 puzzles removed from a/test.txt0m0m32m"90m # features/step_definitions/steps.rb:640m0m Feature: Unicode As a source code writer I want to be able to work with Unicode files Scenario: Unicode on ASCII locale 90m# features/unicode.feature:70m 32mGiven It is Unix90m # features/step_definitions/steps.rb:1090m0m 32mGiven I have a "32m1mtest.txt0m0m32m" file with content:90m # features/step_definitions/steps.rb:310m0m 32m """0m 32m # @todo #44 привет, друзья0m 32m """0m /tmp/test20250625-856-dq7mx3/pdd/lib/pdd/version.rb:9: warning: already initialized constant PDD::VERSION /home/r/repo/lib/pdd/version.rb:9: warning: previous definition of VERSION was here /tmp/test20250625-856-dq7mx3/pdd/lib/pdd/sources.rb:73: warning: undefining the allocator of T_DATA class FileMagic 32mWhen I run bash with90m # features/step_definitions/steps.rb:970m0m 32m """0m 32m LANG=C ruby -Ipdd/lib pdd/bin/pdd test.txt -v -f=/dev/null -e=pdd/**/*0m 32m """0m 32mThen Exit code is zero90m # features/step_definitions/steps.rb:890m0m Scenario: Skip file with broken Unicode 90m# features/unicode.feature:190m 32mGiven It is Unix90m # features/step_definitions/steps.rb:1090m0m 32mGiven I have a "32m1mtest.txt0m0m32m" file with content:90m # features/step_definitions/steps.rb:310m0m 32m """0m 32m \xBF test0m 32m # @todo #44 \xFF hey0m 32m \xFF test again0m 32m """0m 32mWhen I run bin/pdd with "32m1m--exclude=test.txt -v -f=/dev/null0m0m32m"90m # features/step_definitions/steps.rb:580m0m 32mThen Stdout contains "32m1mExcluding test.txt0m0m32m"90m # features/step_definitions/steps.rb:640m0m 32mThen Exit code is zero90m # features/step_definitions/steps.rb:890m0m Feature: Using .pdd config file As a source code writer I want to be able to call PDD as a command line tool and configure it via .pdd configuration file Scenario: Simple puzzles collecting 90m# features/uses_config.feature:80m 32mGiven I have a "32m1mSample.java0m0m32m" file with content:90m # features/step_definitions/steps.rb:310m0m 32m """0m 32m @todo #13 Let's do it later, dude0m 32m """0m 32mAnd I have a "32m1m.pdd0m0m32m" file with content:90m # features/step_definitions/steps.rb:310m0m 32m """0m 32m --verbose0m 32m --source=.0m 32m --file=out.xml0m 32m """0m /home/r/repo/lib/pdd/sources.rb:73: warning: undefining the allocator of T_DATA class FileMagic 32mWhen I run bin/pdd with "32m1m0m0m32m"90m # features/step_definitions/steps.rb:580m0m 32mThen Exit code is zero90m # features/step_definitions/steps.rb:890m0m 32mAnd Stdout contains "32m1mReading from root dir .0m0m32m"90m # features/step_definitions/steps.rb:640m0m 32mAnd XML file "32m1mout.xml0m0m32m" matches "32m1m/puzzles[count(puzzle)=1]0m0m32m"90m # features/step_definitions/steps.rb:730m0m 28 scenarios (32m28 passed0m) 138 steps (32m138 passed0m) 0m9.821s 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 Coverage report generated for Cucumber Features, Unit Tests to /home/r/repo/coverage. Line Coverage: 95.7% (356 / 372) Running RuboCop... Run options: --seed 430 # Running: Finished in 0.001722s, 0.0000 runs/s, 0.0000 assertions/s. 0 runs, 0 assertions, 0 failures, 0 errors, 0 skips Inspecting 28 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.0m 28 files inspected, 32mno offenses0m detected Running xcop... Inspecting 3 files... 32m.0m32m.0m32m.0m 3 files checked, everything looks 32mpretty0m Run options: --seed 36959 # Running: Finished in 0.003444s, 0.0000 runs/s, 0.0000 assertions/s. 0 runs, 0 assertions, 0 failures, 0 errors, 0 skips [__rultor 9abeb2a] version set to 0.24.1 1 file changed, 1 insertion(+), 1 deletion(-) Successfully built RubyGem Name: pdd Version: 0.24.1 File: pdd-0.24.1.gem Pushing gem to https://rubygems.org... Successfully registered gem: pdd (0.24.1) + 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.24.1 -m '0.24.1: tagged by rultor.com' + git reset --hard HEAD is now at 9abeb2a version set to 0.24.1 + 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 9abeb2a). + git push --all origin Everything up-to-date + git push --tags origin To github.com:cqfn/pdd.git * [new tag] 0.24.1 -> 0.24.1 container 7a17f2df4def9d7402d76a343aa205283c9e653dc49847f4a74d04723e122342 is dead Wed Jun 25 08:24:53 UTC 2025