R3 is a useful toolkit for Rakudo release managers and developers, aimed to help with Rakudo release preparations.
# install dependencies
zef install --/test https://github.com/melezhik/Sparrow6.git
zef install --/test https://github.com/melezhik/Tomtit.git
zef install --/test https://github.com/melezhik/Tomty.git
# install Bash completions
tom --completion
tomty --completion
# setup local Sparrow repo
s6 --repo-init ~/repo
# upload Sparrow plugins
git clone https://github.com/melezhik/sparrow-plugins /tmp/sparrow-plugins
cd /tmp/sparrow-plugins
cd bash
cd ../directory
s6 --upload
s6 --index-update
git clone https://github.com/melezhik/r3tool
cd r3tool
Run tests
Against certain rakudo commit:
export RAKUBIN=/tmp/whateverable/rakudo-moar/4f61a108b1e717a8e05ee861738a412d55be6ed4/bin/raku
tomty --color --all --show-failed
Against default rakudo:
export RAKUBIN=$(which raku)
tomty --color --all --show-failed
One can run various test groups
Examples:
Certain issue:
tomty --color 4369
Only open, not yet fixed issues:
tomty --only=open --color --show-failed
Only old, fixed issues (aka regression):
tomty --only=closed --color --show-failed
Hard to fix issues:
tomty --only=hardtofix --color --show-failed
More sophisticated filtering
Release 2021_06
, open issues:
tomty --only=rc_2021_06+open --color --show-failed
Release 2021_06
, closed issues but skip slow tests:
tomty --only=rc_2021_06+closed --skip=slow --color --show-failed
Release 2021_05
or 2021_05
, issues:
tomty --only=rc_2021_05,rc_2021_06 --color --show-failed
Test for rakudo release 2021_06 against all bugs, but skipping open,example,slow and requiring unicode support in terminal:
tomty --env=2021_06 --skip=slow,example,open,unicode --color --show-failed
Instead of exporting RAKUBIN
env variable, one can set tomty environment for convenience:
tomty --env-edit 2021_06
%*ENV<RAKUBIN> = '/tmp/whateverable/rakudo-moar/4887a169b47a1b5805dc3d90b5aa4c83a86fc4dd/bin/raku';
%(
);
tomty --all --env=2021_06 --color --show-failed
One can see a list of predefined environments by:
tomty --env-list
One can use this command to generate a stub code for a new Rakudo bug:
tom new-issue
After you've written a test,
Run the following command to run a new test:
tomty <issue-number>
Tags allow to split tests by groups.
To assign tag to test run a following command:
export EDITOR=nano
tomty --edit <issue-number>
Then edit a following tomty test header:
=begin tomty
%(
tag => $["open", "fresh", "slow"]
);
=end tomty
To list available tags:
tomty --list --tags
One can combine --tags
with --only
and --skip
options to list tests with certain tags.
Examples:
List open issues for rc 2021_07:
tomty --tags --only=rc_2021_07+open --color
List closed issues for rc 2021_07, but skipping PR tests
tomty --tags --only=rc_2021_07+closed --skip=pr --color\
These tags are currently supported:
tag | description |
---|---|
open | open issue |
closed | closed issue/PR |
nr | reported but not reproduced |
rc_<YYYY_MM> | issues/PR added in this release |
pr | test for PR |
test_needed | cover some GH issues with "test needed" tag |
clarify | an issue / test case needs clarification |
fr | feature request |
fresh | fresh issue |
freeze | test for "freeze" cases |
slow | running a test takes a considerable time |
hardtofix | hard to fix issue |
unicode | tests require unicode support in terminal |
Remove issue
tom rm-issue
Show Raku version used in tests
tom raku-version
Show last N rakudo commits
tom rakudo-commits
Install Rakudo whateverable certain commit ( requires Sparrow6::Rakudo::Install
module )
export sha=<full sha>
tom install-rakudo-by-commit
Install Rakudo whateverable the latest commit ( requires Sparrow6::Rakudo::Install
module )
tom install-rakudo-latest-commit
- Automatically update
open/close
tags by GH issues statuses
Alexey Melezhik
Following tools are used to run tests:
God Who inspires me in my life!