rspec-blame 0.1.1 → 0.1.2

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: 03e959676379519da460e2bcfc1b35aaa4cd8911
4
- data.tar.gz: 343f39882eb2cea82d0c8d555c73f94e2bffc453
3
+ metadata.gz: 1f2581ea0444b1dbf50a23c0afe9e37342b4b4ea
4
+ data.tar.gz: a17c38ba2013978c08549b6733cf6400b3c9664f
5
5
  SHA512:
6
- metadata.gz: b33ecf5a099181d20e4ca1389b8ba3a4a18c59aac0f359fadc3306bf9fa38802809e384ff2760eafe79aec29d20ea8c01428e52267c0757a7217723acdf25639
7
- data.tar.gz: 8c77b7c6da2a29a488571d6f895418ce0f7f95f83bb3c3ea9fe89e9b3d652c0803f955ecfc0f1f4bfc59020fa18f18af6fe347c058c9745786bcb1e6b30596b3
6
+ metadata.gz: fab4bc385d851a834e6354b8f8525871c3424538aa9dad1c48c351f4320dd4060d8a0d86de8c95015838aea024818cf63094a308aa534fb5b960d391a9e433f7
7
+ data.tar.gz: 4abad81e752070ddf79b9361a884bd88ea1a86ac43b7b1c6606c36f1970c69641bff35fa3f07ca85fb1de87743cf7cca5b83b0d7c761a7ac3682363a07338b14
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ Gemfile.lock
data/Gemfile ADDED
@@ -0,0 +1,9 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem "rspec-core", ["~> 2.14"]
4
+
5
+ group :develpoment do
6
+ gem "rake"
7
+ gem "mocha"
8
+ gem "rspec"
9
+ end
data/README.md ADDED
@@ -0,0 +1,67 @@
1
+ # rspec-blame
2
+
3
+ rspec-blame provides a Blame RSpec foramtter that outputs the author, commit hash, and
4
+ commit date for the slowest examples when profiling with RSpec in a **git** project.
5
+
6
+ ## Usage
7
+
8
+ gem 'rspec-blame'
9
+
10
+ After including the above line in your Gemfile and running `bundle install`, there are
11
+ several ways to use the formatter:
12
+
13
+ ### Command Line
14
+
15
+ `rspec --require rspec/blame --profile --format Blame file_spec.rb` or `rspec -r rspec/blame -p -f Blame file_spec.rb`
16
+
17
+ ### Rake Task
18
+
19
+ ```ruby
20
+ require "rspec/blame"
21
+ require "rspec/core/rake_task"
22
+
23
+ RSpec::Core::RakeTask.new(:spec) { |t| t.rspec_opts = "-p -f Blame" }
24
+ ```
25
+
26
+ ### Configure RSpec
27
+
28
+ Add `--require "rspec/blame"`, `--profile`, and `--format Blame` to your `.rspec` file.
29
+
30
+ Alternatively, add `require "spec_helper"` to any spec files and add the following to
31
+ your spec_helper.rb:
32
+
33
+ ```ruby
34
+ Rspec.configure do |config|
35
+ config.profile_examples = true
36
+ config.format = Blame
37
+ end
38
+ ```
39
+
40
+ ## Output
41
+
42
+ ```
43
+ ......
44
+
45
+ Slowest 6 examples finished in 0.0074 secs (100.0% of total time: 0.0074 secs).
46
+ Blame dump_profile_slowest_examples prints the number of examples to profile
47
+ 0.0016 secs ./spec/lib/rspec/blame_spec.rb:21 Author: dseeto (i0r2i2s5), Date: 2014-05-28
48
+ Blame dump_profile_slowest_examples prints summary including author, commit, and date
49
+ 0.0012 secs ./spec/lib/rspec/blame_spec.rb:42 Author: dseeto (i0r2i2s5), Date: 2014-05-28
50
+ Blame dump_profile_slowest_examples prints the time taken for the slowest tests
51
+ 0.0012 secs ./spec/lib/rspec/blame_spec.rb:25 Author: dseeto (i0r2i2s5), Date: 2014-05-28
52
+ Blame dump_profile_slowest_examples prints the path to test example
53
+ 0.0012 secs ./spec/lib/rspec/blame_spec.rb:37 Author: dseeto (i0r2i2s5), Date: 2014-05-28
54
+ Blame dump_profile_slowest_examples prints the percentage taken from the total time
55
+ 0.0011 secs ./spec/lib/rspec/blame_spec.rb:33 Author: dseeto (i0r2i2s5), Date: 2014-05-28
56
+ Blame dump_profile_slowest_examples prints the name of the examples
57
+ 0.0011 secs ./spec/lib/rspec/blame_spec.rb:29 Author: dseeto (i0r2i2s5), Date: 2014-05-28
58
+
59
+ Finished in 0.00792 seconds
60
+ 6 examples, 0 failures
61
+ ```
62
+
63
+ ## Author
64
+
65
+ [David Seeto](https://github.com/dseeto)
66
+
67
+ seeto.david@gmail.com
data/Rakefile ADDED
@@ -0,0 +1,5 @@
1
+ require "rspec/core/rake_task"
2
+
3
+ RSpec::Core::RakeTask.new(:test)
4
+
5
+ task :default => [:test]
data/lib/rspec/blame.rb CHANGED
@@ -1,11 +1,8 @@
1
- require 'rspec/core/formatters/progress_formatter'
1
+ require "rspec/core/formatters/progress_formatter"
2
2
 
3
- # Formatter that ouputs the git blame details for the slowest examples.
4
- # Requirements: Project must be version controlled with git.
5
- # Usage: `rspec --profile --formatter Blame rspec_file.rb` or `rspec -p -f Blame rspec_file.rb`
6
- # Alternative Usage: RSpec::Core::RakeTask.new(:task) { |t| t.rspec_opts = "-p -f Blame" }
3
+ # Formatter that ouputs git blame details for the slowest examples.
7
4
  class Blame < RSpec::Core::Formatters::ProgressFormatter
8
- # Overrides ProgressFormatter's output.
5
+ # Appends to ProgressFormatter's output by executing git blame in a subprocess and parsing its output.
9
6
  def dump_profile_slowest_examples
10
7
  number_of_examples_to_profile = RSpec.configuration.profile_examples
11
8
 
@@ -0,0 +1,19 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = "rspec-blame"
3
+ s.version = "0.1.2"
4
+ s.date = "2014-05-23"
5
+ s.license = "MIT"
6
+
7
+ s.authors = ["David Seeto"]
8
+ s.email = "seeto.david@gmail.com"
9
+ s.homepage = "https://github.com/dseeto/rspec-blame"
10
+
11
+ s.summary = "Git blame when profiling your slowest RSpec examples."
12
+ s.description = %q{rspec-blame provides a Blame formatter that outputs git blame details for the slowest examples when profiling with RSpec.}
13
+ s.files = `git ls-files`.split("\n")
14
+
15
+ s.add_runtime_dependency "rspec-core", ["~> 2.14"]
16
+ s.add_development_dependency "rake"
17
+ s.add_development_dependency "rspec"
18
+ s.add_development_dependency "mocha"
19
+ end
@@ -0,0 +1,46 @@
1
+ require "spec_helper"
2
+ require "rspec"
3
+ require "rspec/blame"
4
+
5
+ describe Blame do
6
+ let(:output) { StringIO.new }
7
+
8
+ describe "dump_profile_slowest_examples" do
9
+ before do
10
+ RSpec.configuration.stubs(:profile_examples).returns(1)
11
+ group = RSpec::Core::ExampleGroup.describe("group") { example("example") { sleep 0.001 } }
12
+ group.examples.each { |example| example.execution_result[:run_time] = 0.42 }
13
+
14
+ formatter = Blame.new(output)
15
+ formatter.stubs(:examples).returns(group.examples)
16
+ formatter.expects(:`).returns("i0r2i2s5 ( dseeto 2014-05-23 10)")
17
+
18
+ formatter.dump_profile_slowest_examples
19
+ end
20
+
21
+ it "prints the number of examples to profile" do
22
+ expect(output.string).to match(/Slowest 1 examples/)
23
+ end
24
+
25
+ it "prints the time taken for the slowest tests" do
26
+ expect(output.string).to match(/finished in 0\.42 secs/)
27
+ end
28
+
29
+ it "prints the name of the examples" do
30
+ expect(output.string).to match(/group example/m)
31
+ end
32
+
33
+ it "prints the percentage taken from the total time" do
34
+ expect(output.string).to match(/100.0% of total time/)
35
+ end
36
+
37
+ it "prints the path to test example" do
38
+ filename = __FILE__.split(File::SEPARATOR).last
39
+ expect(output.string).to match(/#{filename}\:11/)
40
+ end
41
+
42
+ it "prints summary including author, commit, and date" do
43
+ expect(output.string).to match(/Author:.*\(.*\), Date:/)
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,5 @@
1
+ ENV["RAILS_ENV"] ||= "test"
2
+
3
+ RSpec.configure do |config|
4
+ config.mock_with :mocha
5
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-blame
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Seeto
@@ -28,52 +28,59 @@ dependencies:
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ! '>='
31
+ - - '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ! '>='
38
+ - - '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ! '>='
45
+ - - '>='
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ! '>='
52
+ - - '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: mocha
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ! '>='
59
+ - - '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ! '>='
66
+ - - '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
- description: rspec-blame provides a Blame formatter that outputs the author, commit,
70
- and date of your slowest examples when profiling with RSpec.
69
+ description: rspec-blame provides a Blame formatter that outputs git blame details
70
+ for the slowest examples when profiling with RSpec.
71
71
  email: seeto.david@gmail.com
72
72
  executables: []
73
73
  extensions: []
74
74
  extra_rdoc_files: []
75
75
  files:
76
+ - .gitignore
77
+ - Gemfile
78
+ - README.md
79
+ - Rakefile
76
80
  - lib/rspec/blame.rb
81
+ - rspec-blame.gemspec
82
+ - spec/lib/rspec/blame_spec.rb
83
+ - spec/spec_helper.rb
77
84
  homepage: https://github.com/dseeto/rspec-blame
78
85
  licenses:
79
86
  - MIT
@@ -84,12 +91,12 @@ require_paths:
84
91
  - lib
85
92
  required_ruby_version: !ruby/object:Gem::Requirement
86
93
  requirements:
87
- - - ! '>='
94
+ - - '>='
88
95
  - !ruby/object:Gem::Version
89
96
  version: '0'
90
97
  required_rubygems_version: !ruby/object:Gem::Requirement
91
98
  requirements:
92
- - - ! '>='
99
+ - - '>='
93
100
  - !ruby/object:Gem::Version
94
101
  version: '0'
95
102
  requirements: []