An open API service indexing awesome lists of open source software.

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.

Awesome Lists containing this project

README

          

# Petitest

[![Gem Version](https://badge.fury.io/rb/petitest.svg)](https://rubygems.org/gems/petitest)
[![Documentation](http://img.shields.io/badge/docs-rdoc.info-blue.svg)](http://www.rubydoc.info/github/petitest/petitest)

A minimal solid testing framework for Ruby.

![demo](/images/demo.png)

## 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)`