Fix
Specing framework for Ruby.
Contact
- Home page: http://fixrb.org/
- Bugs/issues: https://github.com/fixrb/fix/issues
- Support: https://stackoverflow.com/questions/tagged/fixrb
Rubies
Installation
Fix is cryptographically signed.
To be sure the gem you install hasn't been tampered with, add my public key (if you haven't already) as a trusted certificate:
$ gem cert --add <(curl -Ls https://raw.github.com/fixrb/fix/master/certs/gem-fixrb-public_cert.pem)
$ gem install fix -P HighSecurity
The HighSecurity
trust profile will verify all gems. All of Fix's dependencies are signed.
Or add this line to your application's Gemfile:
gem 'fix'
And then execute:
$ bundle
Let's get started!
Philosophy
Minimalist
With 148 lines of simple code built on top of Spectus expectation library, facilities such as benchmarking and mocking are not supported. Fix offers however a consistent syntax to focus your BDD.
Resistant
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.
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.
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 RaiseException: 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.