rultor.com logo This build log was produced by rultor.com for cqfn/pdd#246
++ dirname ./run.sh
+ cd .
+ echo 1270
+ echo '2.0-SNAPSHOT BUILD'
2.0-SNAPSHOT BUILD
+ date
Wed May 13 10:50:19 UTC 2026
+ uptime
 10:50:19 up 0 min,  0 users,  load average: 1.24, 0.33, 0.11
+ ff=default
+ image=yegor256/ruby
+ rebase=false
+ head_branch=master
+ pull_title='[#245] Fix inconsistencies in TODO marker detection.'
+ author=yegor256
+ directory=
+ head=git@github.com:cqfn/pdd.git
+ pull_id=246
+ fork=git@github.com:c71n93/pdd.git
+ fork_branch=245
+ squash=false
+ vars=('--env=head=git@github.com:cqfn/pdd.git' '--env=pull_id=246' '--env=fork=git@github.com:c71n93/pdd.git' '--env=fork_branch=245' '--env=head_branch=master' '--env=pull_title=[#245] Fix inconsistencies in TODO marker detection.' '--env=author=yegor256' '--env=scripts=( '\''export '\''\'\'''\''head=git@github.com:cqfn/pdd.git'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''pull_id=246'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''fork=git@github.com:c71n93/pdd.git'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''fork_branch=245'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''head_branch=master'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''pull_title=[#245] Fix inconsistencies in TODO marker detection.'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''author=yegor256'\''\'\'''\'''\'' '\'';'\'' '\''pdd -f /dev/null'\'' '\'';'\'' '\''bundle install --no-color'\'' '\'';'\'' '\''LC_ALL=US-ASCII bundle exec rake'\'' '\'';'\'' )')
+ scripts=('export '\''head=git@github.com:cqfn/pdd.git'\''' ';' 'export '\''pull_id=246'\''' ';' 'export '\''fork=git@github.com:c71n93/pdd.git'\''' ';' 'export '\''fork_branch=245'\''' ';' 'export '\''head_branch=master'\''' ';' 'export '\''pull_title=[#245] Fix inconsistencies in TODO marker detection.'\''' ';' 'export '\''author=yegor256'\''' ';' 'pdd -f /dev/null' ';' 'bundle install --no-color' ';' 'LC_ALL=US-ASCII bundle exec rake' ';')
+ container=cqfn_pdd_246
+ as_root=false
+ set -e -o pipefail
+ hostname
ip-172-31-23-155
+ pwd
/tmp/rultor-0GSe
+ 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: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 '\''pull_id=246'\''' ';' 'export '\''fork=git@github.com:c71n93/pdd.git'\''' ';' 'export '\''fork_branch=245'\''' ';' 'export '\''head_branch=master'\''' ';' 'export '\''pull_title=[#245] Fix inconsistencies in TODO marker detection.'\''' ';' 'export '\''author=yegor256'\''' ';' 'pdd -f /dev/null' ';' 'bundle install --no-color' ';' 'LC_ALL=US-ASCII bundle exec rake' ';'
+ sensitive=()
+ set -ex -o pipefail
+ cd repo
+ git remote add fork git@github.com:c71n93/pdd.git
+ git remote update
Fetching origin
Fetching fork
From github.com:c71n93/pdd
 * [new branch]      245        -> fork/245
 * [new branch]      master     -> fork/master
+ args=()
+ '[' default == default ']'
+ args+=(--ff)
+ '[' default == no ']'
+ '[' default == only ']'
+ '[' false == true ']'
+ BRANCH=__rultor
++ wc -l
++ git show-branch __rultor
+ '[' 0 -gt 0 ']'
+ export BRANCH
+ git status
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean
+ git checkout -B __rultor fork/245
Switched to a new branch '__rultor'
Branch '__rultor' set up to track remote branch '245' from 'fork'.
+ git checkout -B master origin/master
Switched to and reset branch 'master'
Branch 'master' set up to track remote branch 'master' from 'origin'.
Your branch is up to date with 'origin/master'.
+ '[' false == true ']'
+ KEY=3FD3FA7E9AF0FA4C
+ git merge --gpg-sign=3FD3FA7E9AF0FA4C --no-edit -m '[#245] Fix inconsistencies in TODO marker detection.' --ff __rultor
Updating 6000fac..7e490f6
Fast-forward (no commit created; -m option ignored)
 lib/pdd/source.rb        |  6 +++---
 test/test_source_todo.rb | 41 +++++++++++++++++++++++++++++++++++++++++
 test/test_sources.rb     |  2 +-
 3 files changed, 45 insertions(+), 4 deletions(-)
+ git log -1 --show-signature
error: gpg.ssh.allowedSignersFile needs to be configured and exist for ssh signature verification
commit 7e490f6fd526950a28dff5c2fe9e252adcece4e3
No signature
Author: Roman Korostinskiy <70313618+c71n93@users.noreply.github.com>
Date:   Mon May 11 17:46:46 2026 +0300

    [#245] Fix TODO marker boundaries
+ docker_when_possible
+ true
++ tail -n 1
++ sed 's/ /\n/g'
++ uptime
+ load=0.12
++ bc
++ echo 0.12 '>' 30
+ '[' 0 -eq 1 ']'
+ echo 'load average is 0.12, low enough to run a new Docker container'
load average is 0.12, 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
632ef5283d0f: Pulling fs layer
2be42d221bda: Pulling fs layer
54d1704eb717: Pulling fs layer
f0f51ee5c79e: Pulling fs layer
ec11ce133a4e: Pulling fs layer
71ab1586461a: Pulling fs layer
8e0e2fc3c108: Pulling fs layer
4f4fb700ef54: Pulling fs layer
29e30624c231: Pulling fs layer
4e6c30a6639c: Pulling fs layer
be5819937019: Pulling fs layer
439b5901cf18: Pulling fs layer
f766e619249f: Pulling fs layer
cc48877d15ee: Pulling fs layer
f0f51ee5c79e: Waiting
ec11ce133a4e: Waiting
71ab1586461a: Waiting
8e0e2fc3c108: Waiting
4f4fb700ef54: Waiting
29e30624c231: Waiting
4e6c30a6639c: Waiting
be5819937019: Waiting
439b5901cf18: Waiting
f766e619249f: Waiting
cc48877d15ee: Waiting
2be42d221bda: Verifying Checksum
2be42d221bda: Download complete
632ef5283d0f: Verifying Checksum
632ef5283d0f: Download complete
54d1704eb717: Verifying Checksum
54d1704eb717: Download complete
ec11ce133a4e: Verifying Checksum
ec11ce133a4e: Download complete
8e0e2fc3c108: Verifying Checksum
8e0e2fc3c108: Download complete
4f4fb700ef54: Verifying Checksum
4f4fb700ef54: Download complete
29e30624c231: Verifying Checksum
29e30624c231: Download complete
71ab1586461a: Verifying Checksum
71ab1586461a: Download complete
4e6c30a6639c: Verifying Checksum
4e6c30a6639c: Download complete
f0f51ee5c79e: Verifying Checksum
f0f51ee5c79e: Download complete
439b5901cf18: Verifying Checksum
439b5901cf18: Download complete
cc48877d15ee: Verifying Checksum
cc48877d15ee: Download complete
f766e619249f: Verifying Checksum
f766e619249f: Download complete
be5819937019: Verifying Checksum
be5819937019: Download complete
632ef5283d0f: Pull complete
2be42d221bda: Pull complete
54d1704eb717: Pull complete
f0f51ee5c79e: Pull complete
ec11ce133a4e: Pull complete
71ab1586461a: Pull complete
8e0e2fc3c108: Pull complete
4f4fb700ef54: Pull complete
29e30624c231: Pull complete
4e6c30a6639c: Pull complete
be5819937019: Pull complete
439b5901cf18: Pull complete
f766e619249f: Pull complete
cc48877d15ee: Pull complete
Digest: sha256:8815dbd31a37019b68f2bec6d857635a47372393ef8004fdd7ce1cee7f203800
Status: Downloaded newer image for yegor256/ruby:latest
docker.io/yegor256/ruby:latest
+ docker ps --filter=status=exited
+ grep --quiet '\scqfn_pdd_246\s*$'
+ ls -al .
total 48
drwx------  3 ubuntu ubuntu 4096 May 13 10:50 .
drwxrwxrwt 12 root   root   4096 May 13 10:50 ..
-rwxrwxr-x  1 ubuntu ubuntu  666 May 13 10:50 end.sh
-rwxrwxr-x  1 ubuntu ubuntu  498 May 13 10:50 entry.sh
-rw-rw-r--  1 ubuntu ubuntu    5 May 13 10:50 pid
drwxrwxr-x 12 ubuntu ubuntu 4096 May 13 10:50 repo
-rw-rw-r--  1 ubuntu ubuntu   81 May 13 10:50 rubygems.yml
-rwxrwxr-x  1 ubuntu ubuntu 6426 May 13 10:50 run.sh
-rw-rw-r--  1 ubuntu ubuntu  541 May 13 10:50 script.sh
-rw-rw-r--  1 ubuntu ubuntu 7398 May 13 10:51 stdout
++ pwd
++ pwd
+ docker run -t --rm -v /tmp/rultor-0GSe:/main --env=head=git@github.com:cqfn/pdd.git --env=pull_id=246 --env=fork=git@github.com:c71n93/pdd.git --env=fork_branch=245 --env=head_branch=master '--env=pull_title=[#245] Fix inconsistencies in TODO marker detection.' --env=author=yegor256 '--env=scripts=( '\''export '\''\'\'''\''head=git@github.com:cqfn/pdd.git'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''pull_id=246'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''fork=git@github.com:c71n93/pdd.git'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''fork_branch=245'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''head_branch=master'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''pull_title=[#245] Fix inconsistencies in TODO marker detection.'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''author=yegor256'\''\'\'''\'''\'' '\'';'\'' '\''pdd -f /dev/null'\'' '\'';'\'' '\''bundle install --no-color'\'' '\'';'\'' '\''LC_ALL=US-ASCII bundle exec rake'\'' '\'';'\'' )' --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-0GSe/cid -w=/main -v /var/run/docker.sock:/var/run/docker.sock --name=cqfn_pdd_246 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 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 /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 'head=git@github.com:cqfn/pdd.git' ; export 'pull_id=246' ; export 'fork=git@github.com:c71n93/pdd.git' ; export 'fork_branch=245' ; export 'head_branch=master' ; export 'pull_title=[#245] Fix inconsistencies in TODO marker detection.' ; export 'author=yegor256' ; pdd -f /dev/null ; bundle install --no-color ; LC_ALL=US-ASCII bundle exec rake ;
+ 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.5 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 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_bin.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.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.3.1
Installing rake 13.3.1
Fetching ansi 1.5.0
Installing ansi 1.5.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.0.1
Installing cucumber-messages 32.0.1
Fetching cucumber-gherkin 38.0.0
Installing cucumber-gherkin 38.0.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.0.1
Installing bigdecimal 4.0.1 with native extensions
Fetching cucumber-cucumber-expressions 19.0.0
Installing cucumber-cucumber-expressions 19.0.0
Fetching cucumber-html-formatter 22.3.0
Installing cucumber-html-formatter 22.3.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.3 (x86_64-linux-gnu)
Installing ffi 1.17.3 (x86_64-linux-gnu)
Fetching memoist3 1.0.0
Installing memoist3 1.0.0
Fetching sys-uname 1.4.1
Installing sys-uname 1.4.1
Fetching cucumber 10.2.0
Installing cucumber 10.2.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.3.3
Installing aruba 2.3.3
Fetching ast 2.4.3
Installing ast 2.4.3
Fetching backtrace 0.4.1
Installing backtrace 0.4.1
Fetching date 3.5.1
Installing date 3.5.1 with native extensions
Fetching docile 1.4.1
Installing docile 1.4.1
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 erb 6.0.1
Installing erb 6.0.1 with native extensions
Fetching json 2.18.1
Installing json 2.18.1 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 prism 1.9.0
Installing prism 1.9.0 with native extensions
Fetching minitest 6.0.1
Installing minitest 6.0.1
Fetching minitest-mock 5.27.0
Installing minitest-mock 5.27.0
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 nokogiri 1.19.0 (x86_64-linux-gnu)
Installing nokogiri 1.19.0 (x86_64-linux-gnu)
Fetching parallel 1.27.0
Installing parallel 1.27.0
Fetching parser 3.3.10.1
Installing parser 3.3.10.1
Fetching stringio 3.2.0
Installing stringio 3.2.0 with native extensions
Fetching psych 5.3.1
Installing psych 5.3.1 with native extensions
Fetching qbash 0.7.2
Installing qbash 0.7.2
Fetching tsort 0.2.0
Installing tsort 0.2.0
Fetching rdoc 6.17.0
Installing rdoc 6.17.0
Fetching regexp_parser 2.11.3
Installing regexp_parser 2.11.3
Fetching rexml 3.4.4
Installing rexml 3.4.4
Fetching rubocop-ast 1.49.0
Installing rubocop-ast 1.49.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.84.2
Installing rubocop 1.84.2
Fetching rubocop-minitest 0.38.2
Installing rubocop-minitest 0.38.2
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 2.1.0
Installing simplecov-cobertura 2.1.0
Bundle complete! 17 Gemfile dependencies, 71 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 15361

TestBin
  test_removes_puzzle                                            32m PASS0m (0.41s)
  test_prints_help                                               32m PASS0m (0.40s)

TestSourceTodo
  test_todo_inside_larger_token_is_not_a_puzzle                  32m PASS0m (0.00s)
  test_todo_not_puzzle                                           32m PASS0m (0.00s)
  test_multiple_todo_colon                                       32m PASS0m (0.00s)
  test_todo_colon_parsing_multi_line_random_prefix               32m PASS0m (0.00s)
  test_todo_backslash_escape                                     32m PASS0m (0.00s)
  test_todo_colon_parsing                                        32m PASS0m (0.00s)
  test_todo_failing_no_space_before                              32m PASS0m (0.00s)
  test_standalone_todo_inside_a_string_literal_is_not_a_puzzle   32m PASS0m (0.00s)
  test_todo_colon_failing_no_ticket                              32m PASS0m (0.00s)
  test_todo_inside_a_string_literal_is_not_a_puzzle              32m PASS0m (0.00s)
  test_todo_colon_parsing_multi_line_with_empty_line_and_space   32m PASS0m (0.00s)
  test_todo_parsing                                              32m PASS0m (0.00s)
  test_todo_utf8_encoded_body                                    32m PASS0m (0.00s)
  test_todo_parsing_multi_line                                   32m PASS0m (0.00s)
  test_todo_failing_space_after_hash                             32m PASS0m (0.00s)
  test_todo_markers_with_comma_are_not_puzzles                   32m PASS0m (0.00s)
  test_todo_failing_no_ticket                                    32m PASS0m (0.00s)
  test_todo_parsing_puzzle_last_empty_line                       32m PASS0m (0.00s)
  test_todo_parsing_puzzle_javadoc_with_empty_line               32m PASS0m (0.00s)
  test_standalone_at_todo_inside_a_string_literal_is_not_a_puzzle32m PASS0m (0.00s)
  test_todo_colon_parsing_double_puzzle_with_empty_line          32m PASS0m (0.00s)
  test_todo_colon_failing_no_space_before                        32m PASS0m (0.00s)
  test_todo_colon_parsing_multi_line_with_empty_line             32m PASS0m (0.00s)
  test_todo_colon_parsing_multi_line                             32m PASS0m (0.00s)
  test_todo_colon_failing_space_after_hash                       32m PASS0m (0.00s)

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.73s)

TestRakeTask
  test_basic                                                     32m PASS0m (0.00s)

TestMaxDuplicates
  test_max_duplicates_without_errors                             32m PASS0m (0.00s)
  test_max_duplicates                                            32m PASS0m (0.00s)

TestText
  test_min_words                                                 32m PASS0m (0.00s)

TestRoles
  test_correct_role                                              32m PASS0m (0.00s)
  test_empty_role                                                32m PASS0m (0.00s)
  test_incorrect_role                                            32m PASS0m (0.00s)

TestEstimates
  test_min                                                       32m PASS0m (0.00s)
  test_max                                                       32m PASS0m (0.00s)

TestSources
/home/r/repo/lib/pdd/sources.rb:73: warning: undefining the allocator of T_DATA class FileMagic
  test_includes_recursively                                      32m PASS0m (0.01s)
  test_detects_xml_file                                          32m PASS0m (0.00s)
  test_fails_with_verbose_output                                 32m PASS0m (0.00s)
  test_includes_by_pattern                                       32m PASS0m (0.01s)
  test_excludes_by_pattern                                       32m PASS0m (0.00s)
  test_detects_js_file                                           32m PASS0m (0.00s)
  test_iterator                                                  32m PASS0m (0.01s)
  test_detects_all_text_files                                    32m PASS0m (0.03s)
  test_excludes_recursively                                      32m PASS0m (0.00s)
  test_ignores_binary_files                                      32m PASS0m (0.02s)

TestSource
  test_skips_invalid_git_mail                                    32m PASS0m (0.02s)
  test_multiple_puzzles_single_comment_block                     32m PASS0m (0.01s)
  test_failing_on_broken_unicode                                 32m PASS0m (0.00s)
  test_skips_uncommitted_changes                                 32m PASS0m (0.02s)
  test_failing_on_puzzle_with_space_after_dash                   32m PASS0m (0.00s)
  test_failing_on_invalid_puzzle_without_hash_sign               32m PASS0m (0.00s)
  test_parsing                                                   32m PASS0m (0.00s)
  test_succeed_despite_bad_puzzles                               32m PASS0m (0.00s)
  test_space_indented_multiline_puzzle_block                     32m PASS0m (0.00s)
  test_failing_on_incomplete_puzzle                              32m PASS0m (0.00s)
  test_uses_github_login                                         32m PASS0m (0.02s)
  test_parsing_leading_spaces                                    32m PASS0m (0.00s)
  test_failing_on_puzzle_without_leading_space                   32m PASS0m (0.00s)
  test_skips_thymeleaf_close_tag                                 32m PASS0m (0.00s)
  test_succeed_utf8_encoded_body                                 32m PASS0m (0.00s)
  test_reads_git_author                                          32m PASS0m (0.02s)
  test_no_prefix_multiline_puzzle_block                          32m PASS0m (0.01s)

TestPDD
  test_basic                                                     32m PASS0m (0.01s)
  test_git_repo                                                  32m PASS0m (0.36s)
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)

Finished in 2.23920s
67 tests, 190 assertions, 32m0 failures, 0 errors, 0m33m0 skips0m
Coverage report generated for test to /home/r/repo/coverage.
Line Coverage: 95.69% (355 / 371)
Formatter SimpleCov::Formatter::CoberturaFormatter failed with REXML::ParseException: Malformed XML: No root element
Line: 3
Position: 214
Last 80 unconsumed characters:
 (/usr/local/bundle/gems/rexml-3.4.4/lib/rexml/parsers/baseparser.rb:271:in 'REXML::Parsers::BaseParser#pull_event')
/usr/local/bin/ruby -S bundle exec cucumber features --strict-undefined
Using the default profile...
90m# SPDX-FileCopyrightText: Copyright (c) 2014-2026 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      &quot;&quot;&quot;0m
/home/r/repo/lib/pdd/sources.rb:73: warning: undefining the allocator of T_DATA class FileMagic
    32mWhen I run bin/pdd with &quot;32m1m-v -s . -f out.xml0m0m32m&quot;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&quot;90m                             # features/step_definitions/steps.rb:580m0m
    32mThen Exit code is zero90m                                          # features/step_definitions/steps.rb:890m0m
    32mAnd XML file &quot;32m1mout.xml0m0m32m&quot; matches &quot;32m1m/puzzles/puzzle[./ticket='44']0m0m32m&quot;90m # features/step_definitions/steps.rb:730m0m
    32mAnd XML file &quot;32m1mout.xml0m0m32m&quot; matches &quot;32m1m/puzzles/puzzle[./ticket='45']0m0m32m&quot;90m # features/step_definitions/steps.rb:730m0m
    32mAnd XML file &quot;32m1mout.xml0m0m32m&quot; matches &quot;32m1m/puzzles[count(puzzle)=2]0m0m32m&quot;90m      # features/step_definitions/steps.rb:730m0m

  Scenario: Rejects unknown options                 90m# features/cli.feature:1300m
    32mGiven I have a &quot;32m1mtest.txt0m0m32m&quot; 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/test20260513-856-odrtlg/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&quot;90m                  # features/step_definitions/steps.rb:420m0m
    32mAnd XML matches &quot;32m1m//puzzle[starts-with(body,'This')]0m0m32m&quot;90m     # features/step_definitions/steps.rb:420m0m
    32mAnd XML matches &quot;32m1m//puzzle[role='DEV']0m0m32m&quot;90m                   # features/step_definitions/steps.rb:420m0m
    32mAnd XML matches &quot;32m1m//puzzle[estimate='0']0m0m32m&quot;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
    32mAnd Text File "32m1ma/test.txt0m0m32m" contains "32m1mHello0m0m32m"90m             # features/step_definitions/steps.rb:810m0m

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/test20260513-856-95nh1q/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/test20260513-856-95nh1q/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)
139 steps (32m139 passed0m)
0m9.845s
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 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.0minvalid byte sequence in US-ASCII
invalid byte sequence in US-ASCII
container e7488160b3f111c3c7fbe92d837b6e4bb4750aa815f3f1eb0539110fea226b99 is dead
Wed May 13 10:52:40 UTC 2026