cukedep 0.0.5 → 0.0.6
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 +8 -8
- data/CHANGELOG.md +3 -0
- data/README.md +61 -30
- data/lib/cukedep/constants.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NTFmZmYzYjM3ODEyODM5Yjg4OWIxYTU2Njk2MDcyMzhiOGIwYjA2Nw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZGUyMmMxMjJhYmVmMmU1YTNmOGU3YWNjODBkMDA1OWQxOTg1MDlhMw==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZDQyNDUzMzdkYzIyZTMwMGEyNDE0ZjRjMGJiYmViODBmY2U4OWNlNDQ2NzBl
|
10
|
+
ZmE3YmJhMjk1ODNkZDQ0NGRmODQ1NTZhNzU0MDUyOGZlODViMmQ1M2I4MWQ2
|
11
|
+
Y2JkOGU5NjJmZWUzZDcxNmRlMzEzYWI0NzVjY2E1NjM2MzU5NDI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MDkxMWFiZmYzM2Q1ZTNmMWExZjcxOTA0MGRkOGRhZTljNjMzMzQ4N2U3ZDM2
|
14
|
+
MWZjOTU5N2FjYmIyY2RhMDUwNmFiNjI3YTE0N2UwOTMyNjU5ZDdhYWJhMjRh
|
15
|
+
YTQyNTUwMjZmOGY4NTI4YTg5ZGIyMTZjMGNlMzA5NWU0YjRlZGU=
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -3,20 +3,47 @@ Cukedep
|
|
3
3
|
[](https://travis-ci.org/famished-tiger/cukedep)
|
4
4
|
[](http://badge.fury.io/rb/cukedep)
|
5
5
|
|
6
|
-
_Handle dependencies between feature
|
6
|
+
_Handle dependencies between feature files._
|
7
7
|
[Homepage](https://github.com/famished-tiger/cukedep)
|
8
8
|
|
9
|
-
|
9
|
+
### What is Cukedep? ###
|
10
|
+
__Cukedep__ is a command-line utility that helps to execute Cucumber feature files
|
11
|
+
in a sequence that meets their dependencies.
|
12
|
+
With __Cukedep__ you can:
|
13
|
+
* Specify that a given feature file has one or other feature files as its pre-requisite.
|
14
|
+
* Manage the dependencies, thanks to dependency reports and diagram.
|
15
|
+
* Overcome Cucumber's constraint: file name sort order == execution order
|
16
|
+
|
17
|
+
### Should dependencies between feature files not be banned? ###
|
18
|
+
The short answer is a "Yes but..."
|
19
|
+
|
20
|
+
In an ideal world, tests and feature files could be run one independently of each other.
|
21
|
+
However, when the feature file set grows in size and complexity it becomes more and more
|
22
|
+
difficult to guarantee watertight isolation between feature files. For instance, steps in a feature file may have side effects
|
23
|
+
that influence the results of scenarios from another feature.
|
24
|
+
While side effects are often undesirable, that does not means that they should ALWAYS be
|
25
|
+
avoided:
|
26
|
+
* Because the removal/reversal of a side effect can be too complicated or tedious,
|
27
|
+
* Because the results of a feature can be re-used with profit in another feature.
|
28
|
+
|
29
|
+
To illustrate the second point consider the following case:
|
30
|
+
* You want to test the calculation of invoices but the business of your company
|
31
|
+
involves many kinds of billable transactions with their own complicated lifecycle
|
32
|
+
(e.g. a purchase order). It might be more expedient to test the invoicing by
|
33
|
+
re-using paying transactions generated by other -specialized- features. As a consequence,
|
34
|
+
most invoice-related features should run after the execution of the paying transaction.
|
35
|
+
Feature file isolation has been traded off for efficiency.
|
36
|
+
|
10
37
|
|
11
38
|
### Highlights ###
|
12
|
-
* Simple syntax to specify dependencies
|
39
|
+
* Simple syntax to specify dependencies in your feature files
|
13
40
|
* Generates dependency reports (in CSV format)
|
14
|
-
* Generates dependency diagram (in DOT format),
|
41
|
+
* Generates dependency diagram (in GraphViz's DOT format),
|
15
42
|
* Generates a Rake file.
|
16
43
|
|
17
44
|
|
18
45
|
### Installation ###
|
19
|
-
The installation of the
|
46
|
+
The installation of the __cukedep__ gem is fairly standard:
|
20
47
|
```bash
|
21
48
|
$[sudo] gem install cukedep
|
22
49
|
```
|
@@ -27,7 +54,7 @@ and type the command-line:
|
|
27
54
|
cukedep --version
|
28
55
|
```
|
29
56
|
|
30
|
-
You should see the version of
|
57
|
+
You should see the version of __cukedep__ gem.
|
31
58
|
|
32
59
|
|
33
60
|
### Synopsis ###
|
@@ -40,17 +67,17 @@ rake
|
|
40
67
|
|
41
68
|
You will see tests running and Cucumber executing a number of feature files.
|
42
69
|
|
43
|
-
To learn more what's happening, go to the ```rspec/sample_features``` dir
|
44
|
-
You will notice a number of feature files for a sample application.
|
45
|
-
Stay in that folder and type the following command-line:
|
70
|
+
To learn more what's happening, go to the ```rspec/sample_features``` dir.
|
71
|
+
You will notice a number of feature files for a sample application.
|
72
|
+
Stay in that folder and type the following command-line:
|
46
73
|
```bash
|
47
74
|
cukedep --project ../../../sample --dry-run
|
48
75
|
```
|
49
76
|
|
50
|
-
You told cukedep to do the following:
|
51
|
-
* Read (parse) all the feature files in the current dir.
|
52
|
-
* Resolve the dependencies between the feature files (based on Gherkin @tags with a special format).
|
53
|
-
* Generate a number of dependency reports and drawing.
|
77
|
+
You told cukedep to do the following:
|
78
|
+
* Read (parse) all the feature files in the current dir.
|
79
|
+
* Resolve the dependencies between the feature files (based on Gherkin @tags with a special format).
|
80
|
+
* Generate a number of dependency reports and drawing.
|
54
81
|
* Generate a rake file that will execute the feature files in the proper sequence for
|
55
82
|
the project located at the relative path ```../../../sample```
|
56
83
|
|
@@ -63,8 +90,8 @@ cukedep --project ../../../sample
|
|
63
90
|
Now you see cukedep redoing the same actions as previously but in addition
|
64
91
|
it:
|
65
92
|
* Copies a feature file from the current directive to the Cucumber-based project
|
66
|
-
*
|
67
|
-
*
|
93
|
+
* Lets Cucumber execute the feature file
|
94
|
+
* Repeats the two above steps in a sequence that meet the dependencies specified in the feature files.
|
68
95
|
|
69
96
|
|
70
97
|
### How can I define dependencies? ###
|
@@ -72,27 +99,31 @@ To define dependencies between feature files, use Gherkin specific tags.
|
|
72
99
|
Suppose that feature `foo` depends on feature `bar`.
|
73
100
|
Then the feature file `foo` may begin as follows:
|
74
101
|
|
75
|
-
```cucumber
|
76
|
-
# The next line names this feature 'foo' and make dependent on 'bar'
|
77
|
-
@feature:foo @depends_on:bar
|
78
|
-
Feature: Check-in
|
79
|
-
|
80
|
-
|
81
|
-
|
102
|
+
```cucumber
|
103
|
+
# The next line names this feature 'foo' and make dependent on 'bar'
|
104
|
+
@feature:foo @depends_on:bar
|
105
|
+
Feature: Check-in
|
106
|
+
As a video rental employee
|
107
|
+
I want to register return of rented videos
|
108
|
+
So that other members can them too
|
82
109
|
```
|
83
110
|
|
84
111
|
While feature `bar` may start like this:
|
85
|
-
```cucumber
|
86
|
-
# The next line names this feature 'bar'
|
87
|
-
@feature:bar
|
88
|
-
Feature: Renting videos
|
89
|
-
|
90
|
-
|
91
|
-
|
112
|
+
```cucumber
|
113
|
+
# The next line names this feature 'bar'
|
114
|
+
@feature:bar
|
115
|
+
Feature: Renting videos
|
116
|
+
As a video rental employee
|
117
|
+
I want to register rentals made by a member
|
118
|
+
So I can run my business
|
92
119
|
```
|
93
120
|
|
121
|
+
#### Recap: ####
|
122
|
+
- To identify/name a feature use a tag of the form: `@feature:foo`
|
123
|
+
- To express a dependency on a feature with identifier `foo`, use the tag syntax: `@depends_on:foo`
|
94
124
|
|
95
125
|
|
96
126
|
Copyright
|
97
127
|
---------
|
98
|
-
Copyright (c) 2013, Dimitri Geshef.
|
128
|
+
Copyright (c) 2013, Dimitri Geshef.
|
129
|
+
__Cukedep__ is released under the MIT License see [LICENSE.txt](https://github.com/famished-tiger/Cukedep/blob/master/LICENSE.txt) for details.
|
data/lib/cukedep/constants.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cukedep
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dimitri Geshef
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-10-
|
11
|
+
date: 2013-10-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cucumber
|