Skip to content

meganemura/rspec-git_specifier

Repository files navigation

RSpec::GitSpecifier

Build Status Circle CI

The collection of helper methods to test git something.

Usage

# spec_helper.rb
require 'rspec/commit_specifier'
# repository_spec.rb
describe 'Repository' do

  include RSpec::GitSpecifier   # or RSpec.configuration.include RSpec::GitSpecifier
                                # it defines `commits` and other helper methods to test repository

  describe 'commit messages' do
    subject { commits.map(&:message) }

    it { is_expected.to all(be) }
    it { is_expected.to all(match(/\A.*(?:\n\Z|\n\n)/)) }   # force second line to be blank
    it { is_expected.to all(match(/\A.*[^.]\n/)) }          # force first line to end with [^.]

    describe 'every lines' do
      subject { super().map { |messages| messages.lines.map(&:strip) } }

      it 'should be 72 chars or fewer' do
        expect(subject.map(&:size).max).to be <= 72
      end

      describe 'summary line' do
        subject { super().map(&:first) }

        it 'should be 50 chars or fewer' do
          expect(subject.map(&:size)).to all(be <= 50)
        end

        # start with uppercase character or command
        commands = %w(bundle rake rails guard sed)
        it { is_expected.to all(match(/\A(?:[A-Z0-9]|#{commands.join('|')})/)) }
      end
    end
  end

  describe 'current branch name' do
    subject { current_branch.name }

    it { is_expected.to match(/[a-z0-9-]+/) }
  end
end

About

Define RSpec helper methods to test against git repository (commits, branches, etc).

Resources

License

Stars

Watchers

Forks

Packages

No packages published