semaphore_cucumber_booster_config 1.1.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.
- checksums.yaml +7 -0
- data/.gitignore +10 -0
- data/.rspec +2 -0
- data/Gemfile +4 -0
- data/README.md +65 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/cucumber_booster_config.gemspec +34 -0
- data/exe/cucumber-booster-config +4 -0
- data/lib/cucumber_booster_config/cli.rb +12 -0
- data/lib/cucumber_booster_config/cucumber_file.rb +77 -0
- data/lib/cucumber_booster_config/injection.rb +42 -0
- data/lib/cucumber_booster_config/version.rb +3 -0
- data/lib/cucumber_booster_config.rb +6 -0
- metadata +116 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 4412775537961ef6bdae9284e94d95c36a9e008b
|
4
|
+
data.tar.gz: 24aaa465cbbe014ddaf392f3d100c28248388f86
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 543e2690f0d54111f1db05cbee20aceb3f3261790d1037394b3d4fe0e92eb5f2b2e3be79349974080bcea36c46ea629f75ded5d0ed86c49c280a1793e2723b40
|
7
|
+
data.tar.gz: 17a065c61c6223f270c76c0d107f86fb660ec56497ca770bd0ffbd808e27fc8ffc7cf5033cd1e2c1de86ad0e77fff18488f78c6c261531772e48aab7b15004fe
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
# CucumberBoosterConfig
|
2
|
+
|
3
|
+
[](https://semaphoreci.com/renderedtext/cucumber_booster_config)
|
5
|
+
|
6
|
+
Injects additional configuration for Cucumber so that it outputs JSON suitable
|
7
|
+
for auto-parallelism without affecting stdout.
|
8
|
+
|
9
|
+
## Installation
|
10
|
+
|
11
|
+
Add this line to your application's Gemfile:
|
12
|
+
|
13
|
+
```ruby
|
14
|
+
gem "cucumber_booster_config", :source => "https://gem.fury.io/renderedtext/"
|
15
|
+
```
|
16
|
+
|
17
|
+
## Usage
|
18
|
+
|
19
|
+
```
|
20
|
+
$ cucumber-booster-config help inject
|
21
|
+
Usage:
|
22
|
+
cucumber-booster-config inject PATH
|
23
|
+
|
24
|
+
Options:
|
25
|
+
[--dry-run], [--no-dry-run]
|
26
|
+
|
27
|
+
inject Semaphore's Cucumber configuration in project PATH
|
28
|
+
```
|
29
|
+
|
30
|
+
If you use the `--dry-run` option, output will look like this:
|
31
|
+
|
32
|
+
```
|
33
|
+
$ cucumber-booster-config inject . --dry-run
|
34
|
+
Running in .
|
35
|
+
Found Cucumber profile file: ./cucumber.yml
|
36
|
+
Content before:
|
37
|
+
---
|
38
|
+
default: --format pretty features
|
39
|
+
---
|
40
|
+
Inserting Semaphore configuration at the top
|
41
|
+
Appending Semaphore profile to default profile
|
42
|
+
Content after:
|
43
|
+
---
|
44
|
+
semaphoreci: --format json --out=features_report.json
|
45
|
+
default: --format pretty features --profile semaphoreci
|
46
|
+
---
|
47
|
+
```
|
48
|
+
|
49
|
+
## Development
|
50
|
+
|
51
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `bundle exec rspec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
52
|
+
|
53
|
+
To install this gem onto your local machine, run `bundle exec rake install`.
|
54
|
+
|
55
|
+
### How to release a new version
|
56
|
+
|
57
|
+
Change version number in `lib/cucumber_booster_config/version.rb`, commit and push your changes.
|
58
|
+
This will propagate the gemspec and subsequently `.gem` file that is generated on Gemfury.
|
59
|
+
|
60
|
+
Semaphore is currently configured to push new versions to Gemfury.
|
61
|
+
If version hasn't changed, Gemfury will simply ignore the update.
|
62
|
+
|
63
|
+
## Contributing
|
64
|
+
|
65
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/renderedtext/cucumber_booster_config.
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "cucumber_booster_config"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start
|
data/bin/setup
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'cucumber_booster_config/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "semaphore_cucumber_booster_config"
|
8
|
+
spec.version = CucumberBoosterConfig::VERSION
|
9
|
+
spec.authors = ["Marko Anastasov"]
|
10
|
+
spec.email = ["marko@renderedtext.com"]
|
11
|
+
|
12
|
+
spec.summary = %q{Cucumber configuration injection for autoparallelism.}
|
13
|
+
spec.description = %q{Injects additional configuration for Cucumber so that it outputs JSON suitable for auto-parallelism without affecting stdout.}
|
14
|
+
spec.homepage = "https://github.com/renderedtext/cucumber_booster_config"
|
15
|
+
|
16
|
+
# Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
|
17
|
+
# delete this section to allow pushing this gem to any host.
|
18
|
+
if spec.respond_to?(:metadata)
|
19
|
+
spec.metadata['allowed_push_host'] = "https://rubygems.org"
|
20
|
+
else
|
21
|
+
raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
|
22
|
+
end
|
23
|
+
|
24
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
25
|
+
spec.bindir = "exe"
|
26
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
27
|
+
spec.require_paths = ["lib"]
|
28
|
+
|
29
|
+
spec.add_dependency "thor", "~> 0.19.1"
|
30
|
+
|
31
|
+
spec.add_development_dependency "bundler", "~> 1.10"
|
32
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
33
|
+
spec.add_development_dependency "rspec"
|
34
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require "thor"
|
2
|
+
|
3
|
+
module CucumberBoosterConfig
|
4
|
+
class CLI < Thor
|
5
|
+
desc "inject PATH", "inject Semaphore's Cucumber configuration in project PATH"
|
6
|
+
option :dry_run, :type => :boolean
|
7
|
+
def inject(path)
|
8
|
+
puts "Running in #{path}"
|
9
|
+
Injection.new(path, :dry_run => options[:dry_run]).run
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
module CucumberBoosterConfig
|
2
|
+
|
3
|
+
class CucumberFile
|
4
|
+
|
5
|
+
SEMAPHORE_PROFILE = "semaphoreci: --format json --out=cucumber_report.json"
|
6
|
+
DEFAULT_PROFILE = "default: --format pretty --profile semaphoreci features"
|
7
|
+
|
8
|
+
def initialize(path, dry_run)
|
9
|
+
@path = path
|
10
|
+
@dry_run = dry_run
|
11
|
+
end
|
12
|
+
|
13
|
+
def configure_for_autoparallelism
|
14
|
+
load_file_content
|
15
|
+
|
16
|
+
if dry_run?
|
17
|
+
puts "Content before:"
|
18
|
+
puts "---"
|
19
|
+
puts @original_lines
|
20
|
+
puts "---"
|
21
|
+
end
|
22
|
+
|
23
|
+
define_semaphore_profile
|
24
|
+
include_semaphore_profile
|
25
|
+
|
26
|
+
if dry_run?
|
27
|
+
puts "Content after:"
|
28
|
+
puts "---"
|
29
|
+
puts @new_lines
|
30
|
+
puts "---"
|
31
|
+
else
|
32
|
+
save_file
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def dry_run?
|
39
|
+
!!@dry_run
|
40
|
+
end
|
41
|
+
|
42
|
+
def load_file_content
|
43
|
+
@original_lines = File.open(@path, "r") { |f| f.readlines }
|
44
|
+
@new_lines = @original_lines
|
45
|
+
end
|
46
|
+
|
47
|
+
def save_file
|
48
|
+
File.open(@path, "w") { |f| @new_lines.each { |line| f.puts line } }
|
49
|
+
end
|
50
|
+
|
51
|
+
def define_semaphore_profile
|
52
|
+
puts "Inserting Semaphore configuration"
|
53
|
+
|
54
|
+
@new_lines << "#{SEMAPHORE_PROFILE}\n"
|
55
|
+
end
|
56
|
+
|
57
|
+
def include_semaphore_profile
|
58
|
+
puts "Appending Semaphore profile to default profile"
|
59
|
+
|
60
|
+
default_profile_found = false
|
61
|
+
|
62
|
+
@new_lines.each_with_index do |line, i|
|
63
|
+
if line =~ /default:/
|
64
|
+
default_profile_found = true
|
65
|
+
line = "#{line.gsub("\n", "")} --profile semaphoreci"
|
66
|
+
end
|
67
|
+
|
68
|
+
@new_lines[i] = line
|
69
|
+
end
|
70
|
+
|
71
|
+
if !default_profile_found
|
72
|
+
puts "No definition for default profile found, inserting new one"
|
73
|
+
@new_lines << DEFAULT_PROFILE
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require "cucumber_booster_config/cucumber_file"
|
2
|
+
|
3
|
+
module CucumberBoosterConfig
|
4
|
+
|
5
|
+
class Injection
|
6
|
+
|
7
|
+
CUCUMBER_FILES = [
|
8
|
+
"cucumber.yml",
|
9
|
+
"config/cucumber.yml"
|
10
|
+
]
|
11
|
+
|
12
|
+
def initialize(path, options = {})
|
13
|
+
@path = path
|
14
|
+
@dry_run = options.fetch(:dry_run, false)
|
15
|
+
end
|
16
|
+
|
17
|
+
def find_profile_files
|
18
|
+
profile_files = []
|
19
|
+
|
20
|
+
CUCUMBER_FILES.map { |file_name| cucumber_file_path(file_name) }.each do |file|
|
21
|
+
if File.exist?(file)
|
22
|
+
puts "Found Cucumber profile file: #{file}"
|
23
|
+
profile_files << file
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
profile_files
|
28
|
+
end
|
29
|
+
|
30
|
+
def run
|
31
|
+
find_profile_files.each do |path|
|
32
|
+
CucumberFile.new(path, @dry_run).configure_for_autoparallelism
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def cucumber_file_path(file_name)
|
39
|
+
File.join(@path, file_name)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
metadata
ADDED
@@ -0,0 +1,116 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: semaphore_cucumber_booster_config
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.1.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Marko Anastasov
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-02-28 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: thor
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.19.1
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.19.1
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.10'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.10'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '10.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '10.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
description: Injects additional configuration for Cucumber so that it outputs JSON
|
70
|
+
suitable for auto-parallelism without affecting stdout.
|
71
|
+
email:
|
72
|
+
- marko@renderedtext.com
|
73
|
+
executables:
|
74
|
+
- cucumber-booster-config
|
75
|
+
extensions: []
|
76
|
+
extra_rdoc_files: []
|
77
|
+
files:
|
78
|
+
- ".gitignore"
|
79
|
+
- ".rspec"
|
80
|
+
- Gemfile
|
81
|
+
- README.md
|
82
|
+
- Rakefile
|
83
|
+
- bin/console
|
84
|
+
- bin/setup
|
85
|
+
- cucumber_booster_config.gemspec
|
86
|
+
- exe/cucumber-booster-config
|
87
|
+
- lib/cucumber_booster_config.rb
|
88
|
+
- lib/cucumber_booster_config/cli.rb
|
89
|
+
- lib/cucumber_booster_config/cucumber_file.rb
|
90
|
+
- lib/cucumber_booster_config/injection.rb
|
91
|
+
- lib/cucumber_booster_config/version.rb
|
92
|
+
homepage: https://github.com/renderedtext/cucumber_booster_config
|
93
|
+
licenses: []
|
94
|
+
metadata:
|
95
|
+
allowed_push_host: https://rubygems.org
|
96
|
+
post_install_message:
|
97
|
+
rdoc_options: []
|
98
|
+
require_paths:
|
99
|
+
- lib
|
100
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
105
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - ">="
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
requirements: []
|
111
|
+
rubyforge_project:
|
112
|
+
rubygems_version: 2.4.5.1
|
113
|
+
signing_key:
|
114
|
+
specification_version: 4
|
115
|
+
summary: Cucumber configuration injection for autoparallelism.
|
116
|
+
test_files: []
|