# Generated from unstoppable-0.1.0.gem by gem2rpm -*- rpm-spec -*-
%global gem_name unstoppable

Name: rubygem-%{gem_name}
Version: 0.1.0
Release: 1%{?dist}
Summary: Cucumber extension that ensures all tests run to completion, catching failures and errors along the way and reporting them at completion
License: MIT
URL: https://rubygems.org/gems/unstoppable
Source0: https://rubygems.org/gems/%{gem_name}-%{version}.gem
BuildRequires: ruby(release)
BuildRequires: rubygems-devel
BuildRequires: ruby
# BuildRequires: rubygem(rspec) >= 2.4
# BuildRequires: rubygem(rspec) < 3
# BuildRequires: rubygem(rubygems-tasks) >= 0.2
# BuildRequires: rubygem(rubygems-tasks) < 1
# BuildRequires: rubygem(yard) >= 0.8
# BuildRequires: rubygem(yard) < 1
BuildArch: noarch

%description
Problem:
While Cucumber is an awesome tool, for some kinds of tests it's default
behaviour becomes an obstacle. Testing large batches of input against a slow
error prone system is the source of much frustration. Cucumber will skip
remaining steps on failure or error. This is especially problematic if the
test input is a dynamic collection, *(e.g. results of a database query). This
is opposed to a static collection testing which is solved by a Scenario
Outline.
Solution:
We need to step putside Cucumber's default pass/fail/error handling. Capture
all failures and errors in collections. Log errors and failures. Generate a
pass/fail manifest against the test inputs.
Do not use this for normal BDD style testing, Cucumber's default behaviour is
perfect for that.
Public Interface:
This is a works in progress so I expect changes as usage reveals more.
In your cucumber env.rb
Before do |scenario| setup_unstoppable end
After do |scenario| print unstoppable_failures(scenario) print
unstoppable_errors(scenario) end
In a step definition wrap any operation that you do not wish to stop execution
like so
unstoppable do expect(thing).to be(exected_thing) end
This helper method does the following:
runs executes the block
catches any exception 2a. adds error to errors collection if an error 2b. adds
expectation failure to failures collection if error is an
RSpec::Expectations::ExpectationNotMetError
logs error/failure.


%package doc
Summary: Documentation for %{name}
Requires: %{name} = %{version}-%{release}
BuildArch: noarch

%description doc
Documentation for %{name}.

%prep
%setup -q -n %{gem_name}-%{version}

%build
# Create the gem as gem install only works on a gem file
gem build ../%{gem_name}-%{version}.gemspec

# %%gem_install compiles any C extensions and installs the gem into ./%%gem_dir
# by default, so that we can move it into the buildroot in %%install
%gem_install

%install
mkdir -p %{buildroot}%{gem_dir}
cp -a .%{gem_dir}/* \
        %{buildroot}%{gem_dir}/



%check
pushd .%{gem_instdir}
# rspec spec
popd

%files
%dir %{gem_instdir}
%exclude %{gem_instdir}/.gitignore
%exclude %{gem_instdir}/.yardopts
%license %{gem_instdir}/LICENSE
%license %{gem_instdir}/LICENSE.txt
%{gem_libdir}
%exclude %{gem_cache}
%{gem_spec}

%files doc
%doc %{gem_docdir}
%doc %{gem_instdir}/.document
%exclude %{gem_instdir}/.rspec
%doc %{gem_instdir}/ChangeLog.md
%{gem_instdir}/Gemfile
%{gem_instdir}/Gemfile.lock
%doc %{gem_instdir}/README.md
%{gem_instdir}/Rakefile
%{gem_instdir}/spec
%{gem_instdir}/unstoppable.gemspec

%changelog
* Thu Sep 16 2021 mockbuilder - 0.1.0-1
- Initial package