A small Rspec clone based on Fix specing framework.
Ruby Shell
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
bin
certs
checksum
lib
test
.gitignore
.travis.yml
.yardopts
CODE_OF_CONDUCT.md
Gemfile
LICENSE.md
README.md
Rakefile
VERSION.semver
pkg_checksum
r_spec.gemspec

README.md

R Spec

Build Status Code Climate Dependency Status Gem Version Inline docs Documentation

A small Rspec clone based on Fix specing framework.


⚠️ Important:

To avoid confusion in the community, please note that the gem of this project is not rspec, it is r_spec (meaning Ruby Spec).

This project is totally independent of rspec.info.

Also, while both gems define an RSpec module, r_spec (which follows the gem naming convention) is still quite different than rspec due to its Ruby Fix dependency.


Contact

Rubies

Terminal sessions

A comparison between the behavior of a small fix-based script (which became the r_spec gem) and rspec.

As a result, with r_spec the build is passing, while with rspec it is failing. Despite two separate contexts, rspec was not able to evaluate some code in isolation to prevent side effects.

What did you RSpec?


Unbelievable but true, sometimes "💩" is equal to 42.

Although fun, this feature can be fixed pretty easily...

Fix RSpec!

Installation

R Spec 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/cyril/r_spec/master/certs/gem-cyril-public_cert.pem)
$ gem install r_spec -P HighSecurity

The HighSecurity trust profile will verify all gems. All of R Spec's dependencies are signed.

Or add this line to your application's Gemfile:

gem 'r_spec'

And then execute:

$ bundle

Usage

Given this greeting_spec.rb spec:

require 'r_spec'

greeting = 'Hello, world!'

RSpec.describe 'Test' do
  context 'Alice' do
    before { greeting.gsub!('world', 'Alice') }
    it { expect(greeting).to eql 'Hello, Alice!' }
  end

  context 'Bob' do
    before { greeting.gsub!('world', 'Bob') }
    it { expect(greeting).to eql 'Hello, Bob!' }
  end
end

It can be tested in the console with the command:

$ ruby greeting_spec.rb
..

Ran 2 tests in 0.010994 seconds
100% compliant - 0 infos, 0 failures, 0 errors

Security

As a basic form of security R Spec 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/r_spec-0.1.0.gem
e9e35e1953104e2d428b0f217e418db3c1baecd9e011b2545f9fcba4ff7e3bba674c6b928b3d8db842a139cd7cc9806d77ebdc7f710ece4f2aecb343703e2451  pkg/r_spec-0.1.0.gem

Versioning

R Spec follows Semantic Versioning 2.0.

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

License

See LICENSE.md file.