cucumber_in_groups 0.0.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.
Files changed (2) hide show
  1. data/lib/cucumber_in_groups.rb +54 -0
  2. metadata +98 -0
@@ -0,0 +1,54 @@
1
+ # We monkey-patch this file
2
+ # require 'cucumber/cli/profile_loader'
3
+ # Instead of requiring it and using 'class_eval' we just open the class to avoid dependency issues
4
+
5
+ # provides Array#in_groups
6
+ require 'active_support/core_ext/array/grouping'
7
+
8
+ module Cucumber
9
+ module Cli
10
+
11
+ # this class handles cucumber.yml loading - we monkey-patch it
12
+ class ProfileLoader
13
+
14
+ def grouped_features(*args)
15
+ # default argument
16
+ args << "features" if args.empty?
17
+
18
+ # USAGE: GROUP=1of2 rake cucumber:ci
19
+ # OR: GROUP=2of2 rake cucumber:ci
20
+ if ENV["GROUP"]
21
+ if ENV["GROUP"] =~ /^(\d+)of(\d+)$/
22
+ group = $1.to_i
23
+ groups_count = $2.to_i
24
+ if group > 0 and group <= groups_count
25
+ # listing content of features folder (or whatever folder requested)
26
+ features = list_features(args).sort
27
+ files_to_test = features.in_groups(groups_count, false)[group-1]
28
+
29
+ if ENV['DEBUG']
30
+ STDERR.puts "\n=========== FEATURES GROUP #{group} of #{groups_count} ============="
31
+ STDERR.puts files_to_test.inspect
32
+ STDERR.puts "==============================================="
33
+ end
34
+
35
+ # returning files array to cucumber.yml
36
+ files_to_test.join(" ")
37
+ else
38
+ raise "Invalid value of GROUP env variable (#{ENV['GROUP']}). First number should be in 1..#{groups_count} range"
39
+ end
40
+ else
41
+ raise "Invalid value of GROUP env variable (#{ENV['GROUP']}). Expected e.g. GROUP=1of2"
42
+ end
43
+ else
44
+ args.join(" ")
45
+ end
46
+ end
47
+
48
+ def list_features(paths)
49
+ paths.map { |path| Dir["#{path}/**/*.feature"] }.flatten
50
+ end
51
+
52
+ end
53
+ end
54
+ end
metadata ADDED
@@ -0,0 +1,98 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cucumber_in_groups
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.0.1
6
+ platform: ruby
7
+ authors:
8
+ - Vladimir Yartsev
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2013-04-04 00:00:00 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: activesupport
17
+ prerelease: false
18
+ requirement: &id001 !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ~>
22
+ - !ruby/object:Gem::Version
23
+ version: "3.0"
24
+ type: :runtime
25
+ version_requirements: *id001
26
+ - !ruby/object:Gem::Dependency
27
+ name: cucumber
28
+ prerelease: false
29
+ requirement: &id002 !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ~>
33
+ - !ruby/object:Gem::Version
34
+ version: "1.0"
35
+ type: :runtime
36
+ version_requirements: *id002
37
+ - !ruby/object:Gem::Dependency
38
+ name: rake
39
+ prerelease: false
40
+ requirement: &id003 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: "10.0"
46
+ type: :development
47
+ version_requirements: *id003
48
+ - !ruby/object:Gem::Dependency
49
+ name: rspec
50
+ prerelease: false
51
+ requirement: &id004 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ~>
55
+ - !ruby/object:Gem::Version
56
+ version: "2.13"
57
+ type: :development
58
+ version_requirements: *id004
59
+ description: Add <%= grouped_features %> to your cucumber.yml and get your cucumber features divided into groups. Useful for parallel test running. e.g in Semaphore CI
60
+ email: vovayartsev@gmail.com
61
+ executables: []
62
+
63
+ extensions: []
64
+
65
+ extra_rdoc_files: []
66
+
67
+ files:
68
+ - lib/cucumber_in_groups.rb
69
+ homepage: https://github.com/cloudcastle/cucumber_in_groups
70
+ licenses: []
71
+
72
+ post_install_message:
73
+ rdoc_options: []
74
+
75
+ require_paths:
76
+ - lib
77
+ required_ruby_version: !ruby/object:Gem::Requirement
78
+ none: false
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: "0"
83
+ required_rubygems_version: !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: "0"
89
+ requirements: []
90
+
91
+ rubyforge_project:
92
+ rubygems_version: 1.8.23
93
+ signing_key:
94
+ specification_version: 3
95
+ summary: Splits your cucumber features into groups to run them separately
96
+ test_files: []
97
+
98
+ has_rdoc: