https://github.com/petitest/petitest
A minimal solid testing framework for Ruby.
https://github.com/petitest/petitest
petitest ruby test-framework
Last synced: about 1 year ago
JSON representation
A minimal solid testing framework for Ruby.
- Host: GitHub
- URL: https://github.com/petitest/petitest
- Owner: petitest
- License: mit
- Created: 2017-03-20T18:30:28.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2017-03-26T06:22:51.000Z (about 9 years ago)
- Last Synced: 2024-05-01T23:19:57.688Z (almost 2 years ago)
- Topics: petitest, ruby, test-framework
- Language: Ruby
- Size: 234 KB
- Stars: 20
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Petitest
[](https://rubygems.org/gems/petitest)
[](http://www.rubydoc.info/github/petitest/petitest)
A minimal solid testing framework for Ruby.

## Installation
Add this line to your application's Gemfile:
```ruby
gem "petitest"
```
And then execute:
```bash
bundle
```
Or install it yourself as:
```bash
gem install petitest
```
## Usage
### Create your test file
Define a child class of `Petitest::Test` with `#test_xxx` methods.
```ruby
require "petitest/autorun"
class ExampleTest < Petitest::Test
def test_addition
assert { 1 + 1 == 100 }
end
end
```
### Run it as a Ruby script
Run your test file as a Ruby script:
```bash
ruby test/example_test.rb
```
```
PetitestTest
#test_one_plus_one_to_be_two
Counts:
1 tests
1 passes
0 failures
0 skips
Times:
Started: 2017-03-25T15:29:21.243918+09:00
Finished: 2017-03-25T15:29:21.244149+09:00
Total: 0.000231s
```
If any test failed, exit code 1 is returned, othewise 0.
```bash
echo $?
```
```
0
```
### Run all tests
Require `"rake/testtask"` and initialize `Rake::TestTask` on your Rakefile like:
```ruby
require "rake/testtask"
Rake::TestTask.new
```
Run `test` rake task that you defined in the above code to run all tests:
```bash
rake test
```
Note that Rake::TestTask's default test file pattern is `test/test*.rb`.
## Assertions
Petitest provides only one assertion method, `#assert`.
```ruby
assert { foo }
```
If you need more assertions, use plugins like [patitest-assertions](https://github.com/petitest/petitest-assertions).
## Configuration
### backtrace_filters
Mechanism for filter out unnecessary lines from error backtrace.
Each element must be able to respond to `#===` method.
```ruby
Petitest.configuration.backtrace_filters = [
-> (line) { line.start_with?("/path/to/petitest/lib") },
]
```
### color
Enable colored output.
```ruby
Petitest.configuration.color = true
```
### color_scheme
Color scheme for colored output.
```ruby
Petitest.configuration.color_scheme = {
detail: :cyan,
error: :red,
pass: :green,
skip: :yellow,
}
```
These color types are available on color scheme configuration:
- `:black`
- `:blue`
- `:bold`
- `:cyan`
- `:green`
- `:magenta`
- `:red`
- `:white`
- `:yellow`
### output
Output path for some subscribers.
```ruby
Petitest.configuration.output = ::STDOUT
Petitest.configuration.output.sync = true
```
### subscribers
Test event subscribers (test reporters are kind of subscribers).
```ruby
Petitest.configuration.subscribers = [
::Petitest::Subscribers::DocomentReportSubscriber.new,
]
```
These subscribers are provided by default:
- `Petitest::Subscribers::DocumentReportSubscriber` (default)
- `Petitest::Subscribers::JsonReportSubscriber`
- `Petitest::Subscribers::ProgressReportSubscriber`
## Official Plugins
Here are some official plugins for Petitest:
- https://github.com/petitest/petitest-assertions
- https://github.com/petitest/petitest-dsl
- https://github.com/petitest/petitest-power_assert
- https://github.com/petitest/petitest-spec
- https://github.com/petitest/petitest-tap
## For developers
### Tree
```
TestPlan
|---TestGroup 1
| |---Test 1-1
| |---Test 1-2
| |---Test 1-3
| `---TestGroup1-1
| |---Test 1-1-1
| |---Test 1-1-2
| `---Test 1-1-3
|---TestGroup2
| |---Test 2-1
| |---Test 2-2
| `---Test 2-3
`---TestGroup3
|---Test 3-1
|---Test 3-2
|---Test 3-3
`---TestGroup3-1
|---Test 3-1-1
|---Test 3-1-2
`---Test 3-1-3
```
### Order
1. Test 1-1
1. Test 1-2
1. Test 1-3
1. Test 1-1-1
1. Test 1-1-2
1. Test 1-1-3
1. Test 2-1
1. Test 2-2
1. Test 2-3
1. Test 3-1
1. Test 3-2
1. Test 3-3
1. Test 3-1-1
1. Test 3-1-2
1. Test 3-1-3
### Events
- `#before_running_test_plan(test_plan)`
- `#before_running_test_group(test_group)`
- `#before_running_test(test)`
- `#after_running_test(test)`
- `#after_running_test_group(test_group)`
- `#after_running_test_plan(test_plan)`