rspec-autotest 0.0.1.pre → 1.0.0.beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NzRkNjFhODIxN2ZjM2Q1ZTUzNjI3NTY5OTRlNDNkOTE4MGM1MmM2OQ==
5
+ data.tar.gz: !binary |-
6
+ ZGVmZTAyZmEyMzYwNTlhMDZiM2U5MjMxMTgyZjBkMjQ5ODk5NTU0Nw==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ MzMwNmIzNDVjN2I4NWNjNWYwODgwMGNmYzQ0YjY0ZDZlMmZkZGU0MzNkN2E5
10
+ YWI1NjRiMWVlZjBjYzY4NWNkYTkyMTNmM2JjY2E5MTUzOGE5NDk3ODJhMDMz
11
+ YzUzY2VmNTRiZGRjYTgwYTRiMTM0OThkMzhlYjc1NTM3OWExZWY=
12
+ data.tar.gz: !binary |-
13
+ NGY1M2I1ODUyNmJiNWY4MWUxZDgxNDk3ODEzMzU0NWM0NmNjYjYwODFkNjNl
14
+ YTI2MDBhMzI5NjZhMzRmNDM0Mjc5NjY5OWJjM2U2YjMzZTBlN2FkNDc5Mzli
15
+ MGY3NTQzNzBmNWE1YjkyZWQ4ZWJhYzllNmZhNDlkYTgwNGJjMWY=
data/.gitignore ADDED
@@ -0,0 +1,21 @@
1
+ .rvmrc
2
+ *.sw?
3
+ .DS_Store
4
+ coverage*
5
+ doc
6
+ rdoc
7
+ pkg
8
+ tmp
9
+ tags
10
+ rerun.txt
11
+ Gemfile.lock
12
+ .bundle
13
+ *.rbc
14
+ bin
15
+ .rbx
16
+ .yardoc
17
+ vendor
18
+ Gemfile-custom
19
+ .idea
20
+ bundle
21
+ .rspec-local
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --default_path spec
2
+ --order rand
3
+ --warnings
data/.travis.yml ADDED
@@ -0,0 +1,13 @@
1
+ language: ruby
2
+ script: "script/test_all 2>&1"
3
+ bundler_args: "--standalone --binstubs"
4
+ rvm:
5
+ - 1.8.7
6
+ - 1.9.2
7
+ - 1.9.3
8
+ - ree
9
+ - jruby-18mode
10
+ - jruby-19mode
11
+ - rbx-18mode
12
+ - rbx-19mode
13
+ - 2.0.0
data/Changelog.md ADDED
@@ -0,0 +1,4 @@
1
+ ### 1.0.0.beta1 / 2013-11-04
2
+ [full changelog](https://github.com/rspec/rspec-autotest/compare/72b712fa4447357c7c0c16d7470a8a74e3f667da...v1.0.0.beta1)
3
+
4
+ Initial ported from rspec-core 2.14. (Jon Rowe)
data/Gemfile ADDED
@@ -0,0 +1,24 @@
1
+ source "https://rubygems.org"
2
+
3
+ gemspec
4
+
5
+ %w[rspec rspec-core rspec-expectations rspec-mocks].each do |lib|
6
+ library_path = File.expand_path("../../#{lib}", __FILE__)
7
+ if File.exist?(library_path)
8
+ gem lib, :path => library_path
9
+ else
10
+ gem lib, :git => "git://github.com/rspec/#{lib}.git", :branch => '2-99-maintenance'
11
+ end
12
+ end
13
+
14
+ ### deps for rdoc.info
15
+ platforms :ruby do
16
+ gem 'yard', '0.8.6.1', :require => false
17
+ gem 'redcarpet', '2.1.1'
18
+ gem 'github-markup', '0.7.2'
19
+ end
20
+
21
+ ### dep for ci/coverage
22
+ gem 'coveralls', :require => false
23
+
24
+ eval File.read('Gemfile-custom') if File.exist?('Gemfile-custom')
data/License.txt ADDED
@@ -0,0 +1,24 @@
1
+ (The MIT License)
2
+
3
+ Copyright (c) 2009 Chad Humphries, David Chelimsky
4
+ Copyright (c) 2006 David Chelimsky, The RSpec Development Team
5
+ Copyright (c) 2005 Steven Baker
6
+
7
+ Permission is hereby granted, free of charge, to any person obtaining
8
+ a copy of this software and associated documentation files (the
9
+ "Software"), to deal in the Software without restriction, including
10
+ without limitation the rights to use, copy, modify, merge, publish,
11
+ distribute, sublicense, and/or sell copies of the Software, and to
12
+ permit persons to whom the Software is furnished to do so, subject to
13
+ the following conditions:
14
+
15
+ The above copyright notice and this permission notice shall be
16
+ included in all copies or substantial portions of the Software.
17
+
18
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
21
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
22
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,71 @@
1
+ # rspec-autotest [![Build Status](https://secure.travis-ci.org/rspec/rspec-autotest.png?branch=master)](http://travis-ci.org/rspec/rspec-autotest) [![Code Climate](https://codeclimate.com/github/rspec/rspec-autotest.png)](https://codeclimate.com/github/rspec/rspec-autotest) [![Coverage Status](https://coveralls.io/repos/rspec/rspec-autotest/badge.png?branch=master)](https://coveralls.io/r/rspec/rspec-autotest?branch=master)
2
+
3
+ rspec-autotest provides integration between autotest and RSpec
4
+
5
+ ## Usage
6
+
7
+ RSpec ships with a specialized subclass of Autotest. To use it, just add a
8
+ `.rspec` file to your project's root directory, and run the `autotest` command
9
+ as normal:
10
+
11
+ $ autotest
12
+
13
+ ## Bundler
14
+
15
+ The `autotest` command generates a shell command that runs your specs. If you
16
+ are using Bundler, and you want the shell command to include `bundle exec`,
17
+ require the Autotest bundler plugin in a `.autotest` file in the project's root
18
+ directory or your home directory:
19
+
20
+ # in .autotest
21
+ require "autotest/bundler"
22
+
23
+ ## Rails
24
+
25
+ To use RSpec and Rails with autotest, bring in the `autotest-rails` gem:
26
+
27
+ ```ruby
28
+ # Gemfile
29
+ gem 'autotest-rails', :group => [:development, :test]
30
+ ```
31
+
32
+ `autotest` will now autodetect RSpec and Rails after you run the `rails
33
+ generate rspec:install` command.
34
+
35
+ ## Gotchas
36
+
37
+ ### Invalid Option: --tty
38
+
39
+ The `--tty` option was [added in rspec-core-2.2.1](changelog), and is used
40
+ internally by RSpec. If you see an error citing it as an invalid option, you'll
41
+ probably see there are two or more versions of rspec-core in the backtrace: one
42
+ < 2.2.1 and one >= 2.2.1.
43
+
44
+ This usually happens because you have a newer rspec-core installed, and an
45
+ older rspec-core specified in a Bundler Gemfile. If this is the case, you can:
46
+
47
+ 1. specify the newer version in the Gemfile (recommended)
48
+ 2. prefix the `autotest` command with `bundle exec`
49
+
50
+
51
+ ## Installation
52
+
53
+ Add this line to your application's Gemfile:
54
+
55
+ gem 'rspec-autotest'
56
+
57
+ And then execute:
58
+
59
+ $ bundle
60
+
61
+ Or install it yourself as:
62
+
63
+ $ gem install rspec-autotest
64
+
65
+ ## Contributing
66
+
67
+ 1. Fork it
68
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
69
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
70
+ 4. Push to the branch (`git push origin my-new-feature`)
71
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+ require "bundler/gem_tasks"
2
+ require "rake"
3
+
4
+ require "rspec/core/rake_task"
5
+ require "rspec/core/version"
6
+
7
+ desc "Run all examples"
8
+ RSpec::Core::RakeTask.new(:spec) do |t|
9
+ t.ruby_opts = %w[-w]
10
+ end
11
+
12
+ task :default => :spec
@@ -0,0 +1 @@
1
+ Autotest.add_discovery { "rspec2" } if File.exist?("./.rspec")
@@ -0,0 +1 @@
1
+ require 'rspec/rails/autotest'
@@ -0,0 +1 @@
1
+ require 'rspec/autotest'
@@ -0,0 +1,70 @@
1
+ require 'rspec/core'
2
+ require 'autotest'
3
+
4
+ # Derived from the `Autotest` class, extends the `autotest` command to work
5
+ # with RSpec.
6
+ #
7
+ class Autotest::Rspec2 < Autotest
8
+
9
+ def initialize
10
+ super()
11
+ clear_mappings
12
+ setup_rspec_project_mappings
13
+
14
+ # Example for Ruby 1.8: http://rubular.com/r/AOXNVDrZpx
15
+ # Example for Ruby 1.9: http://rubular.com/r/85ag5AZ2jP
16
+ self.failed_results_re = /^\s*\d+\).*\n\s+(?:\e\[\d*m)?Failure.*(\n(?:\e\[\d*m)?\s+#\s(.*)?:\d+(?::.*)?(?:\e\[\d*m)?)+$/m
17
+ self.completed_re = /\n(?:\e\[\d*m)?\d* examples?/m
18
+ end
19
+
20
+ # Adds conventional spec-to-file mappings to Autotest configuration.
21
+ def setup_rspec_project_mappings
22
+ add_mapping(%r%^spec/.*_spec\.rb$%) { |filename, _|
23
+ filename
24
+ }
25
+ add_mapping(%r%^lib/(.*)\.rb$%) { |_, m|
26
+ ["spec/#{m[1]}_spec.rb"]
27
+ }
28
+ add_mapping(%r%^spec/(spec_helper|shared/.*)\.rb$%) {
29
+ files_matching %r%^spec/.*_spec\.rb$%
30
+ }
31
+ end
32
+
33
+ # Overrides Autotest's implementation to read rspec output
34
+ def consolidate_failures(failed)
35
+ filters = new_hash_of_arrays
36
+ failed.each do |spec, trace|
37
+ if trace =~ /(.*spec\.rb)/
38
+ filters[$1] << spec
39
+ end
40
+ end
41
+ return filters
42
+ end
43
+
44
+ # Overrides Autotest's implementation to generate the rspec command to run
45
+ def make_test_cmd(files_to_test)
46
+ files_to_test.empty? ? '' :
47
+ %|#{prefix}"#{ruby}"#{suffix} -S "#{RSpec::Core.path_to_executable}" --tty #{normalize(files_to_test).keys.flatten.map { |f| %|"#{f}"|}.join(' ')}|
48
+ end
49
+
50
+ # Generates a map of filenames to Arrays for Autotest
51
+ def normalize(files_to_test)
52
+ files_to_test.keys.inject({}) do |result, filename|
53
+ result.merge!(File.expand_path(filename) => [])
54
+ end
55
+ end
56
+
57
+ private
58
+
59
+ def suffix
60
+ using_bundler? ? "" : defined?(:Gem) ? " -rrubygems" : ""
61
+ end
62
+
63
+ def using_bundler?
64
+ prefix =~ /bundle exec/
65
+ end
66
+
67
+ def gemfile?
68
+ File.exist?('./Gemfile')
69
+ end
70
+ end
@@ -0,0 +1,5 @@
1
+ module RSpec
2
+ module Autotest
3
+ VERSION = "1.0.0.beta1"
4
+ end
5
+ end
@@ -0,0 +1,84 @@
1
+ # (c) Copyright 2006 Nick Sieger <nicksieger@gmail.com>
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person
4
+ # obtaining a copy of this software and associated documentation files
5
+ # (the "Software"), to deal in the Software without restriction,
6
+ # including without limitation the rights to use, copy, modify, merge,
7
+ # publish, distribute, sublicense, and/or sell copies of the Software,
8
+ # and to permit persons to whom the Software is furnished to do so,
9
+ # subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be
12
+ # included in all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
18
+ # BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
19
+ # ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
+ # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ # SOFTWARE.
22
+
23
+ $:.push(*Dir["vendor/rails/*/lib"])
24
+
25
+ require 'active_support/core_ext'
26
+ require 'autotest/rspec2'
27
+
28
+ class Autotest::RailsRspec2 < Autotest::Rspec2
29
+
30
+ def initialize
31
+ super
32
+ setup_rails_rspec2_mappings
33
+ end
34
+
35
+ def setup_rails_rspec2_mappings
36
+ %w{coverage/ db/ doc/ log/ public/ script/ tmp/ vendor/rails vendor/plugins vendor/gems}.each do |exception|
37
+ add_exception(/^([\.\/]*)?#{exception}/)
38
+ end
39
+
40
+ clear_mappings
41
+
42
+ add_mapping(%r%^(test|spec)/fixtures/(.*).yml$%) { |_, m|
43
+ ["spec/models/#{m[2].singularize}_spec.rb"] + files_matching(%r%^spec\/views\/#{m[2]}/.*_spec\.rb$%)
44
+ }
45
+ add_mapping(%r%^spec/.*_spec\.rb$%) { |filename, _|
46
+ filename
47
+ }
48
+ add_mapping(%r%^app/models/(.*)\.rb$%) { |_, m|
49
+ ["spec/models/#{m[1]}_spec.rb"]
50
+ }
51
+ add_mapping(%r%^app/views/(.*)$%) { |_, m|
52
+ files_matching %r%^spec/views/#{m[1]}_spec.rb$%
53
+ }
54
+ add_mapping(%r%^app/controllers/(.*)\.rb$%) { |_, m|
55
+ if m[1] == "application"
56
+ files_matching %r%^spec/controllers/.*_spec\.rb$%
57
+ else
58
+ ["spec/controllers/#{m[1]}_spec.rb"]
59
+ end
60
+ }
61
+ add_mapping(%r%^app/helpers/(.*)_helper\.rb$%) { |_, m|
62
+ if m[1] == "application" then
63
+ files_matching(%r%^spec/(views|helpers)/.*_spec\.rb$%)
64
+ else
65
+ ["spec/helpers/#{m[1]}_helper_spec.rb"] + files_matching(%r%^spec\/views\/#{m[1]}/.*_spec\.rb$%)
66
+ end
67
+ }
68
+ add_mapping(%r%^config/routes\.rb$%) {
69
+ files_matching %r%^spec/(controllers|routing|views|helpers)/.*_spec\.rb$%
70
+ }
71
+ add_mapping(%r%^config/database\.yml$%) { |_, m|
72
+ files_matching %r%^spec/models/.*_spec\.rb$%
73
+ }
74
+ add_mapping(%r%^(spec/(spec_helper|support/.*)|config/(boot|environment(s/test)?))\.rb$%) {
75
+ files_matching %r%^spec/(models|controllers|routing|views|helpers)/.*_spec\.rb$%
76
+ }
77
+ add_mapping(%r%^lib/(.*)\.rb$%) { |_, m|
78
+ ["spec/lib/#{m[1]}_spec.rb"]
79
+ }
80
+ add_mapping(%r%^app/mailers/(.*)\.rb$%) { |_, m|
81
+ ["spec/mailers/#{m[1]}_spec.rb"]
82
+ }
83
+ end
84
+ end
@@ -0,0 +1,33 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'rspec/autotest/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "rspec-autotest"
8
+ spec.version = RSpec::Autotest::VERSION
9
+ spec.authors = ["Steven Baker", "David Chelimsky", "Chad Humphries"]
10
+ spec.email = "rspec-users@rubyforge.org"
11
+ spec.homepage = "https://github.com/rspec/rspec-autotest"
12
+ spec.summary = "rspec-autotest-#{RSpec::Autotest::VERSION}"
13
+ spec.description = "RSpec Autotest integration"
14
+ spec.license = "MIT"
15
+
16
+ spec.rubyforge_project = "rspec"
17
+
18
+ spec.files = `git ls-files`.split($/)
19
+ spec.test_files = spec.files.grep(%r{^(spec|features)/})
20
+ spec.rdoc_options = ["--charset=UTF-8"]
21
+ spec.require_paths = ["lib"]
22
+
23
+ spec.required_ruby_version = '>= 1.8.7'
24
+
25
+ spec.add_dependency "rspec-core", ">= 2.99.0.pre"
26
+
27
+ spec.add_development_dependency "bundler", "~> 1.3"
28
+ spec.add_development_dependency "rake", "~> 10.0.0"
29
+ spec.add_development_dependency "aruba", "~> 0.5"
30
+ spec.add_development_dependency "ZenTest", "~> 4.6"
31
+ spec.add_development_dependency "i18n", "~> 0.6.4"
32
+ spec.add_development_dependency "activesupport", "~> 3.0"
33
+ end
data/script/test_all ADDED
@@ -0,0 +1,39 @@
1
+ #!/bin/bash
2
+
3
+ set -e -x
4
+
5
+ function is_jruby() {
6
+ if ruby -e 'exit RUBY_PLATFORM == "java"'; then
7
+ return 0
8
+ else
9
+ return 1
10
+ fi
11
+ }
12
+
13
+ # Needed by Bundler 1.3: https://github.com/carlhuda/bundler/issues/2382
14
+ export RUBYOPT='-rrbconfig'
15
+
16
+ # idea taken from: http://blog.headius.com/2010/03/jruby-startup-time-tips.html
17
+ export JRUBY_OPTS='-X-C' # disable JIT since these processes are so short lived
18
+
19
+ # force jRuby to use client mode JVM or a compilation mode thats as close as possible,
20
+ # idea taken from https://github.com/jruby/jruby/wiki/Improving-startup-time
21
+ export JAVA_OPTS='-client -XX:+TieredCompilation -XX:TieredStopAtLevel=1'
22
+
23
+ echo "Bundling Standalone so we can run the specs w/o bundler loaded"
24
+ bundle install --standalone --binstubs
25
+
26
+ echo "Running all..."
27
+ bin/rspec spec -b --format progress
28
+
29
+ echo
30
+ echo "--------------------------------------------------------------------"
31
+ echo
32
+
33
+ if is_jruby; then
34
+ echo "Skipping one-by-one spec runs due to expensive JVM load time"
35
+ else
36
+ for file in `find spec -iname '*_spec.rb'`; do
37
+ NO_COVERALLS=1 bin/rspec $file -b --format progress
38
+ done
39
+ fi
@@ -0,0 +1,19 @@
1
+ require "spec_helper"
2
+
3
+ describe "autotest/discover.rb" do
4
+ context "with ./.rspec present" do
5
+ it "adds 'rspec2' to the list of discoveries" do
6
+ File.stub(:exist?).with("./.rspec") { true }
7
+ Autotest.should_receive(:add_discovery)
8
+ load File.expand_path("../../../lib/autotest/discover.rb", __FILE__)
9
+ end
10
+ end
11
+
12
+ context "with ./.rspec absent" do
13
+ it "does not add 'rspec2' to the list of discoveries" do
14
+ File.stub(:exist?) { false }
15
+ Autotest.should_not_receive(:add_discovery)
16
+ load File.expand_path("../../../lib/autotest/discover.rb", __FILE__)
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,45 @@
1
+ require "spec_helper"
2
+
3
+ describe "failed_results_re for autotest" do
4
+ def run_example
5
+ group = RSpec::Core::ExampleGroup.describe("group")
6
+ group.example("example") { yield }
7
+ io = StringIO.new
8
+ formatter = RSpec::Core::Formatters::BaseTextFormatter.new(io)
9
+ reporter = RSpec::Core::Reporter.new(formatter)
10
+
11
+ group.run(reporter)
12
+ reporter.report(1, nil) {}
13
+ io.string
14
+ end
15
+
16
+ shared_examples "autotest failed_results_re" do
17
+ it "matches a failure" do
18
+ output = run_example { fail }
19
+ expect(output).to match(Autotest::Rspec2.new.failed_results_re)
20
+ expect(output).to include(__FILE__.sub(File.expand_path('.'),'.'))
21
+ end
22
+
23
+ it "does not match when there are no failures" do
24
+ output = run_example { } # pass
25
+ expect(output).not_to match(Autotest::Rspec2.new.failed_results_re)
26
+ expect(output).not_to include(__FILE__.sub(File.expand_path('.'),'.'))
27
+ end
28
+ end
29
+
30
+ context "with color enabled" do
31
+ before do
32
+ RSpec.configuration.stub(:color_enabled? => true)
33
+ end
34
+
35
+ include_examples "autotest failed_results_re"
36
+ end
37
+
38
+ context "with color disabled " do
39
+ before do
40
+ RSpec.configuration.stub(:color_enabled? => false)
41
+ end
42
+
43
+ include_examples "autotest failed_results_re"
44
+ end
45
+ end
@@ -0,0 +1,36 @@
1
+ require "spec_helper"
2
+ require "autotest/rails_rspec2"
3
+
4
+ describe Autotest::RailsRspec2 do
5
+
6
+ let(:rails_rspec2_autotest) { Autotest::RailsRspec2.new }
7
+
8
+ describe 'exceptions' do
9
+ let(:exceptions_regexp) { rails_rspec2_autotest.exceptions }
10
+
11
+ it "matches './log/test.log'" do
12
+ expect(exceptions_regexp).to match('./log/test.log')
13
+ end
14
+
15
+ it "matches 'log/test.log'" do
16
+ expect(exceptions_regexp).to match('log/test.log')
17
+ end
18
+
19
+ it "does not match './spec/models/user_spec.rb'" do
20
+ expect(exceptions_regexp).not_to match('./spec/models/user_spec.rb')
21
+ end
22
+
23
+ it "does not match 'spec/models/user_spec.rb'" do
24
+ expect(exceptions_regexp).not_to match('spec/models/user_spec.rb')
25
+ end
26
+ end
27
+
28
+ describe 'mappings' do
29
+ it 'runs model specs when support files change' do
30
+ rails_rspec2_autotest.find_order = %w(spec/models/user_spec.rb spec/support/blueprints.rb)
31
+ expect(rails_rspec2_autotest.test_files_for('spec/support/blueprints.rb')).to(
32
+ include('spec/models/user_spec.rb'))
33
+ end
34
+ end
35
+
36
+ end
@@ -0,0 +1,134 @@
1
+ require "spec_helper"
2
+ require "autotest/rspec2"
3
+
4
+ describe Autotest::Rspec2 do
5
+ let(:rspec_autotest) { Autotest::Rspec2.new }
6
+ let(:spec_cmd) { RSpec::Core.path_to_executable }
7
+ let(:ruby_cmd) { "/path/to/ruby" }
8
+
9
+ before do
10
+ File.stub(:exist?) { false }
11
+ end
12
+
13
+ it "uses autotest's prefix" do
14
+ rspec_autotest.prefix = "this is the prefix "
15
+ expect(rspec_autotest.make_test_cmd({'a' => 'b'})).to match(/this is the prefix/)
16
+ end
17
+
18
+ describe "commands" do
19
+ before do
20
+ rspec_autotest.stub(:ruby => ruby_cmd)
21
+ files = %w[file_one file_two]
22
+ @files_to_test = {
23
+ files[0] => [],
24
+ files[1] => []
25
+ }
26
+ # this is not the inner representation of Autotest!
27
+ rspec_autotest.files_to_test = @files_to_test
28
+ @to_test = files.map { |f| File.expand_path(f) }.join ' '
29
+ end
30
+
31
+ it "uses double quotes for windows compatibility" do
32
+ command = rspec_autotest.make_test_cmd(@files_to_test)
33
+ expect(command).to include('"')
34
+ expect(command).not_to include("'")
35
+ end
36
+
37
+ it "makes the appropriate test command" do
38
+ actual_command = rspec_autotest.make_test_cmd(@files_to_test)
39
+ expected_command = /#{ruby_cmd}.*"#{spec_cmd}" (.*)/
40
+
41
+ expect(actual_command).to match(expected_command)
42
+
43
+ actual_command =~ expected_command
44
+ expect($1).to match(/#{File.expand_path('file_one')}/)
45
+ expect($1).to match(/#{File.expand_path('file_two')}/)
46
+ end
47
+
48
+ it "returns a blank command for no files" do
49
+ expect(rspec_autotest.make_test_cmd({})).to eq('')
50
+ end
51
+
52
+ it "quotes the paths of files to test" do
53
+ cmd = rspec_autotest.make_test_cmd(@files_to_test)
54
+ @files_to_test.keys.each do |file_to_test|
55
+ expect(cmd).to match(/"#{File.expand_path(file_to_test)}"/)
56
+ end
57
+ end
58
+
59
+ it "quotes the path of the ruby executable" do
60
+ cmd = rspec_autotest.make_test_cmd(@files_to_test)
61
+ expect(cmd).to match(%r("/path/to/ruby"))
62
+ end
63
+
64
+ it "gives '--tty' to #{ RSpec::Core.path_to_executable }, not '--autotest'" do
65
+ cmd = rspec_autotest.make_test_cmd(@files_to_test)
66
+ expect(cmd).to match(' --tty ')
67
+ expect(cmd).not_to match(' --autotest ')
68
+ end
69
+ end
70
+
71
+ describe "mappings" do
72
+ before do
73
+ @lib_file = "lib/something.rb"
74
+ @spec_file = "spec/something_spec.rb"
75
+ rspec_autotest.hook :initialize
76
+ end
77
+
78
+ it "finds the spec file for a given lib file" do
79
+ expect(rspec_autotest).to map_specs([@spec_file]).to(@lib_file)
80
+ end
81
+
82
+ it "finds the spec file if given a spec file" do
83
+ expect(rspec_autotest).to map_specs([@spec_file]).to(@spec_file)
84
+ end
85
+
86
+ it "ignores files in spec dir that aren't specs" do
87
+ expect(rspec_autotest).to map_specs([]).to("spec/spec_helper.rb")
88
+ end
89
+
90
+ it "ignores untracked files (in @file)" do
91
+ expect(rspec_autotest).to map_specs([]).to("lib/untracked_file")
92
+ end
93
+ end
94
+
95
+ describe "consolidating failures" do
96
+ let(:subject_file) { "lib/autotest/some.rb" }
97
+ let(:spec_file) { "spec/autotest/some_spec.rb" }
98
+
99
+ it "returns no failures if no failures were given in the output" do
100
+ expect(rspec_autotest.consolidate_failures([[]])).to eq({})
101
+ end
102
+
103
+ it "returns a hash with the spec filename => spec name for each failure or error" do
104
+ failures = [ [ "false should be false", spec_file ] ]
105
+ expect(rspec_autotest.consolidate_failures(failures)).to eq({
106
+ spec_file => ["false should be false"]
107
+ })
108
+ end
109
+
110
+ context "when subject file appears before the spec file in the backtrace" do
111
+ let(:failures) do
112
+ [ [ "false should be false", "#{subject_file}:143:\n#{spec_file}:203:" ] ]
113
+ end
114
+
115
+ it "excludes the subject file" do
116
+ expect(rspec_autotest.consolidate_failures(failures).keys).not_to include(subject_file)
117
+ end
118
+
119
+ it "includes the spec file" do
120
+ expect(rspec_autotest.consolidate_failures(failures).keys).to include(spec_file)
121
+ end
122
+ end
123
+ end
124
+
125
+ describe "normalizing file names" do
126
+ it "ensures that a single file appears in files_to_test only once" do
127
+ @files_to_test = {}
128
+ ['filename.rb', './filename.rb', File.expand_path('filename.rb')].each do |file|
129
+ @files_to_test[file] = []
130
+ end
131
+ expect(rspec_autotest.normalize(@files_to_test)).to have(1).file
132
+ end
133
+ end
134
+ end
@@ -0,0 +1,35 @@
1
+ require 'rubygems'
2
+ require 'rspec/autorun'
3
+ require 'rspec/autotest'
4
+ require 'aruba/api'
5
+
6
+ unless ENV['NO_COVERALLS']
7
+ require 'simplecov' if RUBY_VERSION.to_f > 1.8
8
+ require 'coveralls'
9
+ Coveralls.wear! do
10
+ add_filter '/bundle/'
11
+ add_filter '/spec/'
12
+ add_filter '/tmp/'
13
+ end
14
+ end
15
+
16
+ if RUBY_PLATFORM == 'java'
17
+ # Works around https://jira.codehaus.org/browse/JRUBY-5678
18
+ require 'fileutils'
19
+ ENV['TMPDIR'] = File.expand_path('../../tmp', __FILE__)
20
+ FileUtils.mkdir_p(ENV['TMPDIR'])
21
+ end
22
+
23
+ Dir['./spec/support/**/*.rb'].map {|f| require f}
24
+
25
+ RSpec.configure do |c|
26
+
27
+ c.expect_with :rspec do |expectations|
28
+ expectations.syntax = :expect
29
+ end
30
+
31
+ # runtime options
32
+ c.treat_symbols_as_metadata_keys_with_true_values = true
33
+ c.filter_run :focus
34
+ c.run_all_when_everything_filtered = true
35
+ end
@@ -0,0 +1,21 @@
1
+ RSpec::Matchers.define :map_specs do |specs|
2
+ match do |autotest|
3
+ @specs = specs
4
+ @autotest = prepare(autotest)
5
+ autotest.test_files_for(@file) == specs
6
+ end
7
+
8
+ chain :to do |file|
9
+ @file = file
10
+ end
11
+
12
+ failure_message_for_should do
13
+ "expected #{@autotest.class} to map #{@specs.inspect} to #{@file.inspect}\ngot #{@actual.inspect}"
14
+ end
15
+
16
+ def prepare(autotest)
17
+ find_order = @specs.dup << @file
18
+ autotest.instance_eval { @find_order = find_order }
19
+ autotest
20
+ end
21
+ end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-autotest
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: 6
5
- version: 0.0.1.pre
4
+ version: 1.0.0.beta1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Steven Baker
@@ -11,33 +10,138 @@ authors:
11
10
  autorequire:
12
11
  bindir: bin
13
12
  cert_chain: []
14
- date: 2013-07-15 00:00:00.000000000 Z
13
+ date: 2013-11-05 00:00:00.000000000 Z
15
14
  dependencies:
16
15
  - !ruby/object:Gem::Dependency
16
+ name: rspec-core
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 2.99.0.pre
22
+ type: :runtime
23
+ prerelease: false
17
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ! '>='
27
+ - !ruby/object:Gem::Version
28
+ version: 2.99.0.pre
29
+ - !ruby/object:Gem::Dependency
30
+ name: bundler
31
+ requirement: !ruby/object:Gem::Requirement
18
32
  requirements:
19
33
  - - ~>
20
34
  - !ruby/object:Gem::Version
21
- version: 10.0.0
22
- none: false
35
+ version: '1.3'
36
+ type: :development
23
37
  prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ~>
41
+ - !ruby/object:Gem::Version
42
+ version: '1.3'
43
+ - !ruby/object:Gem::Dependency
24
44
  name: rake
25
45
  requirement: !ruby/object:Gem::Requirement
26
46
  requirements:
27
47
  - - ~>
28
48
  - !ruby/object:Gem::Version
29
49
  version: 10.0.0
30
- none: false
31
50
  type: :development
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ~>
55
+ - !ruby/object:Gem::Version
56
+ version: 10.0.0
57
+ - !ruby/object:Gem::Dependency
58
+ name: aruba
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ~>
62
+ - !ruby/object:Gem::Version
63
+ version: '0.5'
64
+ type: :development
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ~>
69
+ - !ruby/object:Gem::Version
70
+ version: '0.5'
71
+ - !ruby/object:Gem::Dependency
72
+ name: ZenTest
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: '4.6'
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ~>
83
+ - !ruby/object:Gem::Version
84
+ version: '4.6'
85
+ - !ruby/object:Gem::Dependency
86
+ name: i18n
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ~>
90
+ - !ruby/object:Gem::Version
91
+ version: 0.6.4
92
+ type: :development
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ~>
97
+ - !ruby/object:Gem::Version
98
+ version: 0.6.4
99
+ - !ruby/object:Gem::Dependency
100
+ name: activesupport
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - ~>
104
+ - !ruby/object:Gem::Version
105
+ version: '3.0'
106
+ type: :development
107
+ prerelease: false
108
+ version_requirements: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - ~>
111
+ - !ruby/object:Gem::Version
112
+ version: '3.0'
32
113
  description: RSpec Autotest integration
33
114
  email: rspec-users@rubyforge.org
34
115
  executables: []
35
116
  extensions: []
36
117
  extra_rdoc_files: []
37
- files: []
118
+ files:
119
+ - .gitignore
120
+ - .rspec
121
+ - .travis.yml
122
+ - Changelog.md
123
+ - Gemfile
124
+ - License.txt
125
+ - README.md
126
+ - Rakefile
127
+ - lib/autotest/discover.rb
128
+ - lib/autotest/rails_rspec2.rb
129
+ - lib/autotest/rspec2.rb
130
+ - lib/rspec/autotest.rb
131
+ - lib/rspec/autotest/version.rb
132
+ - lib/rspec/rails/autotest.rb
133
+ - rspec-autotest.gemspec
134
+ - script/test_all
135
+ - spec/autotest/discover_spec.rb
136
+ - spec/autotest/failed_results_re_spec.rb
137
+ - spec/autotest/rspec_rails_spec.rb
138
+ - spec/autotest/rspec_spec.rb
139
+ - spec/spec_helper.rb
140
+ - spec/support/matchers.rb
38
141
  homepage: https://github.com/rspec/rspec-autotest
39
142
  licenses:
40
143
  - MIT
144
+ metadata: {}
41
145
  post_install_message:
42
146
  rdoc_options:
43
147
  - --charset=UTF-8
@@ -48,17 +152,22 @@ required_ruby_version: !ruby/object:Gem::Requirement
48
152
  - - ! '>='
49
153
  - !ruby/object:Gem::Version
50
154
  version: 1.8.7
51
- none: false
52
155
  required_rubygems_version: !ruby/object:Gem::Requirement
53
156
  requirements:
54
157
  - - ! '>'
55
158
  - !ruby/object:Gem::Version
56
159
  version: 1.3.1
57
- none: false
58
160
  requirements: []
59
161
  rubyforge_project: rspec
60
- rubygems_version: 1.8.24
162
+ rubygems_version: 2.0.7
61
163
  signing_key:
62
- specification_version: 3
63
- summary: rspec-autotest-0.0.1.pre
64
- test_files: []
164
+ specification_version: 4
165
+ summary: rspec-autotest-1.0.0.beta1
166
+ test_files:
167
+ - spec/autotest/discover_spec.rb
168
+ - spec/autotest/failed_results_re_spec.rb
169
+ - spec/autotest/rspec_rails_spec.rb
170
+ - spec/autotest/rspec_spec.rb
171
+ - spec/spec_helper.rb
172
+ - spec/support/matchers.rb
173
+ has_rdoc: