cukedep 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
[![Build Status](https://travis-ci.org/famished-tiger/cukedep.png?branch=master)](https://travis-ci.org/famished-tiger/cukedep)
|
4
4
|
[![Gem Version](https://badge.fury.io/rb/cukedep.png)](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
|