brine-dsl 0.5.0
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 +4 -0
- data/.ruby-version +1 -0
- data/.travis.yml +11 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +123 -0
- data/Guardfile +12 -0
- data/LICENSE +21 -0
- data/README.md +137 -0
- data/Rakefile +32 -0
- data/brine-dsl.gemspec +32 -0
- data/config/cucumber.yml +2 -0
- data/docs/build.gradle +19 -0
- data/docs/cookbook.html +567 -0
- data/docs/gradle/wrapper/gradle-wrapper.jar +0 -0
- data/docs/gradle/wrapper/gradle-wrapper.properties +6 -0
- data/docs/gradlew +172 -0
- data/docs/gradlew.bat +84 -0
- data/docs/guide.html +1149 -0
- data/docs/index.html +472 -0
- data/docs/specs.html +1672 -0
- data/docs/src/cookbook.adoc +87 -0
- data/docs/src/guide.adoc +427 -0
- data/docs/src/index.adoc +16 -0
- data/docs/src/spec.erb +121 -0
- data/docs/src/specs.adoc +24 -0
- data/features/argument_transforms/boolean.feature +37 -0
- data/features/argument_transforms/datetime.feature +45 -0
- data/features/argument_transforms/integer.feature +41 -0
- data/features/argument_transforms/list.feature +46 -0
- data/features/argument_transforms/object.feature +66 -0
- data/features/argument_transforms/quoted.feature +41 -0
- data/features/argument_transforms/regex.feature +40 -0
- data/features/argument_transforms/template.feature +46 -0
- data/features/argument_transforms/whitespace.feature +51 -0
- data/features/assertions/is_a_valid.feature +184 -0
- data/features/assertions/is_equal_to.feature +60 -0
- data/features/assertions/is_including.feature +29 -0
- data/features/assertions/is_matching.feature +35 -0
- data/features/deprecations/replaced_with.feature +35 -0
- data/features/request_construction/basic.feature +29 -0
- data/features/request_construction/body.feature +26 -0
- data/features/request_construction/clearing.feature +46 -0
- data/features/request_construction/headers.feature +94 -0
- data/features/request_construction/params.feature +60 -0
- data/features/resource_cleanup/cleanup.feature +86 -0
- data/features/selectors/all.feature +55 -0
- data/features/selectors/any.feature +48 -0
- data/features/step_definitions/test_steps.rb +5 -0
- data/features/support/env.rb +10 -0
- data/lib/brine/cleaner_upper.rb +62 -0
- data/lib/brine/coercer.rb +18 -0
- data/lib/brine/hooks.rb +4 -0
- data/lib/brine/mustache_binder.rb +25 -0
- data/lib/brine/requester.rb +125 -0
- data/lib/brine/rest_steps.rb +138 -0
- data/lib/brine/selector.rb +66 -0
- data/lib/brine/step_definitions/assertions.rb +37 -0
- data/lib/brine/step_definitions/assignment.rb +13 -0
- data/lib/brine/step_definitions/cleanup.rb +4 -0
- data/lib/brine/step_definitions/request_construction.rb +19 -0
- data/lib/brine/step_definitions/selection.rb +37 -0
- data/lib/brine/test_steps.rb +138 -0
- data/lib/brine/transforms.rb +81 -0
- data/lib/brine/type_checks.rb +35 -0
- data/lib/brine/util.rb +35 -0
- data/lib/brine.rb +39 -0
- data/tutorial/missing.feature +5 -0
- data/tutorial/post_matching.feature +12 -0
- data/tutorial/post_status.feature +10 -0
- data/tutorial/support/env.rb +2 -0
- metadata +306 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 2a3988772e5439b101fa2d3d9ab87034c04bb8a9
|
4
|
+
data.tar.gz: c1491585ad2734877fb636a0f0880b02960e9172
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 72aa061fc15c4f629f74fc2ce37aa8c2818570591647dd33e8a7b0dde906f3daf735a2b22845210bb90636a3c04c2961e89b19b2cb463f198b8bd806779f8755
|
7
|
+
data.tar.gz: 8888baf7504c251f3011660bdb96eebb66f2f3abe3ae206b6418cc7d0f9d8048bcf1a2fd2ccdf84a22c9c016b2be6c01500419deffca8ab4341976f271f1a421
|
data/.gitignore
ADDED
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.3.1
|
data/.travis.yml
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
language: ruby
|
2
|
+
rvm:
|
3
|
+
- 2.3
|
4
|
+
- 2.4
|
5
|
+
deploy:
|
6
|
+
provider: rubygems
|
7
|
+
gem: brine-dsl
|
8
|
+
api_key:
|
9
|
+
secure: QrX84AYqIs2Mz/5SaziW528tWzhx6pBZg93rwGWk8FyCjTZd2yILm+1O2BE/52JQclk/9lbJqzjJYsEirCC+5CmvddojiQCpX/ABeIbBq/DhNjomKf0L+tVglcZMbC/n3Xl6Xaa2kWv00mXxn71Ndj+uqCBq7oPXEZ6Z9Bf2x+Fz4+Mb0yN7tylCsQJ7WUR+EuMccXJ/eRIeVLlBqDtu7Ki534kKwOKWarkGvmvJMaXDRUSVm4dYkLDE+byoZTqu2LhcRcchCQauatDjMIv+NEhoVF9nvJPaFfSBnV64i+RwVIDemNgtSAGfZxmw6Jlf8ZWnlNDCvkXqN4dypqrlIiIZpeJpAZg0zj48sV6PNNNqr5xPgepTbNw8ShUHIQr9E8m9ePnyf1kg6FtkbnP0HYuabNw3XMIa7ZTzeCfKH6hwHFpBfNntZO9Ph6mhBsx3VkBq1RzjM3JKGOQqILsq3EZJdwRL5r+WWp8J6FtHWMfsHxQ5Fj4bAZPBYHKyamLEl14l/grnl+PussGT09DYkDInnmihprHw/5Pl/lOJk7OtmrNB2OrRlDt9spsua4P+sZdiQwqnG/p2UXQSeShQoYbm4pgqrbfKUF3Bye3uYhujXfCu2/vEN9ddv2UBKCCZA/iqZohmZbGZadeayBLLVvB/CTFzEI5z9ya0f8TDTzo=
|
10
|
+
on:
|
11
|
+
tags: true
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,123 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
brine-dsl (0.5.0)
|
5
|
+
cucumber (~> 2.4)
|
6
|
+
faraday
|
7
|
+
faraday_middleware
|
8
|
+
jsonpath
|
9
|
+
mustache
|
10
|
+
oauth2
|
11
|
+
rspec
|
12
|
+
|
13
|
+
GEM
|
14
|
+
remote: http://rubygems.org/
|
15
|
+
specs:
|
16
|
+
aruba (0.14.2)
|
17
|
+
childprocess (~> 0.5.6)
|
18
|
+
contracts (~> 0.9)
|
19
|
+
cucumber (>= 1.3.19)
|
20
|
+
ffi (~> 1.9.10)
|
21
|
+
rspec-expectations (>= 2.99)
|
22
|
+
thor (~> 0.19)
|
23
|
+
asciidoctor (1.5.6.1)
|
24
|
+
builder (3.2.3)
|
25
|
+
childprocess (0.5.9)
|
26
|
+
ffi (~> 1.0, >= 1.0.11)
|
27
|
+
coderay (1.1.2)
|
28
|
+
contracts (0.16.0)
|
29
|
+
cucumber (2.99.0)
|
30
|
+
builder (>= 2.1.2)
|
31
|
+
cucumber-core (~> 1.5.0)
|
32
|
+
cucumber-wire (~> 0.0.1)
|
33
|
+
diff-lcs (>= 1.1.3)
|
34
|
+
gherkin (~> 4.0)
|
35
|
+
multi_json (>= 1.7.5, < 2.0)
|
36
|
+
multi_test (>= 0.1.2)
|
37
|
+
cucumber-core (1.5.0)
|
38
|
+
gherkin (~> 4.0)
|
39
|
+
cucumber-wire (0.0.1)
|
40
|
+
diff-lcs (1.3)
|
41
|
+
faraday (0.12.2)
|
42
|
+
multipart-post (>= 1.2, < 3)
|
43
|
+
faraday_middleware (0.12.2)
|
44
|
+
faraday (>= 0.7.4, < 1.0)
|
45
|
+
ffi (1.9.18)
|
46
|
+
formatador (0.2.5)
|
47
|
+
gherkin (4.1.3)
|
48
|
+
guard (2.14.1)
|
49
|
+
formatador (>= 0.2.4)
|
50
|
+
listen (>= 2.7, < 4.0)
|
51
|
+
lumberjack (~> 1.0)
|
52
|
+
nenv (~> 0.1)
|
53
|
+
notiffany (~> 0.0)
|
54
|
+
pry (>= 0.9.12)
|
55
|
+
shellany (~> 0.0)
|
56
|
+
thor (>= 0.18.1)
|
57
|
+
guard-compat (1.2.1)
|
58
|
+
guard-cucumber (2.1.2)
|
59
|
+
cucumber (~> 2.0)
|
60
|
+
guard-compat (~> 1.0)
|
61
|
+
nenv (~> 0.1)
|
62
|
+
jsonpath (0.8.10)
|
63
|
+
multi_json
|
64
|
+
jwt (1.5.6)
|
65
|
+
listen (3.1.5)
|
66
|
+
rb-fsevent (~> 0.9, >= 0.9.4)
|
67
|
+
rb-inotify (~> 0.9, >= 0.9.7)
|
68
|
+
ruby_dep (~> 1.2)
|
69
|
+
lumberjack (1.0.12)
|
70
|
+
method_source (0.9.0)
|
71
|
+
multi_json (1.12.2)
|
72
|
+
multi_test (0.1.2)
|
73
|
+
multi_xml (0.6.0)
|
74
|
+
multipart-post (2.0.0)
|
75
|
+
mustache (1.0.5)
|
76
|
+
nenv (0.3.0)
|
77
|
+
notiffany (0.1.1)
|
78
|
+
nenv (~> 0.1)
|
79
|
+
shellany (~> 0.0)
|
80
|
+
oauth2 (1.4.0)
|
81
|
+
faraday (>= 0.8, < 0.13)
|
82
|
+
jwt (~> 1.0)
|
83
|
+
multi_json (~> 1.3)
|
84
|
+
multi_xml (~> 0.5)
|
85
|
+
rack (>= 1.2, < 3)
|
86
|
+
pry (0.11.3)
|
87
|
+
coderay (~> 1.1.0)
|
88
|
+
method_source (~> 0.9.0)
|
89
|
+
rack (2.0.3)
|
90
|
+
rake (12.3.0)
|
91
|
+
rb-fsevent (0.10.2)
|
92
|
+
rb-inotify (0.9.10)
|
93
|
+
ffi (>= 0.5.0, < 2)
|
94
|
+
rspec (3.7.0)
|
95
|
+
rspec-core (~> 3.7.0)
|
96
|
+
rspec-expectations (~> 3.7.0)
|
97
|
+
rspec-mocks (~> 3.7.0)
|
98
|
+
rspec-core (3.7.0)
|
99
|
+
rspec-support (~> 3.7.0)
|
100
|
+
rspec-expectations (3.7.0)
|
101
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
102
|
+
rspec-support (~> 3.7.0)
|
103
|
+
rspec-mocks (3.7.0)
|
104
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
105
|
+
rspec-support (~> 3.7.0)
|
106
|
+
rspec-support (3.7.0)
|
107
|
+
ruby_dep (1.5.0)
|
108
|
+
shellany (0.0.1)
|
109
|
+
thor (0.20.0)
|
110
|
+
|
111
|
+
PLATFORMS
|
112
|
+
ruby
|
113
|
+
|
114
|
+
DEPENDENCIES
|
115
|
+
aruba!
|
116
|
+
asciidoctor!
|
117
|
+
brine-dsl!
|
118
|
+
guard!
|
119
|
+
guard-cucumber!
|
120
|
+
rake!
|
121
|
+
|
122
|
+
BUNDLED WITH
|
123
|
+
1.16.0
|
data/Guardfile
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
guard 'cucumber',
|
2
|
+
all_after_pass: true,
|
3
|
+
all_on_start: true,
|
4
|
+
cmd_additional_args: '--profile guard',
|
5
|
+
keep_failed: true do
|
6
|
+
|
7
|
+
clearing = true
|
8
|
+
watch(%r{^features/.+\.feature$})
|
9
|
+
watch(%r{^lib/.+$}) { "features" }
|
10
|
+
watch(%r{^features/step_definitions/.+$}) { "features" }
|
11
|
+
watch(%r{^features/support/.+$}) { "features" }
|
12
|
+
end
|
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2017 Brightcove
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,137 @@
|
|
1
|
+
Brine
|
2
|
+
===
|
3
|
+
|
4
|
+
> Cucumber DSL for testing REST APIs
|
5
|
+
|
6
|
+
Motivation
|
7
|
+
---
|
8
|
+
REpresentational State Transfer APIs expose their functionality
|
9
|
+
through combinations of fairly coarse primitives that generally
|
10
|
+
revolve around the use of transferring data in a standard exchange
|
11
|
+
format (such as JSON) using HTTP methods and other aspects of the very
|
12
|
+
simple HTTP protocol. Tests for such an API can therefore be defined
|
13
|
+
using a domain specific language (DSL) built around those higher level
|
14
|
+
ideas rather than requiring a general purpose language (the equivalent
|
15
|
+
of scripted `curl` commands with some glue code and assertions).
|
16
|
+
This project provides such a DSL by using select libraries
|
17
|
+
integrated into Cucumber, where Cucumber provides a test-oriented
|
18
|
+
framework for DSL creation.
|
19
|
+
|
20
|
+
Sample Usage
|
21
|
+
---
|
22
|
+
The general usage pattern revolves around construction of a request
|
23
|
+
and performing assertions against the received response.
|
24
|
+
|
25
|
+
```gherkin
|
26
|
+
When the request body is assigned:
|
27
|
+
"""
|
28
|
+
{"first_name": "John",
|
29
|
+
"last_name": "Smith"}
|
30
|
+
"""
|
31
|
+
And a POST is sent to `/users`
|
32
|
+
Then the value of the response status is equal to `200`
|
33
|
+
And the value of the response body is including:
|
34
|
+
"""
|
35
|
+
{"first_name": "John",
|
36
|
+
"last_name": "Smith"}
|
37
|
+
"""
|
38
|
+
```
|
39
|
+
|
40
|
+
Disclaimer
|
41
|
+
---
|
42
|
+
Right now this project is new and features are being implemented as
|
43
|
+
needed rather than speculatively. Some of the info here may be more
|
44
|
+
optimistic than realistic until things are smoothed out or hopes abandoned.
|
45
|
+
|
46
|
+
Features
|
47
|
+
---
|
48
|
+
|
49
|
+
### Variable Binding/Expansion
|
50
|
+
|
51
|
+
In cases where dynamic data is in the response or is desired for the
|
52
|
+
request, then values can be bound to identifiers which can then be
|
53
|
+
expanded using [Mustache](mustache.github.io) templates in your
|
54
|
+
feature files.
|
55
|
+
|
56
|
+
### Type Transforms
|
57
|
+
|
58
|
+
Different types of data can be expressed directly in the feature files
|
59
|
+
or expanded into variables by using the appropriate syntax for that
|
60
|
+
type.
|
61
|
+
|
62
|
+
[Read More](https://github.com/brightcove/brine/wiki/Argument-Transforms)
|
63
|
+
|
64
|
+
#### Type Coercion
|
65
|
+
|
66
|
+
Related to transforms, a facility to coerce types is also provided. This allows
|
67
|
+
more intelligent comparison of inputs which have been transformed to a
|
68
|
+
richer data type with those that have not been transformed (normally strings).
|
69
|
+
As an example comparing a date/time value with a string will attempt to parse
|
70
|
+
the string to a date/time so that the values can be compared using the proper semantics.
|
71
|
+
|
72
|
+
### Resource Cleanup
|
73
|
+
|
74
|
+
Tests are likely to create resources which should then be cleaned up,
|
75
|
+
restoring the pre-test state of the system: steps to facilitate this
|
76
|
+
are provided.
|
77
|
+
|
78
|
+
### Authentication
|
79
|
+
|
80
|
+
Presently OAuth2 is supported to issue authenticated requests during a
|
81
|
+
test (likely using a feature `Background`).
|
82
|
+
|
83
|
+
### Division of Selection and Assertion
|
84
|
+
|
85
|
+
To allow for a wider range of tests without an exploding code base
|
86
|
+
(and keeping the assertions easier to write), Brine internall splits the
|
87
|
+
selection of the value(s) to test from the assertion(s) that will be performed against it.
|
88
|
+
|
89
|
+
[Read Mode](https://github.com/brightcove/brine/wiki/Selection-and-Assertion)
|
90
|
+
|
91
|
+
### Request Construction and Response Assertion Step Definitions
|
92
|
+
|
93
|
+
The previous features combined with the library of provide steps should
|
94
|
+
cover all of the functionality needed to exercise and validate all of
|
95
|
+
the functionality exposed by your REST API.
|
96
|
+
|
97
|
+
|
98
|
+
Installation
|
99
|
+
---
|
100
|
+
|
101
|
+
Presently the gem for this project isn't being published anywhere:
|
102
|
+
primarily because tracking down a local gem repository seems scary. If
|
103
|
+
this project is open sourced then this will probably change but in the
|
104
|
+
meantime the project can be used off of GitHub by adding this to your
|
105
|
+
`Gemfile` and performing the usual `bundle install` dance:
|
106
|
+
|
107
|
+
```ruby
|
108
|
+
git 'git@github.com:brightcove/brine.git', :branch => 'master' do
|
109
|
+
gem 'brine'
|
110
|
+
end
|
111
|
+
```
|
112
|
+
|
113
|
+
Specific branches and refs can be targetted as
|
114
|
+
documented [here](http://bundler.io/git.html). This should likely be
|
115
|
+
done in any cases where you're not actively tracking Brine and don't want
|
116
|
+
your tests to suddenly break because of changes to it.
|
117
|
+
|
118
|
+
Brine can then be "mixed in" to your project (which adds assorted
|
119
|
+
modules to the `World` and loads all the step definitions and other
|
120
|
+
Cucumber magic) by adding the following to your `support/env.rb` or
|
121
|
+
other ruby file:
|
122
|
+
|
123
|
+
```ruby
|
124
|
+
require 'brine'
|
125
|
+
|
126
|
+
World(brine_mix)
|
127
|
+
```
|
128
|
+
|
129
|
+
Select pieces can also be loaded (to be documented). With the above,
|
130
|
+
feature files should be able to be written and executed without
|
131
|
+
requiring any additional ruby code.
|
132
|
+
|
133
|
+
Questions? Comments?
|
134
|
+
---
|
135
|
+
Check out the [wiki](https://github.com/brightcove/brine/wiki) for more information
|
136
|
+
and search for related [issues](https://github.com/brightcove/brine/issues)
|
137
|
+
or open one for anything not documented or implemented elsewhere.
|
data/Rakefile
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'cucumber/rake/task'
|
3
|
+
Cucumber::Rake::Task.new
|
4
|
+
|
5
|
+
task default: %w[check]
|
6
|
+
|
7
|
+
task :check do
|
8
|
+
ENV['ROOT_URL'] = 'http://www.example.com'
|
9
|
+
if (ENV['WATCH'])
|
10
|
+
Kernel.system("bundle exec guard -c")
|
11
|
+
else
|
12
|
+
Rake::Task['cucumber'].invoke
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
Cucumber::Rake::Task.new(:tutorial) do |t|
|
17
|
+
ENV['ROOT_URL'] = 'https://api.myjson.com/'
|
18
|
+
t.cucumber_opts = ['tutorial',
|
19
|
+
'-r tutorial/support/env.rb']
|
20
|
+
end
|
21
|
+
|
22
|
+
task :help do
|
23
|
+
puts """
|
24
|
+
Tasks
|
25
|
+
---
|
26
|
+
check - run tests
|
27
|
+
|
28
|
+
Environment Variables
|
29
|
+
---
|
30
|
+
WATCH - (guard) automatically rerun tests on file changes
|
31
|
+
"""
|
32
|
+
end
|
data/brine-dsl.gemspec
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
Gem::Specification.new do |s|
|
3
|
+
s.name = 'brine-dsl'
|
4
|
+
s.version = '0.5.0'
|
5
|
+
s.platform = Gem::Platform::RUBY
|
6
|
+
s.authors = ["Matt Whipple"]
|
7
|
+
s.email = ["mwhipple@brightcove.com"]
|
8
|
+
s.license = 'MIT'
|
9
|
+
s.homepage = "http://github.com/brightcove/brine"
|
10
|
+
s.summary = "Cucumber@REST in Brine"
|
11
|
+
s.description = "Cucumber@REST in Brine"
|
12
|
+
|
13
|
+
s.required_ruby_version = '>= 2.3.0'
|
14
|
+
|
15
|
+
s.add_runtime_dependency 'cucumber', '~> 2.4'
|
16
|
+
s.add_runtime_dependency 'mustache'
|
17
|
+
s.add_runtime_dependency 'oauth2'
|
18
|
+
s.add_runtime_dependency 'rspec'
|
19
|
+
s.add_runtime_dependency 'jsonpath'
|
20
|
+
s.add_runtime_dependency 'faraday'
|
21
|
+
s.add_runtime_dependency 'faraday_middleware'
|
22
|
+
|
23
|
+
s.add_development_dependency 'rake'
|
24
|
+
s.add_development_dependency 'aruba'
|
25
|
+
s.add_development_dependency 'guard'
|
26
|
+
s.add_development_dependency 'guard-cucumber'
|
27
|
+
s.add_development_dependency 'asciidoctor'
|
28
|
+
|
29
|
+
s.files = `git ls-files`.split("\n")
|
30
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
31
|
+
s.require_paths = ['lib']
|
32
|
+
end
|
data/config/cucumber.yml
ADDED
data/docs/build.gradle
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
plugins {
|
2
|
+
id "org.asciidoctor.gradle.asciidoctor" version "1.5.1"
|
3
|
+
}
|
4
|
+
|
5
|
+
dependencies {
|
6
|
+
asciidoctor 'com.github.domgold.doctools.asciidoctor:asciidoctor-gherkin-extension:1.0.1'
|
7
|
+
}
|
8
|
+
|
9
|
+
asciidoctor {
|
10
|
+
separateOutputDirs = false
|
11
|
+
sourceDir 'src'
|
12
|
+
outputDir projectDir
|
13
|
+
attributes 'toc' : 'right',
|
14
|
+
'source-highlighter' : 'highlightjs',
|
15
|
+
'icons' : 'font',
|
16
|
+
'page-layout': 'docs',
|
17
|
+
'page-description': '{description}',
|
18
|
+
'page-keywords': '{keywords}'
|
19
|
+
}
|