cucumber_in_groups 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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: