mrspec 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5c9a8ec8e15096ad06f0d9b147e4f91091f5e5e0
4
- data.tar.gz: 61a4ea17a6e18f6d7c3b7aee9903248f3f76c930
3
+ metadata.gz: 67f780aa00ec439a3a02949504abde99cf6fcf6a
4
+ data.tar.gz: 587d8a5cdb8d00d0cf43116277bd46267a41a0c7
5
5
  SHA512:
6
- metadata.gz: e7df803969216c5e9a1c81f956d84e5ca280b929d4a90f8ae3da596884093a852734f5d8edfad384640fbbacdd8b34f469717dea82f26c4c0699dc86e5a00426
7
- data.tar.gz: cd7a2ce65de8d084b6d70536e363e24f7b3b0918565f91e5b11996197e8743d429dbed449bb489254c139e5f53e427b22aa84801dbe8757e45f752c53757c4aa
6
+ metadata.gz: ca564c0d264259457e0b35417aacd89e7382fa2e3e0ec508068634312cf87e89213a2a0aa9311eb00667bccb4f55ad1414402271a0371164e23359497787d1bd
7
+ data.tar.gz: 4bc61ec3937446e6a0bf1b2ee6a57604f831acd457b8cb85d494ea2febd61427ff59a7fb73f8214e5f679e4d65ba4326a68d53215886bf41a76dce2e4c02192f
data/.rspec CHANGED
@@ -1,5 +1,2 @@
1
1
  --colour
2
2
  --fail-fast
3
- --require error_to_communicate/at_exit
4
- --require error_to_communicate/rspec_formatter
5
- --format WhatWeveGotHereIsAnErrorToCommunicate::RSpecFormatter
data/bin/mrspec CHANGED
@@ -1,5 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ require 'what_weve_got_here_is_an_error_to_communicate'
4
+
3
5
  # Load our lib
4
6
  $LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
5
7
  require 'mrspec'
@@ -22,12 +22,18 @@ class RSpec::Core::Parser
22
22
  # calling exit and toplevel puts, b/c that's what RSpec's does https://github.com/rspec/rspec-core/blob/c7c1154934c42b5f6905bb7bd22025fe6c8a816c/lib/rspec/core/option_parser.rb#L290
23
23
  # and I don't feel like figuring out how to work around it.
24
24
  option_parser.on('-v', '--version', 'Display the version.') do
25
- puts "mrspec #{MRspec::VERSION}\n"\
26
- "rspec-core #{RSpec::Core::Version::STRING}\n"\
27
- "minitest #{Minitest::VERSION}\n"
25
+ $stdout.puts "mrspec #{MRspec::VERSION}\n"\
26
+ "rspec-core #{RSpec::Core::Version::STRING}\n"\
27
+ "minitest #{Minitest::VERSION}\n"
28
28
  exit
29
29
  end
30
30
 
31
+ format_description = option_parser.top.short['f'].desc
32
+ first_option = format_description.find { |s| s[/\[[a-zA-Z]\]/] }
33
+ leading_whitespace = first_option[/^\s*/]
34
+ index = format_description.index first_option
35
+ format_description.insert index, "#{leading_whitespace}[w]hat (we've got here is an error to communicate)"
36
+
31
37
  option_parser
32
38
  end
33
39
 
@@ -1,5 +1,6 @@
1
- require 'mrspec/declare_minitests'
2
1
  require 'rspec/core'
2
+ require 'mrspec/declare_minitests'
3
+ require 'error_to_communicate/rspec_formatter'
3
4
 
4
5
  module MRspec
5
6
  class Configuration < RSpec::Core::Configuration
@@ -8,11 +9,21 @@ module MRspec
8
9
  disable_monkey_patching!
9
10
  filter_gems_from_backtrace 'mrspec', 'minitest'
10
11
  self.pattern = pattern.sub '*_spec.rb', '{*_spec,*_test,test_*}.rb'
12
+ self.default_formatter = WhatWeveGotHereIsAnErrorToCommunicate::RSpecFormatter
11
13
  end
12
14
 
13
15
  def load_spec_files(*)
14
16
  super
15
17
  MRspec::DeclareMinitests.call(RSpec, Minitest, Minitest::Runnable.runnables)
16
18
  end
19
+
20
+ def add_formatter(*args)
21
+ if args.any? { |formatter| formatter == 'w' || formatter =~ /^what/ }
22
+ super WhatWeveGotHereIsAnErrorToCommunicate::RSpecFormatter
23
+ else
24
+ super
25
+ end
26
+ end
27
+
17
28
  end
18
29
  end
@@ -1,3 +1,3 @@
1
1
  module MRspec
2
- VERSION = '0.1.2'
2
+ VERSION = '0.2.0'
3
3
  end
data/lib/mrspec.rb CHANGED
@@ -3,4 +3,4 @@ require 'mrspec/minitest_metadata'
3
3
  require 'mrspec/fix_backtraces_on_minitest_spec'
4
4
  require 'mrspec/runner'
5
5
  require 'mrspec/configuration'
6
- require 'mrspec/option_parser'
6
+ require 'mrspec/add_options_to_rspec_parser'
data/mrspec.gemspec CHANGED
@@ -18,8 +18,8 @@ Gem::Specification.new do |s|
18
18
 
19
19
  s.add_dependency "rspec-core", "~> 3.0"
20
20
  s.add_dependency "minitest", "~> 5.0"
21
+ s.add_dependency "what_weve_got_here_is_an_error_to_communicate", "~> 0.0.3"
21
22
 
22
23
  s.add_development_dependency "haiti", ">= 0.2.2", "< 0.3"
