multicuke 0.0.5 → 0.0.6

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.
@@ -5,6 +5,15 @@ require 'multicuke/reports_index'
5
5
 
6
6
  module Multicuke
7
7
 
8
+ # Wrapper of {Kernel#system} method for test/mock
9
+ class SystemCommand
10
+
11
+ def run(full_command_as_array)
12
+ system *full_command_as_array
13
+ end
14
+
15
+ end
16
+
8
17
  # Set of features under one specific directory
9
18
  class FeaturesDir
10
19
 
@@ -61,12 +70,18 @@ module Multicuke
61
70
  # Optional only the features directories to be included
62
71
  attr_accessor :included_only_dirs
63
72
 
73
+ # Array of extra options to pass to the command
74
+ attr_accessor :extra_options
75
+
64
76
  # Full final path where html reports will be generated
65
77
  attr_reader :reports_path
66
78
 
67
79
  # Optional. If true will generate index file but not launch processes. Used for testing.
68
80
  attr_accessor :dry_run
69
81
 
82
+ # Delegate to a wrapper of system call in order mock/test
83
+ attr_accessor :system_command
84
+
70
85
  def initialize
71
86
  yield self if block_given?
72
87
 
@@ -75,7 +90,9 @@ module Multicuke
75
90
  @output_path = "" unless output_path
76
91
  @excluded_dirs = [] unless excluded_dirs
77
92
  @included_only_dirs = [] unless included_only_dirs
93
+ @extra_options = [] unless extra_options
78
94
  @reports_path = File.join(output_path, output_dir_name)
95
+ @system_command = SystemCommand.new unless system_command
79
96
  end
80
97
 
81
98
  def start
@@ -96,8 +113,8 @@ module Multicuke
96
113
  fork {
97
114
  main_command = %W[bundle exec cucumber #{feature_full_path}]
98
115
  options = %W[-r #{features_root_path} --format html --out #{report_file_path}]
99
- full_command = main_command + options
100
- result = system *full_command
116
+ full_command = main_command + options + extra_options
117
+ result = system_command.run full_command
101
118
  puts "Features '#{features_dir.name}' finished. #{result ? 'SUCCESS' : 'FAILURE'} (pid: #{Process.pid})"
102
119
  }
103
120
  }
@@ -141,7 +158,10 @@ module Multicuke
141
158
  if included_only_dirs.empty?
142
159
  included_dir?(path)
143
160
  else
144
- path.match(Regexp.new(included_only_dirs.join("|")))
161
+ exact_word_match_expressions = included_only_dirs.map { |dir_name|
162
+ "\\b#{dir_name}\\b"
163
+ }
164
+ path.match(Regexp.new(exact_word_match_expressions.join("|")))
145
165
  end
146
166
  end
147
167
 
@@ -1,3 +1,3 @@
1
1
  module Multicuke
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
data/spec/dryrun_spec.rb CHANGED
@@ -52,21 +52,22 @@ module Multicuke
52
52
  it "run on included dirs only" do
53
53
  runner = Multicuke::Runner.new do |r|
54
54
  r.features_root_path = File.expand_path("../features", __FILE__)
55
- r.included_only_dirs = ["division"]
55
+ r.included_only_dirs = ["addition"]
56
56
  r.dry_run = true
57
57
  r.output_path = RESULTS_DIR_PATH
58
58
  end
59
59
 
60
- File.should_not exist("#{RESULTS_DIR_PATH}/cuke_reports")
60
+ File.should_not exist("#{RESULTS_DIR_PATH}/cucumber_reports")
61
61
 
62
62
  runner.start
63
63
 
64
64
  File.open("#{RESULTS_DIR_PATH}/cucumber_reports/index.html") { |file|
65
65
  content = file.read
66
66
 
67
- content.should match /.*<a href="division.html">Division<\/a>.*/
67
+ content.should match /.*<a href="addition.html">Addition<\/a>.*/
68
68
 
69
- content.should_not match /.*addition.*/i
69
+ content.should_not match /.*bad_addition.*/i
70
+ content.should_not match /.*division.*/i
70
71
  content.should_not match /.*substraction.*/i
71
72
  content.should_not match /.*multiplication.*/i
72
73
  content.should_not match /.*steps_definition.*/
data/spec/fork_spec.rb CHANGED
@@ -12,6 +12,7 @@ module Multicuke
12
12
  runner = Multicuke::Runner.new do |r|
13
13
  r.features_root_path = File.expand_path("../features", __FILE__)
14
14
  r.excluded_dirs = ["steps_definition"]
15
+ r.extra_options = ["-t", "~@non_existing_tag"]
15
16
  r.output_path = RESULTS_DIR_PATH
16
17
  end
17
18
 
data/spec/runner_spec.rb CHANGED
@@ -10,6 +10,7 @@ module Multicuke
10
10
  r.output_path = "my_output_path"
11
11
  r.dry_run = true
12
12
  r.excluded_dirs = ["my_first_dir", "my_second_dir"]
13
+ r.extra_options = ["-p", "profile"]
13
14
  end
14
15
 
15
16
  runner.features_root_path.should == "my_feature_path"
@@ -17,6 +18,7 @@ module Multicuke
17
18
  runner.output_path.should == "my_output_path"
18
19
  runner.dry_run.should be_true
19
20
  runner.excluded_dirs.should include("my_first_dir", "my_second_dir")
21
+ runner.extra_options.should include("-p", "profile")
20
22
  end
21
23
 
22
24
  it "initializes with default values" do
@@ -26,6 +28,7 @@ module Multicuke
26
28
  runner.output_path.should == ""
27
29
  runner.dry_run.should be_false
28
30
  runner.excluded_dirs.should be_empty
31
+ runner.extra_options.should be_empty
29
32
  end
30
33
  end
31
34
 
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+
3
+ describe "System command" do
4
+
5
+ it "runs 'bundle exec cucumber ...' command" do
6
+ runner = Multicuke::Runner.new do |r|
7
+ r.features_root_path = File.expand_path("../features", __FILE__)
8
+ r.included_only_dirs = ["addition"]
9
+ r.output_path = RESULTS_DIR_PATH
10
+ r.system_command = mock('SystemCommand mock')
11
+ end
12
+
13
+ runner.should_receive(:fork)
14
+ runner.start
15
+
16
+ end
17
+
18
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: multicuke
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-01 00:00:00.000000000 Z
12
+ date: 2013-04-04 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Run your features faster
15
15
  email:
@@ -41,6 +41,7 @@ files:
41
41
  - spec/fork_spec.rb
42
42
  - spec/runner_spec.rb
43
43
  - spec/spec_helper.rb
44
+ - spec/system_command_spec.rb
44
45
  homepage: https://github.com/simcap/multicuke
45
46
  licenses: []
46
47
  post_install_message:
@@ -80,4 +81,5 @@ test_files:
80
81
  - spec/fork_spec.rb
81
82
  - spec/runner_spec.rb
82
83
  - spec/spec_helper.rb
84
+ - spec/system_command_spec.rb
83
85
  has_rdoc: