forrest 0.1.0 → 0.1.1

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.
data/README.markdown CHANGED
@@ -8,19 +8,27 @@ or print the list of stories inside a file.
8
8
  Print the stories/scenarios list
9
9
  --------------------------------
10
10
 
11
- forrest test/forrest_stories_test.rb
11
+ $ forrest test/forrest_stories_test.rb
12
12
 
13
- + ForrestStoriesTest::TestAsAStoriesUserIWantToSeeTheBenchmarkForEachScenario
14
- |__ ForrestStoriesTest::TestAsAStoriesUserIWantToSeeTheBenchmarkForEachScenario#test_A_user_run_forrest_with_a_StoryName_as_a_param
13
+ ==> Printing all stories/scenarios...
14
+
15
+
16
+ + ForrestStoriesTest::TestAsAStoriesUserIWantToSeeTheBenchmarkForEachScenario%%--test/forrest_stories_test.rb
17
+ |__ ForrestStoriesTest::TestAsAStoriesUserIWantToSeeTheBenchmarkForEachScenario#test_A_user_run_forrest_with_a_StoryName_as_a_param%%--test/forrest_stories_test.rb
18
+
19
+
20
+ + ForrestStoriesTest::TestAsAStoriesUserIWantToSeeTheStoriesReportInAVeryNiceFormat%%--test/forrest_stories_test.rb
21
+ |__ ForrestStoriesTest::TestAsAStoriesUserIWantToSeeTheStoriesReportInAVeryNiceFormat#test_A_user_run_forrest_with_a_StoryName_as_a_param%%--test/forrest_stories_test.rb
22
+
23
+ |__ ForrestStoriesTest::TestAsAStoriesUserIWantToSeeTheStoriesReportInAVeryNiceFormat#test_A_user_run_forrest_with_a_filepath_as_a_param%%--test/forrest_stories_test.rb
15
24
 
16
- + ForrestStoriesTest::TestAsAStoriesUserIWantToSeeTheStoriesReportInAVeryNiceFormat
17
- |__ ForrestStoriesTest::TestAsAStoriesUserIWantToSeeTheStoriesReportInAVeryNiceFormat#test_A_user_run_forrest_with_a_StoryName_as_a_param
18
- |__ ForrestStoriesTest::TestAsAStoriesUserIWantToSeeTheStoriesReportInAVeryNiceFormat#test_A_user_run_forrest_with_a_filepath_as_a_param
19
25
  Loaded suite
20
26
 
21
- Run a particular story
27
+ Run a specific story
22
28
  ----------------------
23
29
 
30
+ $ forrest ForrestStoriesTest::TestAsAStoriesUserIWantToSeeTheBenchmarkForEachScenario%%--test/forrest_stories_test.rb
31
+
24
32
  ==> Runing story...
25
33
 
26
34
  Loaded suite ForrestStoriesTest::TestAsAStoriesUserIWantToSeeTheStoriesReportInAVeryNiceFormat
@@ -36,10 +44,10 @@ Run a particular story
36
44
  2 tests, 0 assertions, 0 failures, 0 errors
37
45
  1 story, 2 scenarios
38
46
 
39
- Run a particular scenario
47
+ Run a specific scenario
40
48
  -------------------------
41
49
 
42
- forrest ForrestStoriesTest::TestAsAStoriesUserIWantToSeeTheStoriesReportInAVeryNiceFormat#test_A_user_run_forrest_with_a_filepath_as_a_param
50
+ $ forrest ForrestStoriesTest::TestAsAStoriesUserIWantToSeeTheStoriesReportInAVeryNiceFormat#test_A_user_run_forrest_with_a_StoryName_as_a_param%%--test/forrest_stories_test.rb
43
51
 
44
52
  ==> Runing scenario...
45
53
 
@@ -52,5 +60,12 @@ Run a particular scenario
52
60
  1 tests, 0 assertions, 0 failures, 0 errors
53
61
 
54
62
 
63
+ **Yes, you are thinking:** *this is a very large param, BUT, you can use this flow:*
64
+
65
+ 1. Print all stories & scenarios in a file
66
+
67
+ 2. use de forrest command and copy and paste the story or scenario (from the step 1) as the param
68
+
69
+ In this was is very easy to use.
55
70
 
56
71
  **and have fun!**
data/bin/forrest CHANGED
@@ -6,113 +6,95 @@ require 'test/unit/ui/console/testrunner'
6
6
  require File.join(File.dirname(__FILE__), '../lib/object')
7
7
  require File.join(File.dirname(__FILE__), '../lib/forrest/unix_console_styler')
8
8
  require File.join(File.dirname(__FILE__), '../lib/forrest/runner')
9
-
10
- FILE_S = "%%--"
9
+ require File.join(File.dirname(__FILE__), '../lib/forrest/scenario_runner')
11
10
 
12
11
  # --------------------------------------------------------------------------
13
12
 
14
- def file_s
15
- colorize(FILE_S, :bold)
13
+ def colorize(text, color)
14
+ "#{UnixConsoleStyler::STYLE[color]}#{text}\e[0m"
16
15
  end
17
16
 
18
17
  def print_test_cases(test_cases)
19
18
  test_cases.each{|tc|
20
19
  tests = tc.suite.tests
21
- puts "\n+ #{colorize(tc, :bold)}#{file_s}#{@test_file}"
20
+ puts "\n+ #{colorize(tc, :bold)}"
22
21
  tests.each{|t|
23
- puts "|__ #{colorize(tc, :cyan)}##{colorize(t.method_name, :yellow)}" +
24
- "#{file_s}#{@test_file}\n\n"
22
+ puts "|__ #{colorize(tc, :cyan)}##{colorize(t.method_name, :yellow)}"
23
+
25
24
  }
26
25
  }
27
26
  end
28
27
 
29
- def require_rails_env?
30
- begin
31
- require File.join(@test_dir, "../config/environment")
32
- return true
33
- rescue LoadError
34
- begin
35
- require File.join(@test_dir, "../../config/environment")
36
- return true
37
- rescue LoadError
38
- return false
39
- end
28
+ def test_class
29
+ if @running == 'scenario'
30
+ @test_class = ARGV[0].split("#")[0].constantize
31
+ else
32
+ @test_class = File.basename(@test_file, ".rb").camelize.constantize
40
33
  end
41
34
  end
42
35
 
43
- def require_active_support_or_rails_env
44
- unless require_rails_env?
45
- require 'active_support/core_ext/string/inflections'
46
- require 'active_support/core_ext/string'
36
+ def test_file_from_arg
37
+ if @running == 'scenario'
38
+ ARGV[0].split("#")[0].split("::")[0].underscore
39
+ else
40
+ ARGV[0].split("::")[0].underscore
47
41
  end
48
42
  end
49
43
 
50
- def show
51
- @test_file = ARGV[0]
52
- require @test_file
53
- require_active_support_or_rails_env
54
- @test_cases = test_class.subclasses
55
- print_test_cases(@test_cases)
56
- begin
57
- Test::Unit::UI::Console::TestRunner.run(nil)
58
- rescue NoMethodError
59
- end
44
+ def test_name
45
+ @test_name = ARGV[0].split("#")[1]
60
46
  end
61
47
 
62
- def run_story
63
- require_test_file
64
- Stories::ForrestRunner.run(@test_class.constantize)
48
+ def test_cases
49
+ test_class.subclasses
65
50
  end
66
51
 
67
- def run_scenario
68
- puts test_file
69
- require_test_file
70
- test = @test_class.constantize.suite.tests.find{|t|
71
- t.method_name == @test_name
52
+ def extract_scenario(arg)
53
+ scenario = test_class.suite.tests.find{|sc|
54
+ sc.method_name == test_name
72
55
  }
73
-
74
- Test::Unit::UI::Console::TestRunner.run(test)
56
+ scenario
75
57
  end
76
58
 
77
- def require_test_file
78
- begin
79
- require "test/#{test_file}"
80
- rescue LoadError
81
- require "test/stories/#{test_file}"
82
- end
83
- end
59
+ def run_scenario(arg)
60
+ @running = 'scenario'
61
+ puts "==> Runing scenario...\n\n"
62
+ require "config/environment"
63
+ require "test/stories/#{test_file_from_arg}"
84
64
 
85
- def test_class
86
- @test_class = File.basename(@test_file, ".rb").camelize.constantize
65
+ Stories::ForrestScenarioRunner.run(extract_scenario(arg))
87
66
  end
88
67
 
89
- def test_file
90
- @test_file = "#{@test_class.split("::")[0].underscore}"
91
- end
68
+ def run_story(story_name)
69
+ @running = 'story'
70
+ puts "==> Runing story...\n\n"
71
+ require "config/environment"
72
+ require "test/stories/#{test_file_from_arg}"
92
73
 
93
- def colorize(text, color)
94
- "#{UnixConsoleStyler::STYLE[color]}#{text}\e[0m"
74
+ Stories::ForrestRunner.run(story_name.constantize)
95
75
  end
96
76
 
97
- if File.file? ARGV[0]
77
+ def show(test_file)
98
78
  puts "==> Printing all stories/scenarios...\n\n"
99
- @test_dir = File.dirname(ARGV[0])
100
- show
101
- else
102
- @test_dir = File.join(File.dirname(ARGV[0].split("#{FILE_S}")[1]))
79
+ require test_file
80
+ print_test_cases(test_cases)
103
81
 
82
+ begin
83
+ Test::Unit::UI::Console::TestRunner.run(nil)
84
+ rescue NoMethodError
85
+ end
86
+ end
87
+
88
+ # ------------------------------------------------------------------------------
89
+
90
+ if File.file?(@test_file = ARGV[0])
91
+ @running = ''
92
+ show(@test_file)
93
+ else
104
94
  if ARGV[0].include? "#"
105
- puts "==> Runing scenario...\n\n"
106
- @test_class = ARGV[0].split("#")[0]
107
- @test_name = ARGV[0].split("#")[1].split("#{FILE_S}")[0]
108
- require_active_support_or_rails_env
109
- run_scenario
95
+ run_scenario(ARGV[0])
110
96
  else
111
- puts "==> Runing story...\n\n"
112
- @test_class = ARGV[0].split("#{FILE_S}")[0]
113
-
114
- require_active_support_or_rails_env
115
- run_story
97
+ run_story(ARGV[0])
116
98
  end
117
99
  end
118
100
 
data/forrest-0.1.0.gem ADDED
Binary file
data/forrest.gemspec CHANGED
@@ -2,7 +2,7 @@ require 'date'
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{forrest}
5
- s.version = "0.1.0"
5
+ s.version = "0.1.1"
6
6
  s.date = Date.today.to_s
7
7
  s.summary = %q{Forrest is a runner for stories framework, you can run one story inside of a file that have many stories, can run one scenario or print the list of stories inside a file.}
8
8
  s.description =<<DESCRIPTION
@@ -49,6 +49,7 @@ module Stories
49
49
  colorize(" #{scenarios_count} scenarios", :bold)
50
50
 
51
51
  end
52
+
52
53
  end
53
54
 
54
55
  end
@@ -0,0 +1,77 @@
1
+ module Test
2
+ module Unit
3
+ class Error
4
+ # Returns a verbose version of the error description.
5
+
6
+ def long_display
7
+ backtrace = filter_backtrace(@exception.backtrace).join("\n ")
8
+ "#{colorize('Error:', :red)}\n #{colorize(message, :red)}\n#{backtrace}"
9
+ end
10
+
11
+ end
12
+ end
13
+ end
14
+
15
+ module Stories
16
+
17
+ class ForrestScenarioRunner < Test::Unit::UI::Console::TestRunner
18
+
19
+ def test_finished(name)
20
+ @scenario_name = name.split("(")[0].gsub(/^test_/, "").humanize
21
+ @story_name = name.split("(")[1].gsub(/\)$/, "")
22
+ set_story
23
+ set_scenario
24
+ end
25
+
26
+ def add_fault(fault)
27
+ @faults << fault
28
+ end
29
+
30
+ def set_story
31
+ s ||= Story.new @suite.name
32
+ @story ||= Stories.all[@story_name.constantize]
33
+ end
34
+
35
+ def set_scenario
36
+ @scenario = @story.scenarios.find{|sc| sc.name == @scenario_name}
37
+ end
38
+
39
+ def print_scenario
40
+ @scenario.steps.each do |step|
41
+ puts " #{step}"
42
+ end
43
+
44
+ @scenario.assertions.each do |assertion|
45
+ puts " #{assertion}"
46
+ end
47
+
48
+ puts
49
+ end
50
+
51
+ def print_story
52
+ puts "=" * 80
53
+ puts "\n- #{colorize(@story.name, :bold)} \n\n"
54
+
55
+ if @faults.empty?
56
+ puts " #{colorize(@scenario.name, :green)}"
57
+ else
58
+ puts " #{colorize(@scenario.name, :red)}"
59
+ end
60
+
61
+ unless @scenario.steps.empty? && @scenario.assertions.empty?
62
+ print_scenario
63
+ end
64
+
65
+ puts "=" * 80
66
+ end
67
+
68
+ def finished(elapsed_time)
69
+ puts
70
+
71
+ print_story
72
+ super
73
+ end
74
+
75
+ end
76
+
77
+ end
File without changes
data/pri CHANGED
@@ -1,3 +1,3 @@
1
1
  gem build forrest.gemspec
2
2
  sudo gem uninstall forrest
3
- sudo gem install forrest-0.1.0.gem
3
+ sudo gem install forrest-0.1.1.gem
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 0
9
- version: 0.1.0
8
+ - 1
9
+ version: 0.1.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Gaston Ramos
@@ -14,7 +14,7 @@ autorequire: forrest
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-03-14 00:00:00 -03:00
17
+ date: 2010-03-16 00:00:00 -03:00
18
18
  default_executable: forrest
19
19
  dependencies: []
20
20
 
@@ -31,16 +31,18 @@ extensions: []
31
31
  extra_rdoc_files: []
32
32
 
33
33
  files:
34
- - test/forrest_stories_test.rb~
35
34
  - test/forest_stories_test.rb~
36
35
  - test/forrest_stories_test.rb
37
36
  - README.markdown
38
37
  - forrest.gemspec
39
38
  - bin/forrest
39
+ - forrest-0.1.1.gem
40
40
  - pri
41
41
  - forrest-0.1.0.gem
42
42
  - lib/forrest/runner.rb
43
+ - lib/forrest/scenario_runner.rb~
43
44
  - lib/forrest/unix_console_styler.rb
45
+ - lib/forrest/scenario_runner.rb
44
46
  - lib/forrest/runner.rb~
45
47
  - lib/object.rb
46
48
  - lib/object.rb~
@@ -1,12 +0,0 @@
1
- class ForrestStoriesTest < ActionController::IntegrationTest
2
- story "As a stories user I want to see the stories report " +
3
- "in a very nice format" do
4
-
5
- def setup
6
-
7
- end
8
-
9
- scenario "A master account tries to forbid an account" do
10
-
11
- end
12
- end