Fix
Specing framework for Ruby.
Contact
- Home page: https://fixrb.dev/
- Bugs/issues: https://github.com/fixrb/fix/issues
- Support: https://stackoverflow.com/questions/tagged/fixrb
Installation
Add this line to your application's Gemfile:
gem 'fix'
And then execute:
$ bundle
Or install it yourself as:
$ gem install fix
Let's get started!
Philosophy
Simple, stupid
With 174 LOC built on top of Spectus expectation library, facilities such as benchmarking and mocking are not supported. Fix offers however a consistent DSL to focus your BDD.
True specifications
While specs behave like documents which can be logic-less, their interpretation should not be questioned regardless of the version of Fix, preventing from software erosion. Also, Fix specs are compliant with RFC 2119.
Low code complexity
Monkey-patching, magic tricks and friends are not included. Instead, animated by authentic and unmuted Ruby objects, unambiguous, understandable and structured specs are encouraged.
Test in isolation
Rather than a random order option to help finding bugs somewhere (and sometimes luck), Fix prevents from side effects by running each context inside a distinct sub-process. As it behaves like a function, no matter how many times you call it, the build status remains the same.
Usage
Given this app:
# duck.rb
class Duck
def walks
'Klop klop!'
end
def swims
'Swoosh...'
end
def quacks
puts 'Quaaaaaack!'
end
end
When you run this:
# duck_spec.rb
require_relative 'duck'
require 'fix'
@bird = Duck.new
Fix.describe @bird do
on :swims do
it { MUST eql 'Swoosh...' }
end
on :speaks do
it { MUST raise_exception NoMethodError }
end
on :sings do
it { MAY eql '♪... ♫...' }
end
end
Then the output should look like this:
$ ruby duck_spec.rb
..I
1. Info: undefined method `sings' for #<Duck:0x007fb60383b740> (NoMethodError).
Ran 3 tests in 0.00038 seconds
100% compliant - 1 infos, 0 failures, 0 errors
Security
As a basic form of security Fix provides a set of SHA512 checksums for
every Gem release. These checksums can be found in the checksum/
directory.
Although these checksums do not prevent malicious users from tampering with a
built Gem they can be used for basic integrity verification purposes.
The checksum of a file can be checked using the sha512sum
command. For
example:
$ sha512sum pkg/fix-0.1.0.gem
d12d7d9c2a4fdfe075cbb7a141fa5f2195175891e4098c7e1a28c8bca655ab44fb9d67b6a2e3991d0f852026c5e4537fdf7e314575c68d1c80b3a4b1eb1c041f pkg/fix-0.1.0.gem
Versioning
Fix follows Semantic Versioning 2.0.
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
License
See LICENSE.md
file.
This project is sponsored by: