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.
- data/lib/cucumber_in_groups.rb +54 -0
- 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:
|