rspec-its-1.2.0/0000755000175000017500000000000012523133152012776 5ustar boutilboutilrspec-its-1.2.0/metadata.yml0000644000175000017500000000705712523133152015312 0ustar boutilboutil--- !ruby/object:Gem::Specification name: rspec-its version: !ruby/object:Gem::Version version: 1.2.0 platform: ruby authors: - Peter Alfvin autorequire: bindir: bin cert_chain: [] date: 2015-02-18 00:00:00.000000000 Z dependencies: - !ruby/object:Gem::Dependency name: rspec-core requirement: !ruby/object:Gem::Requirement requirements: - - ">=" - !ruby/object:Gem::Version version: 3.0.0 type: :runtime prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - ">=" - !ruby/object:Gem::Version version: 3.0.0 - !ruby/object:Gem::Dependency name: rspec-expectations requirement: !ruby/object:Gem::Requirement requirements: - - ">=" - !ruby/object:Gem::Version version: 3.0.0 type: :runtime prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - ">=" - !ruby/object:Gem::Version version: 3.0.0 - !ruby/object:Gem::Dependency name: bundler requirement: !ruby/object:Gem::Requirement requirements: - - "~>" - !ruby/object:Gem::Version version: '1.3' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - "~>" - !ruby/object:Gem::Version version: '1.3' - !ruby/object:Gem::Dependency name: rake requirement: !ruby/object:Gem::Requirement requirements: - - "~>" - !ruby/object:Gem::Version version: 10.1.0 type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - "~>" - !ruby/object:Gem::Version version: 10.1.0 - !ruby/object:Gem::Dependency name: cucumber requirement: !ruby/object:Gem::Requirement requirements: - - "~>" - !ruby/object:Gem::Version version: 1.3.8 type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - "~>" - !ruby/object:Gem::Version version: 1.3.8 - !ruby/object:Gem::Dependency name: aruba requirement: !ruby/object:Gem::Requirement requirements: - - "~>" - !ruby/object:Gem::Version version: '0.5' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - "~>" - !ruby/object:Gem::Version version: '0.5' description: RSpec extension gem for attribute matching email: - palfvin@gmail.com executables: [] extensions: [] extra_rdoc_files: [] files: - ".gitignore" - ".rspec" - ".travis.yml" - Changelog.md - Gemfile - LICENSE.txt - README.md - Rakefile - cucumber.yml - features/its.feature - features/step_definitions/additional_cli_steps.rb - features/support/env.rb - lib/rspec/its.rb - lib/rspec/its/version.rb - rspec-its.gemspec - script/test_all - spec/rspec/its_spec.rb - spec/spec_helper.rb homepage: https://github.com/rspec/rspec-its licenses: - MIT metadata: {} post_install_message: rdoc_options: [] require_paths: - lib required_ruby_version: !ruby/object:Gem::Requirement requirements: - - ">=" - !ruby/object:Gem::Version version: '0' required_rubygems_version: !ruby/object:Gem::Requirement requirements: - - ">=" - !ruby/object:Gem::Version version: '0' requirements: [] rubyforge_project: rubygems_version: 2.4.3 signing_key: specification_version: 4 summary: Provides "its" method formerly part of rspec-core test_files: - features/its.feature - features/step_definitions/additional_cli_steps.rb - features/support/env.rb - spec/rspec/its_spec.rb - spec/spec_helper.rb rspec-its-1.2.0/spec/0000755000175000017500000000000012523133152013730 5ustar boutilboutilrspec-its-1.2.0/spec/spec_helper.rb0000644000175000017500000000042312523133152016545 0ustar boutilboutilrequire 'rspec/its' Dir['./spec/support/**/*'].each {|f| require f} class NullFormatter private def method_missing(method, *args, &block) # ignore end end RSpec.configure do |config| config.run_all_when_everything_filtered = true config.order = 'random' end rspec-its-1.2.0/spec/rspec/0000755000175000017500000000000012523133152015044 5ustar boutilboutilrspec-its-1.2.0/spec/rspec/its_spec.rb0000644000175000017500000001552512523133152017212 0ustar boutilboutilrequire 'spec_helper' module RSpec describe Its do describe "#its" do context "with implicit subject" do context "preserves described_class" do its(:symbol) { expect(described_class).to be Its } its([]) { expect(described_class).to be Its } end end context "with explicit subject" do subject do Class.new do def initialize @call_count = 0 end def call_count @call_count += 1 end end.new end before(:each, :meta) do subject.call_count end context "with some metadata" do its(:call_count, :meta) { should eq(2) } end context "with a call counter" do its(:call_count) { should eq(1) } end context "with nil value" do subject do Class.new do def nil_value nil end end.new end its(:nil_value) { should be_nil } end context "with nested attributes" do subject do Class.new do def name "John" end end.new end its("name") { should eq("John") } its("name.size") { should eq(4) } its("name.size.class") { should eq(Fixnum) } context "using should_not" do its("name") { should_not eq("Paul") } end context "using is_expected" do its("name") { is_expected.to eq("John") } end context "using are_expected" do its("name.chars.to_a") { are_expected.to eq(%w[J o h n]) } end end context "when it responds to #[]" do subject do Class.new do def [](*objects) objects.map do |object| "#{object.class}: #{object.to_s}" end.join("; ") end def name "George" end end.new end its([:a]) { should eq("Symbol: a") } its(['a']) { should eq("String: a") } its([:b, 'c', 4]) { should eq("Symbol: b; String: c; Fixnum: 4") } its(:name) { should eq("George") } context "when referring to an attribute that doesn't exist" do context "it raises an error" do its(:age) do expect do should eq(64) end.to raise_error(NoMethodError) end end end context "when it's a hash" do subject { {:a => {:deep => {:key => "value"}}} } its([:a]) { should eq({:deep => {:key => "value"}}) } its([:a, :deep]) { should eq({:key => "value"}) } its([:a, :deep, :key]) { should eq("value") } context "when referring to a key that doesn't exist" do its([:not_here]) { should be_nil } its([:a, :ghost]) { should be_nil } its([:deep, :ghost]) { expect { should eq("missing") }.to raise_error(NoMethodError) } end end end context "when it does not respond to #[]" do subject { Object.new } context "it raises an error" do its([:a]) do expect do should eq("Symbol: a") end.to raise_error(NoMethodError) end end end context "calling and overriding super" do it "calls to the subject defined in the parent group" do group = RSpec::Core::ExampleGroup.describe(Array) do subject { [1, 'a'] } its(:last) { should eq("a") } describe '.first' do def subject; super().first; end its(:next) { should eq(2) } end end expect(group.run(NullFormatter.new)).to be_truthy end end context "with nil subject" do subject do Class.new do def initialize @counter = -1 end def nil_if_first_time @counter += 1 @counter == 0 ? nil : true end end.new end its(:nil_if_first_time) { should be(nil) } end context "with false subject" do subject do Class.new do def initialize @counter = -1 end def false_if_first_time @counter += 1 @counter > 0 end end.new end its(:false_if_first_time) { should be(false) } end describe 'accessing `subject` in `before` and `let`' do subject { 'my subject' } before { @subject_in_before = subject } let(:subject_in_let) { subject } let!(:eager_loaded_subject_in_let) { subject } # These examples read weird, because we're actually # specifying the behaviour of `its` itself its(nil) { expect(subject).to eq('my subject') } its(nil) { expect(@subject_in_before).to eq('my subject') } its(nil) { expect(subject_in_let).to eq('my subject') } its(nil) { expect(eager_loaded_subject_in_let).to eq('my subject') } end describe "in shared_context" do shared_context "shared stuff" do subject { Array } its(:name) { should eq "Array" } end include_context "shared stuff" end describe "when extending SharedContext" do it 'works with an implicit subject' do shared = Module.new do extend RSpec::SharedContext its(:size) { should eq 0 } end group = RSpec::Core::ExampleGroup.describe(Array) do include shared end group.run(NullFormatter.new) result = group.children.first.examples.first.execution_result # Following conditional needed to work across mix of RSpec and ruby versions without warning status = result.respond_to?(:status) ? result.status : result[:status].to_sym expect(status).to eq(:passed) end end end context "with metadata" do context "preserves access to metadata that doesn't end in hash" do its([], :foo) do |example| expect(example.metadata[:foo]).to be(true) end end context "preserves access to metadata that ends in hash" do its([], :foo, :bar => 17) do |example| expect(example.metadata[:foo]).to be(true) expect(example.metadata[:bar]).to be(17) end end end end end end rspec-its-1.2.0/script/0000755000175000017500000000000012523133152014302 5ustar boutilboutilrspec-its-1.2.0/script/test_all0000755000175000017500000000147412523133152016045 0ustar boutilboutil#!/bin/bash set -e -x # idea taken from: http://blog.headius.com/2010/03/jruby-startup-time-tips.html export JRUBY_OPTS='-X-C' # disable JIT since these processes are so short lived # force jRuby to use client mode JVM or a compilation mode thats as close as possible, # idea taken from https://github.com/jruby/jruby/wiki/Improving-startup-time export JAVA_OPTS='-client -XX:+TieredCompilation -XX:TieredStopAtLevel=1' echo "Running rspec specs" bin/rspec spec --format progress --profile echo "Running cucumber specs" # TODO: it would be nice to figure out how to run the cukes w/o the overhead of # bundler, but just running `bin/cucumber` can fail due to the fact that it # shells out (via aruba) and executes `rspec`--which can pick up the wrong # rspec version if we're not running with bundler. bundle exec cucumber rspec-its-1.2.0/rspec-its.gemspec0000644000175000017500000000217312523133152016257 0ustar boutilboutil# coding: utf-8 lib = File.expand_path('../lib', __FILE__) $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) require 'rspec/its/version' Gem::Specification.new do |spec| spec.name = "rspec-its" spec.version = RSpec::Its::VERSION spec.authors = ["Peter Alfvin"] spec.email = ["palfvin@gmail.com"] spec.description = %q{RSpec extension gem for attribute matching} spec.summary = %q{Provides "its" method formerly part of rspec-core} spec.homepage = "https://github.com/rspec/rspec-its" spec.license = "MIT" spec.files = `git ls-files`.split($/) spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) } spec.test_files = spec.files.grep(%r{^(test|spec|features)/}) spec.require_paths = ["lib"] spec.add_runtime_dependency 'rspec-core', '>= 3.0.0' spec.add_runtime_dependency 'rspec-expectations', '>= 3.0.0' spec.add_development_dependency 'bundler', '~> 1.3' spec.add_development_dependency 'rake', '~> 10.1.0' spec.add_development_dependency 'cucumber', '~> 1.3.8' spec.add_development_dependency 'aruba', '~> 0.5' end rspec-its-1.2.0/lib/0000755000175000017500000000000012523133152013544 5ustar boutilboutilrspec-its-1.2.0/lib/rspec/0000755000175000017500000000000012523133152014660 5ustar boutilboutilrspec-its-1.2.0/lib/rspec/its/0000755000175000017500000000000012523133152015457 5ustar boutilboutilrspec-its-1.2.0/lib/rspec/its/version.rb0000644000175000017500000000007212523133152017470 0ustar boutilboutilmodule RSpec module Its VERSION = "1.2.0" end end rspec-its-1.2.0/lib/rspec/its.rb0000644000175000017500000001026612523133152016011 0ustar boutilboutilrequire 'rspec/its/version' require 'rspec/core' module RSpec module Its # Creates a nested example group named by the submitted `attribute`, # and then generates an example using the submitted block. # # @example # # # This ... # describe Array do # its(:size) { should eq(0) } # end # # # ... generates the same runtime structure as this: # describe Array do # describe "size" do # it "should eq(0)" do # subject.size.should eq(0) # end # end # end # # The attribute can be a `Symbol` or a `String`. Given a `String` # with dots, the result is as though you concatenated that `String` # onto the subject in an expression. # # @example # # describe Person do # subject do # Person.new.tap do |person| # person.phone_numbers << "555-1212" # end # end # # its("phone_numbers.first") { should eq("555-1212") } # end # # When the subject is a `Hash`, you can refer to the Hash keys by # specifying a `Symbol` or `String` in an array. # # @example # # describe "a configuration Hash" do # subject do # { :max_users => 3, # 'admin' => :all_permissions. # 'john_doe' => {:permissions => [:read, :write]}} # end # # its([:max_users]) { should eq(3) } # its(['admin']) { should eq(:all_permissions) } # its(['john_doe', :permissions]) { should eq([:read, :write]) } # # # You can still access to its regular methods this way: # its(:keys) { should include(:max_users) } # its(:count) { should eq(2) } # end # # With an implicit subject, `is_expected` can be used as an alternative # to `should` (e.g. for one-liner use) # # @example # # describe Array do # its(:size) { is_expected.to eq(0) } # end # # You can pass more than one arguments on the `its` block to add # some options to the generated example # # @example # # # This ... # describe Array do # its(:size, :focus) { should eq(0) } # end # # # ... generates the same runtime structure as this: # describe Array do # describe "size" do # it "should eq(0)", :focus do # subject.size.should eq(0) # end # end # end # # Note that this method does not modify `subject` in any way, so if you # refer to `subject` in `let` or `before` blocks, you're still # referring to the outer subject. # # @example # # describe Person do # subject { Person.new } # before { subject.age = 25 } # its(:age) { should eq(25) } # end def its(attribute, *options, &block) its_caller = caller.select {|file_line| file_line !~ %r(/lib/rspec/its) } describe(attribute.to_s, :caller => its_caller) do let(:__its_subject) do if Array === attribute if Hash === subject attribute.inject(subject) {|inner, attr| inner[attr] } else subject[*attribute] end else attribute_chain = attribute.to_s.split('.') attribute_chain.inject(subject) do |inner_subject, attr| inner_subject.send(attr) end end end def is_expected expect(__its_subject) end alias_method :are_expected, :is_expected def should(matcher=nil, message=nil) RSpec::Expectations::PositiveExpectationHandler.handle_matcher(__its_subject, matcher, message) end def should_not(matcher=nil, message=nil) RSpec::Expectations::NegativeExpectationHandler.handle_matcher(__its_subject, matcher, message) end options << {} unless options.last.kind_of?(Hash) options.last.merge!(:caller => its_caller) example(nil, *options, &block) end end end end RSpec.configure do |rspec| rspec.extend RSpec::Its rspec.backtrace_exclusion_patterns << %r(/lib/rspec/its) end RSpec::SharedContext.send(:include, RSpec::Its) rspec-its-1.2.0/features/0000755000175000017500000000000012523133152014614 5ustar boutilboutilrspec-its-1.2.0/features/support/0000755000175000017500000000000012523133152016330 5ustar boutilboutilrspec-its-1.2.0/features/support/env.rb0000644000175000017500000000114412523133152017445 0ustar boutilboutilrequire 'aruba/cucumber' require 'rspec/core' require 'rspec/its' Before do if RUBY_PLATFORM =~ /java/ || defined?(Rubinius) @aruba_timeout_seconds = 60 else @aruba_timeout_seconds = 10 end end Aruba.configure do |config| config.before_cmd do |cmd| set_env('JRUBY_OPTS', "-X-C #{ENV['JRUBY_OPTS']}") # disable JIT since these processes are so short lived end end if RUBY_PLATFORM == 'java' Aruba.configure do |config| config.before_cmd do |cmd| set_env('RBXOPT', "-Xint=true #{ENV['RBXOPT']}") # disable JIT since these processes are so short lived end end if defined?(Rubinius) rspec-its-1.2.0/features/step_definitions/0000755000175000017500000000000012523133152020162 5ustar boutilboutilrspec-its-1.2.0/features/step_definitions/additional_cli_steps.rb0000644000175000017500000000171412523133152024667 0ustar boutilboutilWhen /^I run rspec( with the documentation option)?$/ do |documentation| rspec_its_gem_location = File.expand_path('../../../lib/rspec/its', __FILE__) require_option = "--require #{rspec_its_gem_location}" format_option = documentation ? "--format documentation" : "" rspec_command = ['rspec', require_option, format_option, 'example_spec.rb'].join(' ') step "I run `#{rspec_command}`" end When /^I run rspec specifying line number (\d+)$/ do |line_number| rspec_its_gem_location = File.expand_path('../../../lib/rspec/its', __FILE__) require_option = "--require #{rspec_its_gem_location}" file_specification = "example_spec.rb:#{line_number}" rspec_command = ['rspec', require_option, file_specification].join(' ') step "I run `#{rspec_command}`" end Then /^the example(?:s)? should(?: all)? pass$/ do step %q{the output should contain "0 failures"} step %q{the output should not contain "0 examples"} step %q{the exit status should be 0} end rspec-its-1.2.0/features/its.feature0000644000175000017500000000636712523133152017004 0ustar boutilboutilFeature: attribute of subject Scenario: specify value of a nested attribute Given a file named "example_spec.rb" with: """ruby class Person attr_reader :phone_numbers def initialize @phone_numbers = [] end end describe Person do context "with one phone number (555-1212)"do subject do person = Person.new person.phone_numbers << "555-1212" person end its("phone_numbers.first") { should eq("555-1212") } end end """ When I run rspec with the documentation option Then the output should contain: """ Person with one phone number (555-1212) phone_numbers.first should eq "555-1212" """ Scenario: specify value of an attribute of a hash Given a file named "example_spec.rb" with: """ruby describe Hash do context "with two items" do subject do {:one => 'one', :two => 'two'} end its(:size) { should eq(2) } end end """ When I run rspec Then the examples should all pass Scenario: specify value for key in a hash Given a file named "example_spec.rb" with: """ruby describe Hash do context "with keys :one and 'two'" do subject do {:one => 1, "two" => 2} end its([:one]) { should eq(1) } its(["two"]) { should eq(2) } end end """ When I run rspec Then the examples should all pass Scenario: specify value for key in a hash-like object Given a file named "example_spec.rb" with: """ruby require 'matrix' describe Matrix do context "with values [[1, 2], [3, 4]]" do subject do Matrix[[1, 2], [3, 4]] end its([0, 1]) { should eq(2) } its([1, 0]) { should eq(3) } its([1, 2]) { should be_nil } end end """ When I run rspec Then the examples should all pass Scenario: failures are correctly reported as coming from the `its` line Given a file named "example_spec.rb" with: """ruby describe Array do context "when first created" do its(:size) { should_not eq(0) } end end """ When I run rspec Then the output should contain "Failure/Error: its(:size) { should_not eq(0) }" And the output should not match /#[^\n]*rspec[\x2f]its/ Scenario: examples can be specified by exact line number Given a file named "example_spec.rb" with: """ruby describe Array do context "when first created" do its(:size) { should eq(0) } end end """ When I run rspec specifying line number 3 Then the examples should all pass Scenario: examples can be specified by line number within containing block Given a file named "example_spec.rb" with: """ruby describe Array do context "when first created" do its(:size) { should eq(0) } end it "should never execute this" do expect(true).to be(false) end end """ When I run rspec specifying line number 2 Then the examples should all pass rspec-its-1.2.0/cucumber.yml0000644000175000017500000000020612523133152015324 0ustar boutilboutildefault: --require features --strict --format progress --tags ~@wip features wip: --require features --tags @wip:3 --wip features rspec-its-1.2.0/Rakefile0000644000175000017500000000046312523133152014446 0ustar boutilboutilrequire "bundler" Bundler.setup Bundler::GemHelper.install_tasks require "rake" require "rspec/core/rake_task" require "cucumber/rake/task" Cucumber::Rake::Task.new(:cucumber) desc "Run all examples" RSpec::Core::RakeTask.new(:spec) do |t| t.ruby_opts = %w[-w] end task :default => [:spec, :cucumber] rspec-its-1.2.0/README.md0000644000175000017500000000403612523133152014260 0ustar boutilboutil# RSpec::Its [![Build Status](https://travis-ci.org/rspec/rspec-its.svg)](https://travis-ci.org/rspec/rspec-its) RSpec::Its provides the `its` method as a short-hand to specify the expected value of an attribute. ## Installation Add this line to your application's Gemfile: gem 'rspec-its' And then execute: $ bundle Or install it yourself as: $ gem install rspec-its And require it as: require 'rspec/its' ## Usage Use the `its` method to generate a nested example group with a single example that specifies the expected value of an attribute of the subject using `should`, `should_not` or `is_expected`. `its` accepts a symbol or a string, and a block representing the example. its(:size) { should eq(1) } its("length") { should eq(1) } You can use a string with dots to specify a nested attribute (i.e. an attribute of the attribute of the subject). its("phone_numbers.size") { should_not eq(0) } The following expect-style method is also available: its(:size) { is_expected.to eq(1) } as is this alias for pluralized use: its(:keys) { are_expected.to eq([:key1, :key2]) When the subject implements the `[]` operator, you can pass in an array with a single key to refer to the value returned by that operator when passed that key as an argument. its([:key]) { is_expected.to eq(value) } For hashes, multiple keys within the array will result in successive accesses into the hash. For example: subject { {key1: {key2: 3} } } its([:key1, :key2]) { is_expected.to eq(3) For other objects, multiple keys within the array will be passed as separate arguments in a single method call to [], as in: subject { Matrix[ [:a, :b], [:c, :d] ] } its([1,1]) { should eq(:d) } Metadata arguments are supported. its(:size, focus: true) { should eq(1) } ## 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 new Pull Request rspec-its-1.2.0/LICENSE.txt0000644000175000017500000000232112523133152014617 0ustar boutilboutil(The MIT License) Copyright (c) 2013 Peter Alfvin Copyright (c) 2012 David Chelimsky, Myron Marston Copyright (c) 2006 David Chelimsky, The RSpec Development Team Copyright (c) 2005 Steven Baker MIT License Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. rspec-its-1.2.0/Gemfile0000644000175000017500000000124012523133152014266 0ustar boutilboutilsource 'https://rubygems.org' # Specify your gem's dependencies in rspec-its.gemspec gemspec %w[rspec rspec-core rspec-expectations rspec-mocks rspec-support].each do |lib| branch = ENV.fetch('BRANCH','3-1-maintenance') library_path = File.expand_path("../../#{lib}", __FILE__) if File.exist?(library_path) gem lib, :path => library_path else gem lib, :git => "git://github.com/rspec/#{lib}.git", :branch => branch end end # test coverage # gem 'simplecov', :require => false gem 'coveralls', :require => false, :platform => :mri_20 eval File.read('Gemfile-custom') if File.exist?('Gemfile-custom') platform :rbx do gem 'rubysl' end rspec-its-1.2.0/Changelog.md0000644000175000017500000000234012523133152015206 0ustar boutilboutil### 1.2.0 / 2015-02-06 [full changelog](http://github.com/rspec/rspec-its/compare/v1.1.0...v1.2.0) Breaking Changes: Enhancements: * Introduced `are_expected` as alias for `is_expected` Bug fixes: * Restored ability to pass key/value metadata parameters, broken by https://github.com/rspec/rspec-its/commit/71307bc7051f482bfc2798daa390bee9142b0d5a ### 1.1.0 / 2014-04-13 [full changelog](http://github.com/rspec/rspec-its/compare/v1.0.1...v1.1.0) Breaking Changes: Enhancements: * For hashes, multiple array elements are treated as successive access keys * Metadata arguments are now supported Bug fixes: * Enable `its` example selection by line number in command line ### 1.0.1 / 2014-04-13 [full changelog](http://github.com/rspec/rspec-its/compare/v1.0.0...v1.0.1) Bug fixes: * Maintain implicit subject in all cases (addresses problem with latest RSpec 3 version) ### 1.0.0 / 2014-02-07 [full changelog](http://github.com/rspec/rspec-its/compare/v1.0.0.pre...v1.0.0) Breaking Changes: Enhancements: * Add `is_expected` support to match RSpec 3.0 Deprecations: Bug Fixes: * Report failures and backtrace from client perspective ### 1.0.0.pre / 2013-10-11 Features * Initial extraction of `its()` functionality to separate gem rspec-its-1.2.0/.travis.yml0000644000175000017500000000053312523133152015110 0ustar boutilboutillanguage: ruby script: "script/test_all" bundler_args: "--standalone --binstubs --without documentation" rvm: - 1.8.7 - 1.9.2 - 1.9.3 - 2.0.0 - 2.1.0 - 2.1.1 - 2.1.2 - 2.2.0 - ruby-head - ree - jruby-18mode - jruby - jruby-head - rbx matrix: allow_failures: - rvm: jruby-head - rvm: ruby-head - rvm: rbx rspec-its-1.2.0/.rspec0000644000175000017500000000004012523133152014105 0ustar boutilboutil--color --order rand --warnings rspec-its-1.2.0/.gitignore0000644000175000017500000000026512523133152014771 0ustar boutilboutil*.gem *.rbc .bundle .config .yardoc .ruby-version .ruby-gemset Gemfile.lock InstalledFiles _yardoc coverage doc/ lib/bundler/man pkg rdoc spec/reports test/tmp test/version_tmp tmp