23
24
  s.add_development_dependency "cucumber", "~> 2.0"
24
- s.add_development_dependency "what_weve_got_here_is_an_error_to_communicate", "> 0"
25
25
  end
@@ -0,0 +1,39 @@
1
+ require 'support/helper'
2
+
3
+ class TestFormatterConfiguration < Minitest::Spec
4
+ def formatters_are!(*formatters, &block)
5
+ config = MRspec::Configuration.new
6
+ block.call config
7
+ assert_equal formatters, config.formatters.map(&:class)
8
+ end
9
+
10
+ it 'defaults to WhatWeveGotHereIsAnErrorToCommunicate::RSpecFormatter' do
11
+ refute_equal RSpec::Core::Configuration.new.default_formatter,
12
+ WhatWeveGotHereIsAnErrorToCommunicate::RSpecFormatter
13
+
14
+ assert_equal MRspec::Configuration.new.default_formatter,
15
+ WhatWeveGotHereIsAnErrorToCommunicate::RSpecFormatter
16
+ end
17
+
18
+
19
+ it 'doesn\'t fuck up the normal formatter selection' do
20
+ formatters_are! RSpec::Core::Formatters::ProgressFormatter do |config|
21
+ config.add_formatter 'p'
22
+ end
23
+ end
24
+
25
+
26
+ it 'can be specified with "--format w" and "--format what<anything>"' do
27
+ formatters_are! WhatWeveGotHereIsAnErrorToCommunicate::RSpecFormatter do |config|
28
+ config.add_formatter 'what'
29
+ end
30
+
31
+ formatters_are! WhatWeveGotHereIsAnErrorToCommunicate::RSpecFormatter do |config|
32
+ config.add_formatter 'whatever'
33
+ end
34
+
35
+ assert_raises ArgumentError, /\bwha\b/ do
36
+ MRspec::Configuration.new.add_formatter 'wha'
37
+ end
38
+ end
39
+ end
@@ -70,6 +70,24 @@ class TestParserMonkeyPatches < Minitest::Spec
70
70
  # Giving up on making sure these are equivalent, it's not the end of the world if they aren't
71
71
  # I'm basically at a point where I think that no one should use OptionParser
72
72
  it 'sets the correct description for the versions'
73
+
74
+ it 'includes the what_weve_got_here_is_an_error_to_communicate formatter in the help screen' do
75
+ parser = Parser.new.mrspec_parser({})
76
+ help = record_hostile_parsing parser, '--help'
77
+ formatters = help.lines
78
+ .drop_while { |l| l !~ /--format/ }
79
+ .drop(1)
80
+ .take_while { |l| l =~ /^\s*\[/ }
81
+ refute_empty formatters
82
+ indentation, initials = formatters.map { |formatter_line|
83
+ [formatter_line[/^\s*/].length,
84
+ formatter_line[/\[.\]/]
85
+ ]
86
+ }.transpose
87
+ first_indentation = indentation.first
88
+ indentation.each { |i| assert_equal first_indentation, i }
89
+ assert_equal '[w]', initials.first
90
+ end
73
91
  end
74
92
 
75
93
  it 'stores the current parser in .parser_method' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mrspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josh Cheek
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-29 00:00:00.000000000 Z
11
+ date: 2015-06-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec-core
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '5.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: what_weve_got_here_is_an_error_to_communicate
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.0.3
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.0.3
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: haiti
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -72,20 +86,6 @@ dependencies:
72
86
  - - "~>"
73
87
  - !ruby/object:Gem::Version
74
88
  version: '2.0'
75
- - !ruby/object:Gem::Dependency
76
- name: what_weve_got_here_is_an_error_to_communicate
77
- requirement: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - ">"
80
- - !ruby/object:Gem::Version
81
- version: '0'
82
- type: :development
83
- prerelease: false
84
- version_requirements: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - ">"
87
- - !ruby/object:Gem::Version
88
- version: '0'
89
89
  description: 'Allows you to run Minitest tests and specs with RSpec''s runner, thus
90
90
  you can write both Minitest and RSpec, side-by-side, and take advantage of the many
91
91
  incredibly helpful features it supports (primarily: better formatters, --colour,
@@ -106,17 +106,18 @@ files:
106
106
  - features/mrspec.feature
107
107
  - features/support/env.rb
108
108
  - lib/mrspec.rb
109
+ - lib/mrspec/add_options_to_rspec_parser.rb
109
110
  - lib/mrspec/configuration.rb
110
111
  - lib/mrspec/declare_minitests.rb
111
112
  - lib/mrspec/fix_backtraces_on_minitest_spec.rb
112
113
  - lib/mrspec/minitest_assertion_for_rspec.rb
113
114
  - lib/mrspec/minitest_metadata.rb
114
- - lib/mrspec/option_parser.rb
115
115
  - lib/mrspec/runner.rb
116
116
  - lib/mrspec/version.rb
117
117
  - mrspec.gemspec
118
118
  - test/support/helper.rb
119
119
  - test/support/mock.rb
120
+ - test/test_formatter_configuration.rb
120
121
  - test/test_mrspec.rb
121
122
  - test/test_parser_monkey_patches.rb
122
123
  homepage: https://github.com/JoshCheek/mrspec
@@ -148,6 +149,7 @@ test_files:
148
149
  - features/support/env.rb
149
150
  - test/support/helper.rb
150
151
  - test/support/mock.rb
152
+ - test/test_formatter_configuration.rb
151
153
  - test/test_mrspec.rb
152
154
  - test/test_parser_monkey_patches.rb
153
155
  has_rdoc: