multicuke 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -58,6 +58,9 @@ module Multicuke
58
58
  # Optional features directories to exclude
59
59
  attr_accessor :excluded_dirs
60
60
 
61
+ # Optional only the features directories to be included
62
+ attr_accessor :included_only_dirs
63
+
61
64
  # Full final path where html reports will be generated
62
65
  attr_reader :reports_path
63
66
 
@@ -71,6 +74,7 @@ module Multicuke
71
74
  @output_dir_name = "cucumber_reports" unless output_dir_name
72
75
  @output_path = "" unless output_path
73
76
  @excluded_dirs = [] unless excluded_dirs
77
+ @included_only_dirs = [] unless included_only_dirs
74
78
  @reports_path = File.join(output_path, output_dir_name)
75
79
  end
76
80
 
@@ -120,23 +124,31 @@ module Multicuke
120
124
  }
121
125
  end
122
126
 
123
- def match_excluded_dirs(path)
124
- path.match(Regexp.new(excluded_dirs.join("|")))
125
- end
126
-
127
127
  def features_dirs
128
128
  @features_dirs ||= resolve_features_dirs_name
129
129
  end
130
130
 
131
131
  def resolve_features_dirs_name
132
- Dir.glob(File.join(features_root_path, "*", "*.feature")).reject{ |path|
133
- match_excluded_dirs(path)
132
+ Dir.glob(File.join(features_root_path, "*", "*.feature")).select{ |path|
133
+ configured_dir?(path)
134
134
  }.map { |feature_path|
135
135
  dir_name = File.basename(File.dirname(feature_path))
136
136
  FeaturesDir.new(dir_name)
137
137
  }
138
138
  end
139
139
 
140
+ def configured_dir?(path)
141
+ if included_only_dirs.empty?
142
+ included_dir?(path)
143
+ else
144
+ path.match(Regexp.new(included_only_dirs.join("|")))
145
+ end
146
+ end
147
+
148
+ def included_dir?(path)
149
+ excluded_dirs.empty? || (not path.match(Regexp.new(excluded_dirs.join("|"))))
150
+ end
151
+
140
152
  end
141
153
 
142
154
  end
@@ -1,3 +1,3 @@
1
1
  module Multicuke
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
data/spec/dryrun_spec.rb CHANGED
@@ -8,7 +8,7 @@ module Multicuke
8
8
  FileUtils.rm_r(Dir.glob("#{RESULTS_DIR_PATH}/*"), :force => true)
9
9
  end
10
10
 
11
- it "generates index file in output folder" do
11
+ it "generates index file with hyperlinks to each feature" do
12
12
  runner = Multicuke::Runner.new do |r|
13
13
  r.features_root_path = File.expand_path("../features", __FILE__)
14
14
  r.output_dir_name = "cuke_reports"
@@ -20,13 +20,22 @@ module Multicuke
20
20
 
21
21
  runner.start
22
22
 
23
- File.should exist("#{RESULTS_DIR_PATH}/cuke_reports/index.html")
23
+ File.open("#{RESULTS_DIR_PATH}/cuke_reports/index.html") { |file|
24
+ content = file.read
25
+ content.should match /.*Cucumber reports.*/
26
+ content.should match /.*<a href="addition.html">Addition<\/a>.*/
27
+ content.should match /.*<a href="substraction.html">Substraction<\/a>.*/
28
+ content.should match /.*<a href="division.html">Division<\/a>.*/
29
+ content.should match /.*<a href="bad_addition.html">Bad addition<\/a>.*/
30
+ content.should match /.*<a href="multiplication.html">Multiplication<\/a>.*/
31
+ content.should_not match /.*steps_definition.*/
32
+ }
24
33
  end
25
34
 
26
- it "write link to each features on index file" do
35
+ it "do not run on excluded directories and those that do not contains features" do
27
36
  runner = Multicuke::Runner.new do |r|
28
37
  r.features_root_path = File.expand_path("../features", __FILE__)
29
- r.excluded_dirs = ["steps_definition"]
38
+ r.excluded_dirs = ["exclude_me_features"]
30
39
  r.dry_run = true
31
40
  r.output_path = RESULTS_DIR_PATH
32
41
  end
@@ -35,13 +44,33 @@ module Multicuke
35
44
 
36
45
  File.open("#{RESULTS_DIR_PATH}/cucumber_reports/index.html") { |file|
37
46
  content = file.read
38
- content.should match /.*Cucumber reports.*/
39
- content.should match /.*<a href="addition.html">Addition<\/a>.*/
40
- content.should match /.*<a href="substraction.html">Substraction<\/a>.*/
47
+ content.should_not match /.*steps_definition.*/
48
+ content.should_not match /.*excluded_features.*/
49
+ }
50
+ end
51
+
52
+ it "run on included dirs only" do
53
+ runner = Multicuke::Runner.new do |r|
54
+ r.features_root_path = File.expand_path("../features", __FILE__)
55
+ r.included_only_dirs = ["division"]
56
+ r.dry_run = true
57
+ r.output_path = RESULTS_DIR_PATH
58
+ end
59
+
60
+ File.should_not exist("#{RESULTS_DIR_PATH}/cuke_reports")
61
+
62
+ runner.start
63
+
64
+ File.open("#{RESULTS_DIR_PATH}/cucumber_reports/index.html") { |file|
65
+ content = file.read
66
+
41
67
  content.should match /.*<a href="division.html">Division<\/a>.*/
42
- content.should match /.*<a href="bad_addition.html">Bad addition<\/a>.*/
43
- content.should match /.*<a href="multiplication.html">Multiplication<\/a>.*/
68
+
69
+ content.should_not match /.*addition.*/i
70
+ content.should_not match /.*substraction.*/i
71
+ content.should_not match /.*multiplication.*/i
44
72
  content.should_not match /.*steps_definition.*/
73
+ content.should_not match /.*excluded_features.*/
45
74
  }
46
75
  end
47
76
 
@@ -0,0 +1 @@
1
+ Feature: Any feature really
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.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -32,6 +32,7 @@ files:
32
32
  - spec/features/bad_addition/bad_addition.feature
33
33
  - spec/features/division/divide_numbers.feature
34
34
  - spec/features/empty/empty_file.feature
35
+ - spec/features/exclude_me_features/non_important.feature
35
36
  - spec/features/multiplication/multiply_numbers.feature
36
37
  - spec/features/random_file.rb
37
38
  - spec/features/steps_definition/step_definitions.rb
@@ -70,6 +71,7 @@ test_files:
70
71
  - spec/features/bad_addition/bad_addition.feature
71
72
  - spec/features/division/divide_numbers.feature
72
73
  - spec/features/empty/empty_file.feature
74
+ - spec/features/exclude_me_features/non_important.feature
73
75
  - spec/features/multiplication/multiply_numbers.feature
74
76
  - spec/features/random_file.rb
75
77
  - spec/features/steps_definition/step_definitions.rb