test_parser 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/.rvmrc ADDED
@@ -0,0 +1,47 @@
1
+ #!/usr/bin/env bash
2
+
3
+ # This is an RVM Project .rvmrc file, used to automatically load the ruby
4
+ # development environment upon cd'ing into the directory
5
+
6
+ # First we specify our desired <ruby>[@<gemset>], the @gemset name is optional.
7
+ environment_id="ruby-1.9.2-p180@test_parser"
8
+
9
+ #
10
+ # First we attempt to load the desired environment directly from the environment
11
+ # file. This is very fast and efficicent compared to running through the entire
12
+ # CLI and selector. If you want feedback on which environment was used then
13
+ # insert the word 'use' after --create as this triggers verbose mode.
14
+ #
15
+ if [[ -d "${rvm_path:-$HOME/.rvm}/environments" \
16
+ && -s "${rvm_path:-$HOME/.rvm}/environments/$environment_id" ]] ; then
17
+ \. "${rvm_path:-$HOME/.rvm}/environments/$environment_id"
18
+ else
19
+ # If the environment file has not yet been created, use the RVM CLI to select.
20
+ rvm --create use "$environment_id"
21
+ fi
22
+
23
+ #
24
+ # If you use an RVM gemset file to install a list of gems (*.gems), you can have
25
+ # it be automatically loaded. Uncomment the following and adjust the filename if
26
+ # necessary.
27
+ #
28
+ # filename=".gems"
29
+ # if [[ -s "$filename" ]] ; then
30
+ # rvm gemset import "$filename" | grep -v already | grep -v listed | grep -v complete | sed '/^$/d'
31
+ # fi
32
+
33
+ #
34
+ # If you use bundler and would like to run bundle each time you enter the
35
+ # directory, you can uncomment the following code.
36
+ #
37
+ # # Ensure that Bundler is installed. Install it if it is not.
38
+ # if ! command -v bundle >/dev/null; then
39
+ # printf "The rubygem 'bundler' is not installed. Installing it now.\n"
40
+ # gem install bundler
41
+ # fi
42
+ #
43
+ # # Bundle while reducing excess noise.
44
+ # printf "Bundling your gems. This may take a few minutes on a fresh clone.\n"
45
+ # bundle | grep -v '^Using ' | grep -v ' is complete' | sed '/^$/d'
46
+ #
47
+
data/Gemfile ADDED
@@ -0,0 +1,9 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in test_parser.gemspec
4
+ gemspec
5
+
6
+ group :test do
7
+ gem 'rspec'
8
+ gem 'fakefs', :require => 'fakefs/safe'
9
+ end
data/Rakefile ADDED
@@ -0,0 +1,14 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require 'rake/testtask'
5
+
6
+ Rake::TestTask.new do |t|
7
+ t.pattern = "test/*_test.rb"
8
+ end
9
+
10
+ require 'rspec/core/rake_task'
11
+
12
+ RSpec::Core::RakeTask.new
13
+
14
+ task :default => [:test, :spec]
data/bin/test_parser ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "test_parser"
4
+ require 'yaml'
5
+
6
+ $stdout << TestParser.all_tests(ARGV.last).to_yaml
@@ -0,0 +1,17 @@
1
+ require 'test_parser/source_code'
2
+ require 'test_parser/test_information'
3
+
4
+ module TestParser
5
+
6
+ module Common
7
+
8
+ def build_test(extras = {})
9
+ TestInformation.new(parser_type, test_identification, test_file_name, extras)
10
+ end
11
+
12
+ def test_source_code
13
+ SourceCode.for(test_file_name)
14
+ end
15
+
16
+ end
17
+ end
@@ -0,0 +1,7 @@
1
+ module MiniTest
2
+ class Unit
3
+ def self.dont_install_at_exit!
4
+ @@installed_at_exit = true
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,16 @@
1
+ module RSpec
2
+
3
+ def self.world=(new_world)
4
+ @world = new_world
5
+ end
6
+
7
+ def self.with_world(world)
8
+ old_world, self.world = self.world, world
9
+ result = yield(world)
10
+ self.world = old_world
11
+ result
12
+ end
13
+
14
+ end
15
+
16
+ RSpec::Core::Runner.disable_autorun!
@@ -0,0 +1,48 @@
1
+ require 'minitest/unit'
2
+ require_relative 'extensions/minitest'
3
+
4
+ require 'test_parser'
5
+
6
+ module TestParser
7
+ class MiniTest
8
+ attr_reader :klass, :test_method
9
+
10
+ def self.find_tests!(path, options = {})
11
+ glob = options[:glob] || 'test/**/*_test.rb'
12
+
13
+ ::MiniTest::Unit.dont_install_at_exit!
14
+
15
+ TestParser.require_all(path, glob)
16
+
17
+ ::MiniTest::Unit::TestCase.test_suites.collect_concat do |klass|
18
+ klass.test_methods.map do |test|
19
+ new(klass, test).test_info
20
+ end
21
+ end
22
+ end
23
+
24
+ include Common
25
+
26
+ def parser_type
27
+ :minitest
28
+ end
29
+
30
+ def initialize(klass, test_method)
31
+ @klass, @test_method = klass, test_method
32
+ end
33
+
34
+ def test_info
35
+ build_test(:method_name => test_method)
36
+ end
37
+
38
+ def test_identification
39
+ "#{klass.name}##{test_method}"
40
+ end
41
+
42
+ def test_file_name
43
+ klass.instance_method(test_method).source_location.first
44
+ end
45
+
46
+ end
47
+
48
+ end
@@ -0,0 +1,68 @@
1
+ require 'rspec/core'
2
+ require_relative 'extensions/rspec'
3
+
4
+ require 'test_parser'
5
+
6
+ module TestParser
7
+ class RSpec
8
+ attr_reader :example
9
+
10
+ def self.find_tests!(path, options = {})
11
+ glob = options[:glob] || 'spec/**/*_spec.rb'
12
+
13
+ ::RSpec.with_world ::RSpec::Core::World.new do |world|
14
+
15
+ TestParser.require_all(path, glob)
16
+
17
+ groups = world.example_groups
18
+ examples = groups.collect_concat(&:descendant_filtered_examples)
19
+ examples.map do |example|
20
+ new(example).test_info
21
+ end
22
+ end
23
+ end
24
+
25
+ include Common
26
+
27
+ def initialize(example)
28
+ @example = example
29
+ end
30
+
31
+ def parser_type
32
+ :rspec2
33
+ end
34
+
35
+ def test_info
36
+ build_test(:line_number => line_number)
37
+ end
38
+
39
+ def test_snippet
40
+ @test_snippet ||= test_source_code.extract_code_from_line(line_number)
41
+ end
42
+
43
+ def test_file_name
44
+ example.file_path
45
+ end
46
+
47
+ def test_identification
48
+ (example_group_names.reverse + [example_description]).join('/')
49
+ end
50
+
51
+ def line_number
52
+ example.metadata[:line_number]
53
+ end
54
+
55
+ def example_group_names
56
+ example.example_group.ancestors.map(&:display_name)
57
+ end
58
+
59
+ def example_description
60
+ unless example.description.empty?
61
+ example.description
62
+ else
63
+ test_snippet.get_block.to_code
64
+ end
65
+ end
66
+
67
+ end
68
+ end
@@ -0,0 +1,15 @@
1
+ require 'ruby2ruby'
2
+
3
+ module TestParser
4
+ class Snippet < Struct.new(:sexp)
5
+
6
+ def to_code
7
+ @to_code ||= Ruby2Ruby.new.process(self.sexp.deep_clone)
8
+ end
9
+
10
+ def get_block
11
+ Snippet.new(sexp[3])
12
+ end
13
+
14
+ end
15
+ end
@@ -0,0 +1,40 @@
1
+ require 'ruby_parser'
2
+ require 'test_parser/snippet'
3
+
4
+ module TestParser
5
+
6
+ class SourceCode < Snippet
7
+
8
+ def self.source_codes
9
+ @source_codes ||= begin
10
+ parser = RubyParser.new
11
+ Hash.new do |h, k|
12
+ h[k] = new(parser.parse File.read(k))
13
+ end
14
+ end
15
+ end
16
+
17
+ def self.clear_cache
18
+ @source_codes = nil
19
+ end
20
+
21
+ def self.for(filename)
22
+ source_codes[File.expand_path(filename)]
23
+ end
24
+
25
+ def extract_method(name)
26
+ name = name.to_sym
27
+ definitions = sexp.enum_for(:each_of_type, :defn)
28
+ method_sexp = definitions.find {|def_sexp| def_sexp[1] == name }
29
+ Snippet.new(method_sexp)
30
+ end
31
+
32
+ def extract_code_from_line(line_number)
33
+ method_calls = sexp.enum_for(:each_of_type, :iter)
34
+ code_sexp = method_calls.find {|sexp| sexp[1].line == line_number }
35
+ Snippet.new(code_sexp)
36
+ end
37
+
38
+ end
39
+
40
+ end
@@ -0,0 +1,3 @@
1
+ module TestParser
2
+ TestInformation = Struct.new(:type, :identification, :file, :extras)
3
+ end
@@ -0,0 +1,3 @@
1
+ module TestParser
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,35 @@
1
+ require 'test_parser/common'
2
+ require 'test_parser/minitest'
3
+ require 'test_parser/rspec'
4
+
5
+ module TestParser
6
+
7
+ def all_tests(path, options = {})
8
+ frameworks = options[:frameworks] ||= [:rspec, :minitest]
9
+ path = sanitize_path(path)
10
+ frameworks.collect_concat do |framework|
11
+ send "#{framework}_tests", path, options[framework]
12
+ end
13
+ end
14
+
15
+ def minitest_tests(path, options = nil)
16
+ options ||= {}
17
+ MiniTest.find_tests!(path, options)
18
+ end
19
+
20
+ def rspec_tests(path, options = nil)
21
+ options ||= {}
22
+ RSpec.find_tests!(path, options)
23
+ end
24
+
25
+ def require_all(path, glob)
26
+ Dir[sanitize_path(path) + glob].each {|f| require f }
27
+ end
28
+
29
+ def sanitize_path(path)
30
+ return path if path.is_a? Pathname
31
+ Pathname.new(path).expand_path
32
+ end
33
+
34
+ extend self
35
+ end
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+
3
+ require 'test_parser'
4
+ describe TestParser::MiniTest do
5
+ before(:all) do
6
+ MiniTest::Unit::TestCase.reset
7
+ end
8
+ after(:all) do
9
+ MiniTest::Unit::TestCase.reset
10
+ end
11
+
12
+ describe '.find_tests!' do
13
+
14
+ context 'within test_project' do
15
+ before(:all) do
16
+ @tests = TestParser::MiniTest.find_tests! path_for_test_project
17
+ @test_identifications = @tests.map(&:identification)
18
+ end
19
+
20
+ it 'finds all the tests' do
21
+ @tests.should have(2).tests
22
+ end
23
+
24
+ it 'finds normally declared test' do
25
+ @test_identifications.should include('TestSomething#test_foo')
26
+ test = @tests[@test_identifications.index('TestSomething#test_foo')]
27
+ test.file.should == (path_for_test_project('test/example_test.rb')).to_s
28
+ test.extras[:method_name].should == 'test_foo'
29
+ end
30
+
31
+ it 'finds module shared tests' do
32
+ @test_identifications.should include('TestSomething#test_truth')
33
+ test = @tests[@test_identifications.index('TestSomething#test_truth')]
34
+ test.file.should == (path_for_test_project('test/test_helper.rb')).to_s
35
+ test.extras[:method_name].should == 'test_truth'
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,35 @@
1
+ require 'spec_helper'
2
+
3
+ require 'test_parser/rspec'
4
+
5
+ describe TestParser::RSpec do
6
+ describe '.find_test_suite!' do
7
+ context 'within test_project' do
8
+
9
+ before(:all) do
10
+ @test_suite = TestParser::RSpec.find_tests!(path_for_test_project)
11
+ @test_names = @test_suite.map(&:identification)
12
+ end
13
+
14
+ it 'finds all the test_suite' do
15
+ @test_suite.should have(2).test_suite
16
+ end
17
+
18
+ it 'finds nested test_suite' do
19
+ @test_names.should include('Life/with death sentence/should(be_alive)')
20
+ test = @test_suite[@test_names.index('Life/with death sentence/should(be_alive)')]
21
+ test.file.should == (path_for_test_project('spec/example_spec.rb')).to_s
22
+ test.extras[:line_number].should == 11
23
+ end
24
+
25
+ it 'finds not nested test_suite' do
26
+ @test_names.should include('Life/actually lives')
27
+ test = @test_suite[@test_names.index('Life/actually lives')]
28
+
29
+ test.file.should == (path_for_test_project('spec/example_spec.rb')).to_s
30
+ test.extras[:line_number].should == 5
31
+ end
32
+
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,66 @@
1
+ require 'spec_helper'
2
+ require 'test_parser/source_code'
3
+
4
+ describe TestParser::SourceCode do
5
+ include FakeFS::SpecHelpers
6
+
7
+ before(:each) do
8
+ File.open('standard_class_source.rb', 'w') do |f|
9
+ f << standard_class_source
10
+ end
11
+ File.open('dsl_source.rb', 'w') do |f|
12
+ f << dsl_source
13
+ end
14
+ end
15
+
16
+ after(:each) do
17
+ TestParser::SourceCode.clear_cache
18
+ end
19
+
20
+ it 'has the sexp of the original file' do
21
+ sexp = RubyParser.new.parse standard_class_source
22
+ TestParser::SourceCode.for('standard_class_source.rb').sexp.should == sexp
23
+ end
24
+
25
+ describe '.extract_method' do
26
+ it 'finds the method definition from the method name' do
27
+ snippet = TestParser::SourceCode.for('standard_class_source.rb').extract_method('method')
28
+ snippet.to_code.should match_code(<<-METHOD)
29
+ def method(some)
30
+ puts some
31
+ end
32
+ METHOD
33
+ end
34
+ end
35
+
36
+ describe '.extract_code_from_line' do
37
+ it 'finds the line with its block' do
38
+ snippet = TestParser::SourceCode.for('dsl_source.rb').extract_code_from_line(2)
39
+ snippet.to_code.should match_code(<<-METHOD)
40
+ method 'ble' do
41
+ testing_something
42
+ end
43
+ METHOD
44
+ end
45
+ end
46
+
47
+ def standard_class_source
48
+ <<-SOURCE
49
+ class A
50
+ def method(some)
51
+ puts some
52
+ end
53
+ end
54
+ SOURCE
55
+ end
56
+
57
+ def dsl_source
58
+ <<-SOURCE
59
+ calling :something do
60
+ method 'ble' do
61
+ testing_something
62
+ end
63
+ end
64
+ SOURCE
65
+ end
66
+ end
@@ -0,0 +1,11 @@
1
+ require 'bundler'
2
+ Bundler.setup
3
+ Bundler.require :default, :test
4
+
5
+ Dir[File.join(File.dirname(__FILE__), 'support', '**', '*.rb')].each {|f| require f }
6
+
7
+ require 'fakefs/spec_helpers'
8
+
9
+ RSpec.configure do |config|
10
+ config.include ProjectsPaths
11
+ end
@@ -0,0 +1,10 @@
1
+ RSpec::Matchers.define :match_code do |expected|
2
+ expected_sexp = RubyParser.new.parse(expected)
3
+
4
+ match do |actual|
5
+ actual_sexp = actual.sexp if actual.respond_to? :sexp
6
+ actual_sexp ||= RubyParser.new.parse(actual)
7
+ expected_sexp == actual_sexp
8
+ end
9
+
10
+ end
@@ -0,0 +1,13 @@
1
+ require 'pathname'
2
+
3
+ module ProjectsPaths
4
+
5
+ def devotest_path
6
+ Pathname.new File.join(File.dirname(__FILE__), '..', '..')
7
+ end
8
+
9
+ def path_for_test_project(*append)
10
+ ([devotest_path, 'test_project'] + append).reduce(:+).cleanpath
11
+ end
12
+
13
+ end
@@ -0,0 +1,60 @@
1
+ require 'spec_helper'
2
+
3
+ require 'test_parser'
4
+
5
+ describe TestParser do
6
+
7
+ describe ".minitest_tests" do
8
+ it 'delegates test finding to TestParser::MiniTest' do
9
+ TestParser::MiniTest.should_receive(:find_tests!).
10
+ with(path_for_test_project, {}).and_return []
11
+
12
+ TestParser.minitest_tests(path_for_test_project)
13
+ end
14
+ it 'passes extra options to TestParser::Minitest' do
15
+ TestParser::MiniTest.should_receive(:find_tests!).
16
+ with(path_for_test_project, {:some_option => true}).and_return []
17
+
18
+ TestParser.minitest_tests(path_for_test_project, {:some_option => true})
19
+ end
20
+ end
21
+
22
+ describe ".rspec_tests" do
23
+ it 'delegates test finding to TestParser::RSpec' do
24
+ TestParser::RSpec.should_receive(:find_tests!).
25
+ with(path_for_test_project, {}).and_return []
26
+
27
+ TestParser.rspec_tests(path_for_test_project)
28
+ end
29
+ it 'passes extra options to TestParser::RSpec' do
30
+ TestParser::RSpec.should_receive(:find_tests!).
31
+ with(path_for_test_project, {:some_option => true}).and_return []
32
+
33
+ TestParser.rspec_tests(path_for_test_project, {:some_option => true})
34
+ end
35
+ end
36
+
37
+ describe ".all_tests" do
38
+ it "collects all the test from the default frameworks" do
39
+ stub_frameworks
40
+
41
+ tests = TestParser.all_tests(path_for_test_project)
42
+ tests.should == [:rspec, :minitest]
43
+ end
44
+
45
+ context "when :frameworks are specified" do
46
+ it 'collects only for the given frameworks' do
47
+ stub_frameworks
48
+
49
+ options = {:frameworks => [:rspec]}
50
+ tests = TestParser.all_tests(path_for_test_project, options)
51
+ tests.should == [:rspec]
52
+ end
53
+ end
54
+
55
+ def stub_frameworks
56
+ TestParser::RSpec.stub(:find_tests!) { [:rspec]}
57
+ TestParser::MiniTest.stub(:find_tests!) {[:minitest]}
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,24 @@
1
+ require 'minitest/autorun'
2
+
3
+ require 'bundler'
4
+ Bundler.setup
5
+ Bundler.require :default
6
+
7
+ require_relative '../spec/support/projects_paths'
8
+ require 'test_parser'
9
+
10
+ # This test is only to check there isn't any side effect for testing with Rspec
11
+ # while parsing RSpec specs.
12
+ class RSpecTest < MiniTest::Unit::TestCase
13
+
14
+ include ProjectsPaths
15
+
16
+ def test_rspec_parsing
17
+ tests = TestParser::RSpec.find_tests!(path_for_test_project)
18
+ test = tests.first
19
+ assert_equal 'Life/actually lives', test.identification
20
+ assert_equal path_for_test_project('spec/example_spec.rb').to_s, test.file
21
+ assert_equal 5, test.extras[:line_number]
22
+ end
23
+
24
+ end
@@ -0,0 +1,27 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "test_parser/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "test_parser"
7
+ s.version = TestParser::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Juan Manuel Barreneche"]
10
+ s.email = ["juanmanuel.barreneche@gmail.com"]
11
+ s.homepage = ""
12
+ s.summary = %q{Retrieves information of your test suite}
13
+ s.description = %q{Retrieves information of your test suite}
14
+
15
+ s.rubyforge_project = "test_parser"
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.require_paths = ["lib"]
21
+
22
+ s.add_dependency 'ruby_parser', '~> 2.0.5'
23
+ s.add_dependency 'ruby2ruby', '~> 1.2.5'
24
+ s.add_dependency 'rspec-core', '~> 2.5.0'
25
+ s.add_dependency 'minitest', '~> 2.0.2'
26
+
27
+ end
@@ -0,0 +1,14 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require 'rake/testtask'
5
+
6
+ Rake::TestTask.new do |t|
7
+ t.pattern = "test/**/*_test.rb"
8
+ end
9
+
10
+ require 'rspec/core/rake_task'
11
+
12
+ RSpec::Core::RakeTask.new
13
+
14
+ task :default => [:test, :spec]
@@ -0,0 +1,7 @@
1
+ class Life
2
+ def alive?
3
+ true
4
+ end
5
+ def sentence_to_death!
6
+ end
7
+ end
@@ -0,0 +1,14 @@
1
+ require_relative 'spec_helper'
2
+
3
+ describe Life do
4
+
5
+ it 'actually lives' do
6
+ Life.new.should be_alive
7
+ end
8
+
9
+ context 'with death sentence' do
10
+ subject { Life.new.tap {|l| l.sentence_to_death! }}
11
+ it { should be_alive }
12
+ end
13
+
14
+ end
@@ -0,0 +1 @@
1
+ require_relative '../life'
@@ -0,0 +1,12 @@
1
+ require_relative 'test_helper'
2
+ require_relative '../life'
3
+
4
+ class TestSomething < MiniTest::Unit::TestCase
5
+ include SomeSharedTest
6
+
7
+ def test_foo
8
+ life = Life.new
9
+ assert life.alive?
10
+ end
11
+
12
+ end
@@ -0,0 +1,9 @@
1
+ require 'minitest/autorun'
2
+
3
+ module SomeSharedTest
4
+
5
+ def test_truth
6
+ assert true
7
+ end
8
+
9
+ end
metadata ADDED
@@ -0,0 +1,136 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: test_parser
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.0.1
6
+ platform: ruby
7
+ authors:
8
+ - Juan Manuel Barreneche
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-02-20 00:00:00 -03:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: ruby_parser
18
+ prerelease: false
19
+ requirement: &id001 !ruby/object:Gem::Requirement
20
+ none: false
21
+ requirements:
22
+ - - ~>
23
+ - !ruby/object:Gem::Version
24
+ version: 2.0.5
25
+ type: :runtime
26
+ version_requirements: *id001
27
+ - !ruby/object:Gem::Dependency
28
+ name: ruby2ruby
29
+ prerelease: false
30
+ requirement: &id002 !ruby/object:Gem::Requirement
31
+ none: false
32
+ requirements:
33
+ - - ~>
34
+ - !ruby/object:Gem::Version
35
+ version: 1.2.5
36
+ type: :runtime
37
+ version_requirements: *id002
38
+ - !ruby/object:Gem::Dependency
39
+ name: rspec-core
40
+ prerelease: false
41
+ requirement: &id003 !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ~>
45
+ - !ruby/object:Gem::Version
46
+ version: 2.5.0
47
+ type: :runtime
48
+ version_requirements: *id003
49
+ - !ruby/object:Gem::Dependency
50
+ name: minitest
51
+ prerelease: false
52
+ requirement: &id004 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ~>
56
+ - !ruby/object:Gem::Version
57
+ version: 2.0.2
58
+ type: :runtime
59
+ version_requirements: *id004
60
+ description: Retrieves information of your test suite
61
+ email:
62
+ - juanmanuel.barreneche@gmail.com
63
+ executables:
64
+ - test_parser
65
+ extensions: []
66
+
67
+ extra_rdoc_files: []
68
+
69
+ files:
70
+ - .gitignore
71
+ - .rvmrc
72
+ - Gemfile
73
+ - Rakefile
74
+ - bin/test_parser
75
+ - lib/test_parser.rb
76
+ - lib/test_parser/common.rb
77
+ - lib/test_parser/extensions/minitest.rb
78
+ - lib/test_parser/extensions/rspec.rb
79
+ - lib/test_parser/minitest.rb
80
+ - lib/test_parser/rspec.rb
81
+ - lib/test_parser/snippet.rb
82
+ - lib/test_parser/source_code.rb
83
+ - lib/test_parser/test_information.rb
84
+ - lib/test_parser/version.rb
85
+ - spec/minitest_spec.rb
86
+ - spec/rspec_spec.rb
87
+ - spec/source_code_spec.rb
88
+ - spec/spec_helper.rb
89
+ - spec/support/matchers/match_code.rb
90
+ - spec/support/projects_paths.rb
91
+ - spec/test_parser_spec.rb
92
+ - test/rspec_test.rb
93
+ - test_parser.gemspec
94
+ - test_project/Rakefile
95
+ - test_project/life.rb
96
+ - test_project/spec/example_spec.rb
97
+ - test_project/spec/spec_helper.rb
98
+ - test_project/test/example_test.rb
99
+ - test_project/test/test_helper.rb
100
+ has_rdoc: true
101
+ homepage: ""
102
+ licenses: []
103
+
104
+ post_install_message:
105
+ rdoc_options: []
106
+
107
+ require_paths:
108
+ - lib
109
+ required_ruby_version: !ruby/object:Gem::Requirement
110
+ none: false
111
+ requirements:
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ version: "0"
115
+ required_rubygems_version: !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ version: "0"
121
+ requirements: []
122
+
123
+ rubyforge_project: test_parser
124
+ rubygems_version: 1.5.2
125
+ signing_key:
126
+ specification_version: 3
127
+ summary: Retrieves information of your test suite
128
+ test_files:
129
+ - spec/minitest_spec.rb
130
+ - spec/rspec_spec.rb
131
+ - spec/source_code_spec.rb
132
+ - spec/spec_helper.rb
133
+ - spec/support/matchers/match_code.rb
134
+ - spec/support/projects_paths.rb
135
+ - spec/test_parser_spec.rb
136
+ - test/rspec_test.rb