++ dirname ./run.sh
+ cd .
+ echo 1299
+ echo '2.0-SNAPSHOT BUILD'
2.0-SNAPSHOT BUILD
+ date
Mon Jul 27 10:11:38 UTC 2026
+ uptime
10:11:38 up 1 min, 0 users, load average: 1.50, 0.58, 0.21
+ head=git@github.com:yegor256/xcop.git
+ ff=default
+ image=yegor256/ruby
+ rebase=false
+ squash=false
+ head_branch=master
+ author=yegor256
+ tag=0.11.2
+ vars=('--env=head=git@github.com:yegor256/xcop.git' '--env=tag=0.11.2' '--env=scripts=( '\''export '\''\'\'''\''head=git@github.com:yegor256/xcop.git'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''tag=0.11.2'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''head_branch=master'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''author=yegor256'\''\'\'''\'''\'' '\'';'\'' '\''pdd -f /dev/null'\'' '\'';'\'' '\''sudo bundle install --no-color "--gemfile=$(pwd)/Gemfile"'\'' '\'';'\'' '\''bundle exec rake'\'' '\'';'\'' '\''rm -rf *.gem'\'' '\'';'\'' '\''sed -i "s/0\.0\.0/${tag}/g" lib/xcop/version.rb'\'' '\'';'\'' '\''git add lib/xcop/version.rb'\'' '\'';'\'' '\''git commit -m "version set to ${tag}"'\'' '\'';'\'' '\''gem build xcop.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:yegor256/xcop.git'\''' ';' 'export '\''tag=0.11.2'\''' ';' 'export '\''head_branch=master'\''' ';' 'export '\''author=yegor256'\''' ';' 'pdd -f /dev/null' ';' 'sudo bundle install --no-color "--gemfile=$(pwd)/Gemfile"' ';' 'bundle exec rake' ';' 'rm -rf *.gem' ';' 'sed -i "s/0\.0\.0/${tag}/g" lib/xcop/version.rb' ';' 'git add lib/xcop/version.rb' ';' 'git commit -m "version set to ${tag}"' ';' 'gem build xcop.gemspec' ';' 'chmod 0600 ../rubygems.yml' ';' 'gem push *.gem --config-file ../rubygems.yml' ';')
+ directory=
+ container=yegor256_xcop_175
+ as_root=false
+ set -e -o pipefail
+ hostname
ip-172-31-26-40
+ pwd
/tmp/rultor-DvZG
+ git --version
git version 2.34.1
+ docker --version
Docker version 25.0.3, build 4debf41
+ mkdir -p /home/ubuntu/.ssh
+ echo -e 'Host github.com\n\tStrictHostKeyChecking no\n'
+ chmod 600 /home/ubuntu/.ssh/config
+ git clone --recurse-submodules git@github.com:yegor256/xcop.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:yegor256/xcop.git'\''' ']'
+ cd ..
+ cat
+ '[' false = true ']'
+ cat
+ chmod a+x entry.sh
+ cat
+ echo 'export '\''head=git@github.com:yegor256/xcop.git'\''' ';' 'export '\''tag=0.11.2'\''' ';' 'export '\''head_branch=master'\''' ';' 'export '\''author=yegor256'\''' ';' 'pdd -f /dev/null' ';' 'sudo bundle install --no-color "--gemfile=$(pwd)/Gemfile"' ';' 'bundle exec rake' ';' 'rm -rf *.gem' ';' 'sed -i "s/0\.0\.0/${tag}/g" lib/xcop/version.rb' ';' 'git add lib/xcop/version.rb' ';' 'git commit -m "version set to ${tag}"' ';' 'gem build xcop.gemspec' ';' 'chmod 0600 ../rubygems.yml' ';' 'gem push *.gem --config-file ../rubygems.yml' ';'
+ sensitive=()
+ set -ex -o pipefail
+ '[' -z 0.11.2 ']'
+ [[ 0.11.2 =~ ^[a-zA-Z0-9\.\-]+$ ]]
+ echo 'tag name is valid: "0.11.2"'
tag name is valid: "0.11.2"
+ cd repo
++ git tag -l 0.11.2
+ '[' -n '' ']'
+ BRANCH_NAME=__rultor
++ wc -l
++ git show-branch __rultor
+ '[' 0 -gt 0 ']'
+ export BRANCH_NAME
+ git checkout -b __rultor
Switched to a new branch '__rultor'
+ docker_when_possible
+ true
++ tail -n 1
++ sed 's/ /\n/g'
++ uptime
+ load=0.22
++ bc
++ echo 0.22 '>' 30
+ '[' 0 -eq 1 ']'
+ echo 'load average is 0.22, low enough to run a new Docker container'
load average is 0.22, low enough to run a new Docker container
+ break
+ cd ..
+ '[' -n '' ']'
+ use_image=yegor256/ruby
+ docker pull yegor256/ruby
Using default tag: latest
latest: Pulling from yegor256/ruby
cb259a83ac3d: Pulling fs layer
4f4fb700ef54: Pulling fs layer
50778be6ae7c: Pulling fs layer
de39015cb2a0: Pulling fs layer
c5d1f12c356a: Pulling fs layer
e9b75b04736a: Pulling fs layer
74aacb7acb4e: Pulling fs layer
b343964c14ed: Pulling fs layer
2da5d65999c3: Pulling fs layer
de39015cb2a0: Waiting
c5d1f12c356a: Waiting
e9b75b04736a: Waiting
74aacb7acb4e: Waiting
b343964c14ed: Waiting
2da5d65999c3: Waiting
4f4fb700ef54: Verifying Checksum
4f4fb700ef54: Download complete
50778be6ae7c: Verifying Checksum
50778be6ae7c: Download complete
cb259a83ac3d: Verifying Checksum
cb259a83ac3d: Download complete
e9b75b04736a: Verifying Checksum
e9b75b04736a: Download complete
74aacb7acb4e: Verifying Checksum
74aacb7acb4e: Download complete
b343964c14ed: Verifying Checksum
b343964c14ed: Download complete
2da5d65999c3: Verifying Checksum
2da5d65999c3: Download complete
c5d1f12c356a: Verifying Checksum
c5d1f12c356a: Download complete
de39015cb2a0: Verifying Checksum
de39015cb2a0: Download complete
cb259a83ac3d: Pull complete
4f4fb700ef54: Pull complete
50778be6ae7c: Pull complete
de39015cb2a0: Pull complete
c5d1f12c356a: Pull complete
e9b75b04736a: Pull complete
74aacb7acb4e: Pull complete
b343964c14ed: Pull complete
2da5d65999c3: Pull complete
Digest: sha256:1e3d8ad5ebf9fd2b323717b6b1213e233d033d7dec9eaac9d19bf72b6e5caaf7
Status: Downloaded newer image for yegor256/ruby:latest
docker.io/yegor256/ruby:latest
+ docker ps --filter=status=exited
+ grep --quiet '\syegor256_xcop_175\s*$'
+ ls -al .
total 48
drwx------ 3 ubuntu ubuntu 4096 Jul 27 10:11 .
drwxrwxrwt 12 root root 4096 Jul 27 10:11 ..
-rwxrwxr-x 1 ubuntu ubuntu 666 Jul 27 10:11 end.sh
-rwxrwxr-x 1 ubuntu ubuntu 498 Jul 27 10:11 entry.sh
-rw-rw-r-- 1 ubuntu ubuntu 5 Jul 27 10:11 pid
drwxrwxr-x 10 ubuntu ubuntu 4096 Jul 27 10:11 repo
-rw-rw-r-- 1 ubuntu ubuntu 81 Jul 27 10:11 rubygems.yml
-rwxrwxr-x 1 ubuntu ubuntu 6495 Jul 27 10:11 run.sh
-rw-rw-r-- 1 ubuntu ubuntu 649 Jul 27 10:11 script.sh
-rw-rw-r-- 1 ubuntu ubuntu 5398 Jul 27 10:12 stdout
++ pwd
++ pwd
+ docker run -t --rm -v /tmp/rultor-DvZG:/main --env=head=git@github.com:yegor256/xcop.git --env=tag=0.11.2 '--env=scripts=( '\''export '\''\'\'''\''head=git@github.com:yegor256/xcop.git'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''tag=0.11.2'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''head_branch=master'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''author=yegor256'\''\'\'''\'''\'' '\'';'\'' '\''pdd -f /dev/null'\'' '\'';'\'' '\''sudo bundle install --no-color "--gemfile=$(pwd)/Gemfile"'\'' '\'';'\'' '\''bundle exec rake'\'' '\'';'\'' '\''rm -rf *.gem'\'' '\'';'\'' '\''sed -i "s/0\.0\.0/${tag}/g" lib/xcop/version.rb'\'' '\'';'\'' '\''git add lib/xcop/version.rb'\'' '\'';'\'' '\''git commit -m "version set to ${tag}"'\'' '\'';'\'' '\''gem build xcop.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-DvZG/cid -w=/main -v /var/run/docker.sock:/var/run/docker.sock --name=yegor256_xcop_175 yegor256/ruby /main/entry.sh
WARNING: Your kernel does not support OomKillDisable. OomKillDisable discarded.
+ set -e
+ set -o pipefail
+ shopt -s dotglob
+ useradd -m -G sudo r
++ awk -F : '$3 > 100 { print $1 }'
++ cat /etc/group
+ for g in $(cat /etc/group | awk -F ':' '$3 > 100 { print $1 }')
+ usermod -a -G nogroup r
+ for g in $(cat /etc/group | awk -F ':' '$3 > 100 { print $1 }')
+ usermod -a -G ubuntu r
+ for g in $(cat /etc/group | awk -F ':' '$3 > 100 { print $1 }')
+ usermod -a -G systemd-journal r
+ for g in $(cat /etc/group | awk -F ':' '$3 > 100 { print $1 }')
+ usermod -a -G systemd-network r
+ for g in $(cat /etc/group | awk -F ':' '$3 > 100 { print $1 }')
+ usermod -a -G messagebus r
+ for g in $(cat /etc/group | awk -F ':' '$3 > 100 { print $1 }')
+ usermod -a -G _ssh r
+ for g in $(cat /etc/group | awk -F ':' '$3 > 100 { print $1 }')
+ usermod -a -G polkitd r
+ for g in $(cat /etc/group | awk -F ':' '$3 > 100 { print $1 }')
+ usermod -a -G ssh r
+ for g in $(cat /etc/group | awk -F ':' '$3 > 100 { print $1 }')
+ usermod -a -G docker r
+ for g in $(cat /etc/group | awk -F ':' '$3 > 100 { print $1 }')
+ usermod -a -G r r
+ usermod -s /bin/bash r
+ echo '%sudo ALL=(ALL) NOPASSWD:ALL'
+ cp -R /root/.bashrc /root/.cache /root/.gemrc /root/.profile /root/.ssh /home/r
+ cp -R ./cid ./end.sh ./entry.sh ./pid ./repo ./rubygems.yml ./run.sh ./script.sh ./stdout /home/r
+ rm -rf repo
+ chown -R r:r /home/r
+ chmod a+x /home/r/script.sh
+ cat /home/r/script.sh
#!/usr/bin/env bash
set -e
set -o pipefail
if [ -e /home/r/.profile ]; then source /home/r/.profile; fi
shopt -s expand_aliases
alias 'sudo=sudo -i'
export HOME=/home/r
cd "${HOME}/repo"
export 'head=git@github.com:yegor256/xcop.git' ; export 'tag=0.11.2' ; export 'head_branch=master' ; export 'author=yegor256' ; pdd -f /dev/null ; sudo bundle install --no-color "--gemfile=$(pwd)/Gemfile" ; bundle exec rake ; rm -rf *.gem ; sed -i "s/0\.0\.0/${tag}/g" lib/xcop/version.rb ; git add lib/xcop/version.rb ; git commit -m "version set to ${tag}" ; gem build xcop.gemspec ; chmod 0600 ../rubygems.yml ; gem push *.gem --config-file ../rubygems.yml ;
+ su --login r --command /home/r/script.sh
Found 7 lines in /home/r/repo/.pdd
My version is 0.23.1
Ruby version is 3.4.9 at x86_64-linux
Reading from root dir .
Excluding target/**/*
Excluding coverage/**/*
/usr/local/bundle/gems/pdd-0.23.1/lib/pdd/sources.rb:90: warning: undefining the allocator of T_DATA class FileMagic
/home/r/repo/.markdownlint.json is a binary file (21 bytes)
/home/r/repo/logo.svg is a binary file (3833 bytes)
/home/r/repo/renovate.json is a binary file (107 bytes)
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 .pdd ...
Reading .rubocop.yml ...
Reading .rultor.yml ...
Reading Gemfile ...
Reading Gemfile.lock ...
Reading LICENSE.txt ...
Reading LICENSES/MIT.txt ...
Reading README.md ...
Reading REUSE.toml ...
Reading Rakefile ...
Reading bin/xcop ...
Reading cucumber.yml ...
Reading features/cli.feature ...
Reading features/comments.feature ...
Reading features/gem_package.feature ...
Reading features/rake.feature ...
Reading features/step_definitions/steps.rb ...
Reading features/support/env.rb ...
Reading fixtures/idempotent/attributes.xml ...
Reading fixtures/idempotent/cdata.xml ...
Reading fixtures/idempotent/comment-multi-line.xml ...
Reading fixtures/idempotent/comment-single-line.xml ...
Reading fixtures/idempotent/deep-nesting.xml ...
Reading fixtures/idempotent/empty-elements.xml ...
Reading fixtures/idempotent/entities.xml ...
Reading fixtures/idempotent/maven-pom.xml ...
Reading fixtures/idempotent/mixed-content.xml ...
Reading fixtures/idempotent/namespace-used.xml ...
Reading fixtures/idempotent/nested.xml ...
Reading fixtures/idempotent/non-xml.txt ...
Reading fixtures/idempotent/simple.xml ...
Reading fixtures/idempotent/xslt-xpath-namespace.xml ...
Reading lib/xcop/cli.rb ...
Reading lib/xcop/document.rb ...
Reading lib/xcop/rake_task.rb ...
Reading lib/xcop/version.rb ...
Reading test/test__helper.rb ...
Reading test/test_cli.rb ...
Reading test/test_document.rb ...
Reading test/test_idempotent.rb ...
Reading test/test_rake_task.rb ...
Reading xcop.gemspec ...
Don't run Bundler as root. Installing your bundle as root will break this
application for all non-root users on this machine.
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
Don't run Bundler as root. Installing your bundle as root will break this
application for all non-root users on this machine.
Fetching gem metadata from https://rubygems.org/.........
Fetching rake 13.4.2
Installing rake 13.4.2
Fetching ansi 1.6.0
Installing ansi 1.6.0
Fetching ast 2.4.3
Installing ast 2.4.3
Fetching base64 0.3.0
Installing base64 0.3.0
Fetching bigdecimal 4.1.2
Installing bigdecimal 4.1.2 with native extensions
Fetching builder 3.3.0
Installing builder 3.3.0
Fetching cucumber-ci-environment 11.0.0
Installing cucumber-ci-environment 11.0.0
Fetching cucumber-messages 32.3.1
Installing cucumber-messages 32.3.1
Fetching cucumber-gherkin 39.1.0
Installing cucumber-gherkin 39.1.0
Fetching cucumber-tag-expressions 8.1.0
Installing cucumber-tag-expressions 8.1.0
Fetching cucumber-core 16.2.0
Installing cucumber-core 16.2.0
Fetching cucumber-cucumber-expressions 19.0.1
Installing cucumber-cucumber-expressions 19.0.1
Fetching cucumber-html-formatter 23.1.0
Installing cucumber-html-formatter 23.1.0
Fetching diff-lcs 1.6.2
Installing diff-lcs 1.6.2
Fetching logger 1.7.0
Installing logger 1.7.0
Fetching mini_mime 1.1.5
Installing mini_mime 1.1.5
Fetching multi_test 1.1.0
Installing multi_test 1.1.0
Fetching ffi 1.17.4 (x86_64-linux-gnu)
Installing ffi 1.17.4 (x86_64-linux-gnu)
Fetching memoist3 1.0.0
Installing memoist3 1.0.0
Fetching sys-uname 1.5.1
Installing sys-uname 1.5.1
Fetching cucumber 11.1.1
Installing cucumber 11.1.1
Fetching docile 1.4.1
Installing docile 1.4.1
Fetching drb 2.2.3
Installing drb 2.2.3
Fetching ellipsized 0.3.0
Installing ellipsized 0.3.0
Fetching erb 6.0.6
Installing erb 6.0.6 with native extensions
Fetching json 2.21.1
Installing json 2.21.1 with native extensions
Fetching language_server-protocol 3.17.0.6
Installing language_server-protocol 3.17.0.6
Fetching lint_roller 1.1.0
Installing lint_roller 1.1.0
Fetching loog 0.8.0
Installing loog 0.8.0
Fetching prism 1.9.0
Installing prism 1.9.0 with native extensions
Fetching minitest 6.0.6
Installing minitest 6.0.6
Fetching ruby-progressbar 1.13.0
Installing ruby-progressbar 1.13.0
Fetching minitest-reporters 1.8.0
Installing minitest-reporters 1.8.0
Fetching nokogiri 1.19.3 (x86_64-linux-gnu)
Installing nokogiri 1.19.3 (x86_64-linux-gnu)
Fetching parallel 2.1.0
Installing parallel 2.1.0
Fetching parser 3.3.12.0
Installing parser 3.3.12.0
Fetching regexp_parser 2.12.0
Installing regexp_parser 2.12.0
Fetching rubocop-ast 1.50.0
Installing rubocop-ast 1.50.0
Fetching unicode-emoji 4.2.0
Installing unicode-emoji 4.2.0
Fetching unicode-display_width 3.2.0
Installing unicode-display_width 3.2.0
Fetching rubocop 1.88.2
Installing rubocop 1.88.2
Fetching rubocop-elegant 0.7.1
Installing rubocop-elegant 0.7.1
Fetching rubocop-minitest 0.40.0
Installing rubocop-minitest 0.40.0
Fetching rubocop-performance 1.26.1
Installing rubocop-performance 1.26.1
Fetching rubocop-rake 0.7.1
Installing rubocop-rake 0.7.1
Fetching simplecov-html 0.13.2
Installing simplecov-html 0.13.2
Fetching simplecov_json_formatter 0.1.4
Installing simplecov_json_formatter 0.1.4
Fetching simplecov 0.22.0
Installing simplecov 0.22.0
Fetching simplecov-cobertura 3.1.0
Installing simplecov-cobertura 3.1.0
Fetching yard 0.9.45
Installing yard 0.9.45
Bundle complete! 15 Gemfile dependencies, 57 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 5964
TestXcop
test_reports_plain_text_as_not_wellformed 32m PASS0m (0.00s)
test_diff_leaves_no_open_handle 32m PASS0m (0.00s)
test_fix_reports_malformed_when_not_wellformed 32m PASS0m (0.00s)
test_xsd_validation_reports_missing_schema 32m PASS0m (0.00s)
test_xsd_validation_detects_invalid_xml 32m PASS0m (0.00s)
test_xsd_validation_skipped_when_no_schema 32m PASS0m (0.00s)
test_fix_keeps_xpath_attribute_namespace 32m PASS0m (0.00s)
test_fix_removes_unused_namespace 32m PASS0m (0.00s)
test_basic 32m PASS0m (0.00s)
/usr/local/bundle/gems/differ-0.1.2/lib/differ.rb:11: warning: '$;' is deprecated
/usr/local/bundle/gems/differ-0.1.2/lib/differ/diff.rb:31: warning: literal string will be frozen in the future (run with --debug-frozen-string-literal for more information)
/usr/local/bundle/gems/differ-0.1.2/lib/differ/diff.rb:47: warning: literal string will be frozen in the future (run with --debug-frozen-string-literal for more information)
test_diff_flags_unused_namespace 32m PASS0m (0.00s)
test_fixes_document 32m PASS0m (0.00s)
test_xsd_validation_skipped_for_remote_schema 32m PASS0m (0.00s)
/usr/local/bundle/gems/differ-0.1.2/lib/differ.rb:11: warning: '$;' is deprecated
/usr/local/bundle/gems/differ-0.1.2/lib/differ/diff.rb:31: warning: literal string will be frozen in the future (run with --debug-frozen-string-literal for more information)
/usr/local/bundle/gems/differ-0.1.2/lib/differ/diff.rb:47: warning: literal string will be frozen in the future (run with --debug-frozen-string-literal for more information)
test_file_without_tail_eol 32m PASS0m (0.00s)
/usr/local/bundle/gems/differ-0.1.2/lib/differ.rb:11: warning: '$;' is deprecated
/usr/local/bundle/gems/differ-0.1.2/lib/differ/diff.rb:31: warning: literal string will be frozen in the future (run with --debug-frozen-string-literal for more information)
/usr/local/bundle/gems/differ-0.1.2/lib/differ/diff.rb:47: warning: literal string will be frozen in the future (run with --debug-frozen-string-literal for more information)
test_diff_flags_messy_comment 32m PASS0m (0.00s)
test_reports_xml_as_wellformed 32m PASS0m (0.00s)
test_fix_preserves_used_namespace_on_element 32m PASS0m (0.00s)
test_fix_keeps_function_call_namespace 32m PASS0m (0.00s)
test_fix_leaves_malformed_file_untouched 32m PASS0m (0.00s)
test_fix_reshapes_multi_line_comment 32m PASS0m (0.00s)
test_xsd_skipped_for_remote_plain_schema 32m PASS0m (0.00s)
test_validate_leaves_no_open_handle 32m PASS0m (0.00s)
test_fix_keeps_extension_prefixes_namespace 32m PASS0m (0.00s)
test_fix_removes_unused_namespace_nested 32m PASS0m (0.00s)
test_fix_keeps_exclude_result_prefixes_namespace 32m PASS0m (0.00s)
test_fix_leaves_canonical_comments_untouched 32m PASS0m (0.00s)
test_fix_reports_untouched_when_file_canonical 32m PASS0m (0.00s)
test_xsd_validation_passes_for_valid_xml 32m PASS0m (0.00s)
test_fix_preserves_used_namespace_on_attribute 32m PASS0m (0.00s)
test_fix_collapses_single_line_comment 32m PASS0m (0.00s)
test_fix_reports_fixed_when_file_rewritten 32m PASS0m (0.00s)
CLITest
test_fix_invalid_file_changing_file 32m PASS0m (0.00s)
test_fix_keeps_broken_file_intact 32m PASS0m (0.00s)
test_fix_valid_file_no_changes 32m PASS0m (0.00s)
/usr/local/bundle/gems/differ-0.1.2/lib/differ.rb:11: warning: '$;' is deprecated
/usr/local/bundle/gems/differ-0.1.2/lib/differ/diff.rb:63: warning: literal string will be frozen in the future (run with --debug-frozen-string-literal for more information)
/usr/local/bundle/gems/differ-0.1.2/lib/differ/diff.rb:47: warning: literal string will be frozen in the future (run with --debug-frozen-string-literal for more information)
31m<?xml version="1.0"?><root><item>no proper indenting</item></root>0m32m<?xml version="1.0"?>\n
<root>\n
<item>no proper indenting</item>\n
</root>\n0m
test_run_invalid_file_exception_and_messages 32m PASS0m (0.00s)
test_fix_yields_malformed_status_for_broken_file 32m PASS0m (0.00s)
test_run_reports_good_status_for_canonical_file 32m PASS0m (0.00s)
/usr/local/bundle/gems/differ-0.1.2/lib/differ.rb:11: warning: '$;' is deprecated
/usr/local/bundle/gems/differ-0.1.2/lib/differ/diff.rb:63: warning: literal string will be frozen in the future (run with --debug-frozen-string-literal for more information)
/usr/local/bundle/gems/differ-0.1.2/lib/differ/diff.rb:47: warning: literal string will be frozen in the future (run with --debug-frozen-string-literal for more information)
31m<root><item>test</item></root>0m32m<?xml version="1.0"?>\n
<root>\n
<item>test</item>\n
</root>\n0m
test_run_invalid_file_exception 32m PASS0m (0.00s)
test_run_nonexistent_file_exception 32m PASS0m (0.00s)
test_run_skips_plain_text_file 32m PASS0m (0.00s)
/usr/local/bundle/gems/differ-0.1.2/lib/differ.rb:11: warning: '$;' is deprecated
/usr/local/bundle/gems/differ-0.1.2/lib/differ/diff.rb:63: warning: literal string will be frozen in the future (run with --debug-frozen-string-literal for more information)
32m<?xml version="1.0"?>\n0m
test_run_empty_file_runtime_error 32m PASS0m (0.00s)
test_run_doesnt_fail_on_plain_text_file 32m PASS0m (0.00s)
test_run_on_directory_recursively 32m PASS0m (0.00s)
test_fix_multiple_invalid_files 32m PASS0m (0.00s)
test_run_multiple_files_no_exceptions 32m PASS0m (0.00s)
test_run_on_directory_ignores_non_xml_files 32m PASS0m (0.00s)
test_fix_yields_status_for_each_file 32m PASS0m (0.00s)
test_run_valid_file_no_exception 32m PASS0m (0.00s)
IdempotentTest
test_cdata_xml_survives_fix_unchanged 32m PASS0m (0.00s)
test_comment_single_line_xml_survives_fix_unchanged 32m PASS0m (0.00s)
test_deep_nesting_xml_survives_fix_unchanged 32m PASS0m (0.00s)
test_xslt_xpath_namespace_xml_survives_fix_unchanged 32m PASS0m (0.00s)
test_nested_xml_survives_fix_unchanged 32m PASS0m (0.00s)
test_maven_pom_xml_survives_fix_unchanged 32m PASS0m (0.00s)
test_mixed_content_xml_survives_fix_unchanged 32m PASS0m (0.00s)
test_simple_xml_survives_fix_unchanged 32m PASS0m (0.00s)
test_fixtures_directory_is_not_empty 32m PASS0m (0.00s)
test_entities_xml_survives_fix_unchanged 32m PASS0m (0.00s)
test_comment_multi_line_xml_survives_fix_unchanged 32m PASS0m (0.00s)
test_namespace_used_xml_survives_fix_unchanged 32m PASS0m (0.00s)
test_non_xml_txt_survives_fix_unchanged 32m PASS0m (0.00s)
test_empty_elements_xml_survives_fix_unchanged 32m PASS0m (0.00s)
test_attributes_xml_survives_fix_unchanged 32m PASS0m (0.00s)
TestRakeTask
Running xcop...
Inspecting 1 file...
/usr/local/bundle/gems/differ-0.1.2/lib/differ.rb:11: warning: '$;' is deprecated
/usr/local/bundle/gems/differ-0.1.2/lib/differ/diff.rb:63: warning: literal string will be frozen in the future (run with --debug-frozen-string-literal for more information)
/usr/local/bundle/gems/differ-0.1.2/lib/differ/diff.rb:47: warning: literal string will be frozen in the future (run with --debug-frozen-string-literal for more information)
31m<z><a><b></b></a>\n
\n
</z>0m32m<?xml version="1.0"?>\n
<z>\n
<a>\n
<b/>\n
</a>\n
</z>\n0m
Invalid XML formatting in broken.xml
Invalid XML formatting in broken.xml
test_with_broken_xml 32m PASS0m (0.00s)
test_basic 32m PASS0m (0.00s)
Finished in 0.08758s
64 tests, 98 assertions, 32m0 failures, 0 errors, 0m33m0 skips0m
Coverage report generated for test to /home/r/repo/coverage.
Line Coverage: 97.3% (144 / 148)
Coverage report generated for test to /home/r/repo/coverage/coverage.xml.
Line Coverage: 97.3% (144 / 148)
/usr/local/bin/ruby -S bundle exec cucumber
Using the default profile...
90m# SPDX-FileCopyrightText: Copyright (c) 2017-2026 Yegor Bugayenko0m
90m# SPDX-License-Identifier: MIT0m
Feature: Command Line Processing
As an author of XML I want to be able to
call XCOP as a command line tool
Scenario: Help can be printed 90m# features/cli.feature:70m
32mWhen I run bin/xcop with "32m1m-h0m0m32m"90m # features/step_definitions/steps.rb:310m0m
32mThen Exit code is zero90m # features/step_definitions/steps.rb:500m0m
32mAnd Stdout contains "32m1m--help0m0m32m"90m # features/step_definitions/steps.rb:370m0m
Scenario: Version can be printed 90m# features/cli.feature:120m
32mWhen I run bin/xcop with "32m1m--version0m0m32m"90m # features/step_definitions/steps.rb:310m0m
32mThen Exit code is zero90m # features/step_definitions/steps.rb:500m0m
Scenario: Validating correct XML file 90m# features/cli.feature:160m
32mGiven I have a "32m1mtest.xml0m0m32m" file with content:90m # features/step_definitions/steps.rb:260m0m
32m """0m
32m <?xml version="1.0"?>0m
32m <hello>Hello, world!</hello>0m
32m0m
32m """0m
32mWhen I run bin/xcop with "32m1mtest.xml0m0m32m"90m # features/step_definitions/steps.rb:310m0m
32mThen Stdout contains "32m1mtest.xml looks good0m0m32m"90m # features/step_definitions/steps.rb:370m0m
32mAnd Exit code is zero90m # features/step_definitions/steps.rb:500m0m
Scenario: Validating incorrect XML file 90m# features/cli.feature:270m
32mGiven I have a "32m1mabc.xml0m0m32m" file with content:90m # features/step_definitions/steps.rb:260m0m
32m """0m
32m <a><b>something</b>0m
32m </a>0m
32m """0m
32mWhen I run bin/xcop with "32m1mabc.xml0m0m32m"90m # features/step_definitions/steps.rb:310m0m
32mThen Exit code is not zero90m # features/step_definitions/steps.rb:540m0m
Scenario: Fixing incorrect XML file 90m# features/cli.feature:360m
32mGiven I have a "32m1mbroken.xml0m0m32m" file with content:90m # features/step_definitions/steps.rb:260m0m
32m """0m
32m <a><b>something</b>0m
32m </a>0m
32m """0m
32mWhen I run bin/xcop with "32m1m--fix broken.xml0m0m32m"90m # features/step_definitions/steps.rb:310m0m
32mThen Exit code is zero90m # features/step_definitions/steps.rb:500m0m
32mThen I run bin/xcop with "32m1mbroken.xml0m0m32m"90m # features/step_definitions/steps.rb:310m0m
32mThen Exit code is zero90m # features/step_definitions/steps.rb:500m0m
Scenario: Refusing to fix a non-well-formed XML file 90m# features/cli.feature:470m
32mGiven I have a "32m1mgarbage.xml0m0m32m" file with content:90m # features/step_definitions/steps.rb:260m0m
32m """0m
32m this is not XML0m
32m """0m
32mWhen I run bin/xcop with "32m1m--fix garbage.xml0m0m32m"90m # features/step_definitions/steps.rb:310m0m
32mThen Stdout contains "32m1mis not a well-formed XML0m0m32m"90m # features/step_definitions/steps.rb:370m0m
32mAnd Exit code is zero90m # features/step_definitions/steps.rb:500m0m
32mAnd The file "32m1mgarbage.xml0m0m32m" contains "32m1mthis is not XML0m0m32m"90m # features/step_definitions/steps.rb:410m0m
Scenario: Skipping a plain text file while checking 90m# features/cli.feature:570m
32mGiven I have a "32m1mfoo.txt0m0m32m" file with content:90m # features/step_definitions/steps.rb:260m0m
32m """0m
32m not xml at all0m
32m """0m
32mWhen I run bin/xcop with "32m1mfoo.txt0m0m32m"90m # features/step_definitions/steps.rb:310m0m
32mThen Stdout contains "32m1mis not a well-formed XML, skipping it0m0m32m"90m # features/step_definitions/steps.rb:370m0m
32mAnd Exit code is zero90m # features/step_definitions/steps.rb:500m0m
Scenario: Validating all files in the current directory by default 90m# features/cli.feature:660m
32mGiven I have a "32m1mauto.xml0m0m32m" file with content:90m # features/step_definitions/steps.rb:260m0m
32m """0m
32m <?xml version="1.0"?>0m
32m <hello>Hello, world!</hello>0m
32m0m
32m """0m
32mAnd I have a "32m1mnested/deep.xsl0m0m32m" file with content:90m # features/step_definitions/steps.rb:260m0m
32m """0m
32m <?xml version="1.0"?>0m
32m <hello>Hello, world!</hello>0m
32m0m
32m """0m
32mWhen I run bin/xcop with "32m1m0m0m32m"90m # features/step_definitions/steps.rb:310m0m
32mThen Stdout contains "32m1mauto.xml looks good0m0m32m"90m # features/step_definitions/steps.rb:370m0m
32mAnd Stdout contains "32m1mdeep.xsl looks good0m0m32m"90m # features/step_definitions/steps.rb:370m0m
32mAnd Exit code is zero90m # features/step_definitions/steps.rb:500m0m
Scenario: Validating a directory of XML files recursively 90m# features/cli.feature:840m
32mGiven I have a "32m1mpkg/top.xml0m0m32m" file with content:90m # features/step_definitions/steps.rb:260m0m
32m """0m
32m <?xml version="1.0"?>0m
32m <hello>Hello, world!</hello>0m
32m0m
32m """0m
32mAnd I have a "32m1mpkg/nested/deep.xsl0m0m32m" file with content:90m # features/step_definitions/steps.rb:260m0m
32m """0m
32m <?xml version="1.0"?>0m
32m <hello>Hello, world!</hello>0m
32m0m
32m """0m
32mWhen I run bin/xcop with "32m1mpkg0m0m32m"90m # features/step_definitions/steps.rb:310m0m
32mThen Stdout contains "32m1mtop.xml looks good0m0m32m"90m # features/step_definitions/steps.rb:370m0m
32mAnd Stdout contains "32m1mdeep.xsl looks good0m0m32m"90m # features/step_definitions/steps.rb:370m0m
32mAnd Exit code is zero90m # features/step_definitions/steps.rb:500m0m
Feature: Comment Formatting
As an author of XML I want XCOP to enforce
a single canonical layout for XML comments
Scenario: Messy single-line comment is rejected 90m# features/comments.feature:70m
32mGiven I have a "32m1msingle.xml0m0m32m" file with content:90m # features/step_definitions/steps.rb:260m0m
32m """0m
32m <?xml version="1.0"?>0m
32m <a>0m
32m <!-- text -->0m
32m </a>0m
32m0m
32m """0m
32mWhen I run bin/xcop with "32m1msingle.xml0m0m32m"90m # features/step_definitions/steps.rb:310m0m
32mThen Exit code is not zero90m # features/step_definitions/steps.rb:540m0m
Scenario: Messy single-line comment is fixed 90m# features/comments.feature:190m
32mGiven I have a "32m1msingle.xml0m0m32m" file with content:90m # features/step_definitions/steps.rb:260m0m
32m """0m
32m <?xml version="1.0"?>0m
32m <a>0m
32m <!-- text -->0m
32m </a>0m
32m0m
32m """0m
32mWhen I run bin/xcop with "32m1m--fix single.xml0m0m32m"90m # features/step_definitions/steps.rb:310m0m
32mThen Exit code is zero90m # features/step_definitions/steps.rb:500m0m
32mAnd I run bin/xcop with "32m1msingle.xml0m0m32m"90m # features/step_definitions/steps.rb:310m0m
32mThen Exit code is zero90m # features/step_definitions/steps.rb:500m0m
32mAnd Stdout contains "32m1msingle.xml looks good0m0m32m"90m # features/step_definitions/steps.rb:370m0m
Scenario: Over-indented multi-line comment is rejected 90m# features/comments.feature:340m
32mGiven I have a "32m1mmulti.xml0m0m32m" file with content:90m # features/step_definitions/steps.rb:260m0m
32m """0m
32m <?xml version="1.0"?>0m
32m <a>0m
32m <!--0m
32m line10m
32m line20m
32m -->0m
32m </a>0m
32m0m
32m """0m
32mWhen I run bin/xcop with "32m1mmulti.xml0m0m32m"90m # features/step_definitions/steps.rb:310m0m
32mThen Exit code is not zero90m # features/step_definitions/steps.rb:540m0m
Scenario: Over-indented multi-line comment is fixed 90m# features/comments.feature:490m
32mGiven I have a "32m1mmulti.xml0m0m32m" file with content:90m # features/step_definitions/steps.rb:260m0m
32m """0m
32m <?xml version="1.0"?>0m
32m <a>0m
32m <!--0m
32m line10m
32m line20m
32m -->0m
32m </a>0m
32m0m
32m """0m
32mWhen I run bin/xcop with "32m1m--fix multi.xml0m0m32m"90m # features/step_definitions/steps.rb:310m0m
32mThen Exit code is zero90m # features/step_definitions/steps.rb:500m0m
32mAnd I run bin/xcop with "32m1mmulti.xml0m0m32m"90m # features/step_definitions/steps.rb:310m0m
32mThen Exit code is zero90m # features/step_definitions/steps.rb:500m0m
32mAnd Stdout contains "32m1mmulti.xml looks good0m0m32m"90m # features/step_definitions/steps.rb:370m0m
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:700m0m
32mGiven I have a "32m1mexecs.rb0m0m32m" file with content:90m # features/step_definitions/steps.rb:260m0m
32m """0m
32m #!/usr/bin/env ruby0m
32m require 'rubygems'0m
32m spec = Gem::Specification::load('./spec.rb')0m
32m if spec.executables.empty?0m
32m fail 'no executables: ' + File.read('./spec.rb')0m
32m end0m
32m """0m
/tmp/test20260727-591-r0ersr/xcop/lib/xcop/version.rb:9: warning: already initialized constant Xcop::VERSION
/home/r/repo/lib/xcop/version.rb:9: warning: previous definition of VERSION was here
32mWhen I run bash with:90m # features/step_definitions/steps.rb:640m0m
32m """0m
32m cd xcop0m
32m gem build xcop.gemspec0m
32m gem specification --ruby xcop-*.gem > ../spec.rb0m
32m cd ..0m
32m ruby execs.rb0m
32m """0m
32mThen Exit code is zero90m # features/step_definitions/steps.rb:500m0m
Feature: Rake tasks
As a source code writer I want to be able to
run Xcop from Rakefile
Scenario: Xcop can be used in Rakefile 90m# features/rake.feature:70m
32mGiven It is Unix90m # features/step_definitions/steps.rb:700m0m
32mAnd I have a "32m1mRakefile0m0m32m" file with content:90m # features/step_definitions/steps.rb:260m0m
32m """0m
32m require 'xcop/rake_task'0m
32m Xcop::RakeTask.new(:xcop) do |task|0m
32m task.includes = ['good.xml']0m
32m end0m
32m """0m
32mAnd I have a "32m1mgood.xml0m0m32m" file with content:90m # features/step_definitions/steps.rb:260m0m
32m """0m
32m <?xml version="1.0"?>0m
32m <hello>Hello, world!</hello>0m
32m0m
32m """0m
32mWhen I run bash with "32m1mrake xcop0m0m32m"90m # features/step_definitions/steps.rb:580m0m
32mThen Exit code is zero90m # features/step_definitions/steps.rb:500m0m
15 scenarios (32m15 passed0m)
65 steps (32m65 passed0m)
0m5.099s
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 14 files
32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m32m.0m
14 files inspected, 32mno offenses0m detected
[__rultor 40ad891] version set to 0.11.2
1 file changed, 1 insertion(+), 1 deletion(-)
Successfully built RubyGem
Name: xcop
Version: 0.11.2
File: xcop-0.11.2.gem
Pushing gem to https://rubygems.org...
Successfully registered gem: xcop (0.11.2)
+ mv /home/r/repo .
++ whoami
+ chown -R root repo
+ '[' -n '' ']'
++ whoami
+ sudo chown -R ubuntu repo
+ cd repo
+ git checkout __rultor
Already on '__rultor'
+ git tag 0.11.2 -m '0.11.2: tagged by rultor.com'
+ git reset --hard
HEAD is now at 40ad891 version set to 0.11.2
+ git clean -fd
+ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
+ git branch -D __rultor
Deleted branch __rultor (was 40ad891).
+ git push --all origin
Everything up-to-date
+ git push --tags origin
To github.com:yegor256/xcop.git
* [new tag] 0.11.2 -> 0.11.2
container 7d4c69cf4fe026785e190573579e93d1115903e61bac5a71753c5bab39c349ed is dead
Mon Jul 27 10:14:06 UTC 2026