gemika 0.3.4 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +33 -37
- data/CHANGELOG.md +75 -0
- data/{gemfiles/Gemfile.2.3.mysql2 → Gemfile.2.3.mysql2} +2 -1
- data/{gemfiles/Gemfile.2.3.mysql2.lock → Gemfile.2.3.mysql2.lock} +11 -3
- data/{gemfiles/Gemfile.3.2.mysql2 → Gemfile.3.2.mysql2} +2 -1
- data/{gemfiles/Gemfile.3.2.mysql2.lock → Gemfile.3.2.mysql2.lock} +11 -3
- data/{gemfiles/Gemfile.4.2.mysql2 → Gemfile.4.2.mysql2} +2 -1
- data/{gemfiles/Gemfile.4.2.mysql2.lock → Gemfile.4.2.mysql2.lock} +9 -3
- data/{gemfiles/Gemfile.4.2.pg → Gemfile.4.2.pg} +2 -1
- data/{gemfiles/Gemfile.4.2.pg.lock → Gemfile.4.2.pg.lock} +9 -3
- data/{gemfiles/Gemfile.5.0.mysql2 → Gemfile.5.0.mysql2} +2 -1
- data/{gemfiles/Gemfile.5.0.mysql2.lock → Gemfile.5.0.mysql2.lock} +9 -3
- data/{gemfiles/Gemfile.5.0.pg → Gemfile.5.0.pg} +2 -1
- data/{gemfiles/Gemfile.5.0.pg.lock → Gemfile.5.0.pg.lock} +9 -3
- data/{gemfiles/Gemfile.5.0.sqlite3 → Gemfile.5.0.sqlite3} +2 -1
- data/{gemfiles/Gemfile.5.0.sqlite3.lock → Gemfile.5.0.sqlite3.lock} +8 -2
- data/README.md +40 -42
- data/lib/gemika/matrix.rb +6 -2
- data/lib/gemika/version.rb +1 -1
- data/spec/fixtures/travis_yml/includes.yml +12 -0
- data/spec/gemika/matrix_spec.rb +16 -0
- data/spec/spec_helper.rb +1 -0
- metadata +62 -39
- checksums.yaml +0 -7
- data/Gemfile.lock +0 -63
data/.travis.yml
CHANGED
@@ -1,46 +1,45 @@
|
|
1
1
|
language: ruby
|
2
2
|
|
3
|
-
|
4
|
-
- 1.8.7
|
5
|
-
- 2.1.8
|
6
|
-
- 2.2.4
|
7
|
-
- 2.3.1
|
8
|
-
|
9
|
-
gemfile:
|
10
|
-
- gemfiles/Gemfile.2.3.mysql2
|
11
|
-
- gemfiles/Gemfile.3.2.mysql2
|
12
|
-
- gemfiles/Gemfile.4.2.mysql2
|
13
|
-
- gemfiles/Gemfile.4.2.pg
|
14
|
-
- gemfiles/Gemfile.5.0.mysql2
|
15
|
-
- gemfiles/Gemfile.5.0.pg
|
16
|
-
- gemfiles/Gemfile.5.0.sqlite3
|
3
|
+
dist: trusty
|
17
4
|
|
18
5
|
matrix:
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
- gemfile: gemfiles/Gemfile.2.3.mysql2
|
23
|
-
rvm: 2.2.4
|
24
|
-
- gemfile: gemfiles/Gemfile.2.3.mysql2
|
25
|
-
rvm: 2.3.1
|
26
|
-
- gemfile: gemfiles/Gemfile.3.2.mysql2
|
27
|
-
rvm: 2.3.1
|
28
|
-
- gemfile: gemfiles/Gemfile.4.2.mysql2
|
29
|
-
rvm: 1.8.7
|
30
|
-
- gemfile: gemfiles/Gemfile.4.2.pg
|
6
|
+
include:
|
7
|
+
# Rails 2.3
|
8
|
+
- gemfile: Gemfile.2.3.mysql2
|
31
9
|
rvm: 1.8.7
|
32
|
-
|
10
|
+
# Rails 3.2
|
11
|
+
- gemfile: Gemfile.3.2.mysql2
|
33
12
|
rvm: 1.8.7
|
34
|
-
- gemfile:
|
35
|
-
rvm: 1.8.7
|
36
|
-
- gemfile: gemfiles/Gemfile.5.0.sqlite3
|
37
|
-
rvm: 1.8.7
|
38
|
-
- gemfile: gemfiles/Gemfile.5.0.mysql2
|
13
|
+
- gemfile: Gemfile.3.2.mysql2
|
39
14
|
rvm: 2.1.8
|
40
|
-
- gemfile:
|
15
|
+
- gemfile: Gemfile.3.2.mysql2
|
16
|
+
rvm: 2.2.4
|
17
|
+
# Rails 4.2
|
18
|
+
- gemfile: Gemfile.4.2.mysql2
|
41
19
|
rvm: 2.1.8
|
42
|
-
- gemfile:
|
20
|
+
- gemfile: Gemfile.4.2.pg
|
43
21
|
rvm: 2.1.8
|
22
|
+
- gemfile: Gemfile.4.2.mysql2
|
23
|
+
rvm: 2.2.4
|
24
|
+
- gemfile: Gemfile.4.2.pg
|
25
|
+
rvm: 2.2.4
|
26
|
+
- gemfile: Gemfile.4.2.mysql2
|
27
|
+
rvm: 2.3.1
|
28
|
+
- gemfile: Gemfile.4.2.pg
|
29
|
+
rvm: 2.3.1
|
30
|
+
# Rails 5.0
|
31
|
+
- gemfile: Gemfile.5.0.mysql2
|
32
|
+
rvm: 2.2.4
|
33
|
+
- gemfile: Gemfile.5.0.pg
|
34
|
+
rvm: 2.2.4
|
35
|
+
- gemfile: Gemfile.5.0.sqlite3
|
36
|
+
rvm: 2.2.4
|
37
|
+
- gemfile: Gemfile.5.0.mysql2
|
38
|
+
rvm: 2.3.1
|
39
|
+
- gemfile: Gemfile.5.0.pg
|
40
|
+
rvm: 2.3.1
|
41
|
+
- gemfile: Gemfile.5.0.sqlite3
|
42
|
+
rvm: 2.3.1
|
44
43
|
|
45
44
|
install:
|
46
45
|
# Replace default Travis CI bundler script with a version that doesn't
|
@@ -57,6 +56,3 @@ sudo: false
|
|
57
56
|
|
58
57
|
cache: bundler
|
59
58
|
|
60
|
-
notifications:
|
61
|
-
email:
|
62
|
-
- fail@makandra.de
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
All notable changes to this project will be documented in this file.
|
2
|
+
|
3
|
+
This project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
4
|
+
|
5
|
+
|
6
|
+
## Unreleased
|
7
|
+
|
8
|
+
### Breaking changes
|
9
|
+
|
10
|
+
-
|
11
|
+
|
12
|
+
### Compatible changes
|
13
|
+
|
14
|
+
-
|
15
|
+
|
16
|
+
## 0.4.0 - 2019-08-07
|
17
|
+
|
18
|
+
### Breaking changes
|
19
|
+
|
20
|
+
-
|
21
|
+
|
22
|
+
### Compatible changes
|
23
|
+
|
24
|
+
- Move gemfiles to project root
|
25
|
+
- Added support to read the `include` option from the `travis.yml` file. All combinations defined in the include option
|
26
|
+
are added to the existing matrix. If no matrix exist, these are the only ones that are run.
|
27
|
+
|
28
|
+
Example:
|
29
|
+
|
30
|
+
```
|
31
|
+
rvm:
|
32
|
+
- 2.1.8
|
33
|
+
- 2.3.1
|
34
|
+
|
35
|
+
gemfile:
|
36
|
+
- gemfiles/Gemfile1
|
37
|
+
- gemfiles/Gemfile2
|
38
|
+
|
39
|
+
matrix:
|
40
|
+
include:
|
41
|
+
- rvm: 2.6.3
|
42
|
+
gemfile: gemfiles/Gemfile3
|
43
|
+
```
|
44
|
+
|
45
|
+
## 0.3.4 - 2018-08-29
|
46
|
+
|
47
|
+
### Compatible changes
|
48
|
+
|
49
|
+
- Print a warning instead of crashing when `database.yml` is missing.
|
50
|
+
|
51
|
+
|
52
|
+
## 0.3.3 - 2018-08-01
|
53
|
+
|
54
|
+
### Compatible changes
|
55
|
+
|
56
|
+
- Add support for sqlite3.
|
57
|
+
|
58
|
+
|
59
|
+
## 0.3.2 - 2016-09-28
|
60
|
+
|
61
|
+
### Compatible changes
|
62
|
+
|
63
|
+
- Remove some debug output.
|
64
|
+
|
65
|
+
|
66
|
+
## 0.3.1 - 2016-09-28
|
67
|
+
|
68
|
+
### Compatible changes
|
69
|
+
|
70
|
+
- `rake current_rspec` no longer does a second unnecessary `bundle exec` call
|
71
|
+
|
72
|
+
|
73
|
+
## Older releases
|
74
|
+
|
75
|
+
Please check commits.
|
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
|
-
remote:
|
2
|
+
remote: .
|
3
3
|
specs:
|
4
|
-
gemika (0.
|
4
|
+
gemika (0.4.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -9,11 +9,18 @@ GEM
|
|
9
9
|
activerecord (2.3.18)
|
10
10
|
activesupport (= 2.3.18)
|
11
11
|
activesupport (2.3.18)
|
12
|
+
coderay (1.1.2)
|
12
13
|
database_cleaner (1.0.1)
|
13
14
|
i18n (0.6.11)
|
15
|
+
method_source (0.9.2)
|
14
16
|
mysql2 (0.2.20)
|
17
|
+
pry (0.9.12.6)
|
18
|
+
coderay (~> 1.0)
|
19
|
+
method_source (~> 0.8)
|
20
|
+
slop (~> 3.4)
|
15
21
|
rake (10.0.4)
|
16
22
|
rspec (1.3.2)
|
23
|
+
slop (3.6.0)
|
17
24
|
|
18
25
|
PLATFORMS
|
19
26
|
ruby
|
@@ -24,6 +31,7 @@ DEPENDENCIES
|
|
24
31
|
gemika!
|
25
32
|
i18n (= 0.6.11)
|
26
33
|
mysql2 (= 0.2.20)
|
34
|
+
pry
|
27
35
|
rake (= 10.0.4)
|
28
36
|
rspec (~> 1.3.0)
|
29
37
|
|
@@ -31,4 +39,4 @@ RUBY VERSION
|
|
31
39
|
ruby 1.8.7p375
|
32
40
|
|
33
41
|
BUNDLED WITH
|
34
|
-
1.
|
42
|
+
1.17.3
|
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
|
-
remote:
|
2
|
+
remote: .
|
3
3
|
specs:
|
4
|
-
gemika (0.
|
4
|
+
gemika (0.4.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -19,11 +19,17 @@ GEM
|
|
19
19
|
multi_json (~> 1.0)
|
20
20
|
arel (3.0.3)
|
21
21
|
builder (3.0.4)
|
22
|
+
coderay (1.1.2)
|
22
23
|
database_cleaner (1.0.1)
|
23
24
|
diff-lcs (1.2.5)
|
24
25
|
i18n (0.6.11)
|
26
|
+
method_source (0.9.2)
|
25
27
|
multi_json (1.12.1)
|
26
28
|
mysql2 (0.3.17)
|
29
|
+
pry (0.9.12.6)
|
30
|
+
coderay (~> 1.0)
|
31
|
+
method_source (~> 0.8)
|
32
|
+
slop (~> 3.4)
|
27
33
|
rake (10.0.4)
|
28
34
|
rspec (3.5.0)
|
29
35
|
rspec-core (~> 3.5.0)
|
@@ -38,6 +44,7 @@ GEM
|
|
38
44
|
diff-lcs (>= 1.2.0, < 2.0)
|
39
45
|
rspec-support (~> 3.5.0)
|
40
46
|
rspec-support (3.5.0)
|
47
|
+
slop (3.6.0)
|
41
48
|
tzinfo (0.3.51)
|
42
49
|
|
43
50
|
PLATFORMS
|
@@ -49,6 +56,7 @@ DEPENDENCIES
|
|
49
56
|
gemika!
|
50
57
|
i18n (= 0.6.11)
|
51
58
|
mysql2 (= 0.3.17)
|
59
|
+
pry
|
52
60
|
rake (= 10.0.4)
|
53
61
|
rspec (~> 3.4)
|
54
62
|
|
@@ -56,4 +64,4 @@ RUBY VERSION
|
|
56
64
|
ruby 1.8.7p375
|
57
65
|
|
58
66
|
BUNDLED WITH
|
59
|
-
1.
|
67
|
+
1.17.3
|
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
|
-
remote:
|
2
|
+
remote: .
|
3
3
|
specs:
|
4
|
-
gemika (0.
|
4
|
+
gemika (0.4.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -21,12 +21,17 @@ GEM
|
|
21
21
|
tzinfo (~> 1.1)
|
22
22
|
arel (6.0.3)
|
23
23
|
builder (3.2.2)
|
24
|
+
coderay (1.1.2)
|
24
25
|
database_cleaner (1.5.3)
|
25
26
|
diff-lcs (1.2.5)
|
26
27
|
i18n (0.7.0)
|
27
28
|
json (1.8.3)
|
29
|
+
method_source (0.9.2)
|
28
30
|
minitest (5.9.0)
|
29
31
|
mysql2 (0.3.21)
|
32
|
+
pry (0.12.2)
|
33
|
+
coderay (~> 1.1.0)
|
34
|
+
method_source (~> 0.9.0)
|
30
35
|
rake (11.3.0)
|
31
36
|
rspec (3.5.0)
|
32
37
|
rspec-core (~> 3.5.0)
|
@@ -53,6 +58,7 @@ DEPENDENCIES
|
|
53
58
|
database_cleaner
|
54
59
|
gemika!
|
55
60
|
mysql2 (~> 0.3.17)
|
61
|
+
pry
|
56
62
|
rake
|
57
63
|
rspec (~> 3.4)
|
58
64
|
|
@@ -60,4 +66,4 @@ RUBY VERSION
|
|
60
66
|
ruby 2.2.4p230
|
61
67
|
|
62
68
|
BUNDLED WITH
|
63
|
-
1.
|
69
|
+
1.17.3
|
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
|
-
remote:
|
2
|
+
remote: .
|
3
3
|
specs:
|
4
|
-
gemika (0.
|
4
|
+
gemika (0.4.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -21,12 +21,17 @@ GEM
|
|
21
21
|
tzinfo (~> 1.1)
|
22
22
|
arel (6.0.3)
|
23
23
|
builder (3.2.2)
|
24
|
+
coderay (1.1.2)
|
24
25
|
database_cleaner (1.5.3)
|
25
26
|
diff-lcs (1.2.5)
|
26
27
|
i18n (0.7.0)
|
27
28
|
json (1.8.3)
|
29
|
+
method_source (0.9.2)
|
28
30
|
minitest (5.9.0)
|
29
31
|
pg (0.19.0)
|
32
|
+
pry (0.12.2)
|
33
|
+
coderay (~> 1.1.0)
|
34
|
+
method_source (~> 0.9.0)
|
30
35
|
rake (11.3.0)
|
31
36
|
rspec (3.5.0)
|
32
37
|
rspec-core (~> 3.5.0)
|
@@ -53,6 +58,7 @@ DEPENDENCIES
|
|
53
58
|
database_cleaner
|
54
59
|
gemika!
|
55
60
|
pg
|
61
|
+
pry
|
56
62
|
rake
|
57
63
|
rspec (~> 3.4)
|
58
64
|
|
@@ -60,4 +66,4 @@ RUBY VERSION
|
|
60
66
|
ruby 2.3.1p112
|
61
67
|
|
62
68
|
BUNDLED WITH
|
63
|
-
1.
|
69
|
+
1.17.3
|
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
|
-
remote:
|
2
|
+
remote: .
|
3
3
|
specs:
|
4
|
-
gemika (0.
|
4
|
+
gemika (0.4.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -18,12 +18,17 @@ GEM
|
|
18
18
|
minitest (~> 5.1)
|
19
19
|
tzinfo (~> 1.1)
|
20
20
|
arel (7.1.2)
|
21
|
+
coderay (1.1.2)
|
21
22
|
concurrent-ruby (1.0.2)
|
22
23
|
database_cleaner (1.5.3)
|
23
24
|
diff-lcs (1.2.5)
|
24
25
|
i18n (0.7.0)
|
26
|
+
method_source (0.9.2)
|
25
27
|
minitest (5.9.0)
|
26
28
|
mysql2 (0.4.4)
|
29
|
+
pry (0.12.2)
|
30
|
+
coderay (~> 1.1.0)
|
31
|
+
method_source (~> 0.9.0)
|
27
32
|
rake (11.3.0)
|
28
33
|
rspec (3.5.0)
|
29
34
|
rspec-core (~> 3.5.0)
|
@@ -50,6 +55,7 @@ DEPENDENCIES
|
|
50
55
|
database_cleaner
|
51
56
|
gemika!
|
52
57
|
mysql2 (~> 0.4.4)
|
58
|
+
pry
|
53
59
|
rake
|
54
60
|
rspec (~> 3.5)
|
55
61
|
|
@@ -57,4 +63,4 @@ RUBY VERSION
|
|
57
63
|
ruby 2.2.4p230
|
58
64
|
|
59
65
|
BUNDLED WITH
|
60
|
-
1.
|
66
|
+
1.17.3
|
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
|
-
remote:
|
2
|
+
remote: .
|
3
3
|
specs:
|
4
|
-
gemika (0.
|
4
|
+
gemika (0.4.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -18,12 +18,17 @@ GEM
|
|
18
18
|
minitest (~> 5.1)
|
19
19
|
tzinfo (~> 1.1)
|
20
20
|
arel (7.1.2)
|
21
|
+
coderay (1.1.2)
|
21
22
|
concurrent-ruby (1.0.2)
|
22
23
|
database_cleaner (1.5.3)
|
23
24
|
diff-lcs (1.2.5)
|
24
25
|
i18n (0.7.0)
|
26
|
+
method_source (0.9.2)
|
25
27
|
minitest (5.9.0)
|
26
28
|
pg (0.18.4)
|
29
|
+
pry (0.12.2)
|
30
|
+
coderay (~> 1.1.0)
|
31
|
+
method_source (~> 0.9.0)
|
27
32
|
rake (11.3.0)
|
28
33
|
rspec (3.5.0)
|
29
34
|
rspec-core (~> 3.5.0)
|
@@ -50,6 +55,7 @@ DEPENDENCIES
|
|
50
55
|
database_cleaner
|
51
56
|
gemika!
|
52
57
|
pg (~> 0.18.4)
|
58
|
+
pry
|
53
59
|
rake
|
54
60
|
rspec (~> 3.5)
|
55
61
|
|
@@ -57,4 +63,4 @@ RUBY VERSION
|
|
57
63
|
ruby 2.2.4p230
|
58
64
|
|
59
65
|
BUNDLED WITH
|
60
|
-
1.
|
66
|
+
1.17.3
|
@@ -1,5 +1,5 @@
|
|
1
1
|
PATH
|
2
|
-
remote:
|
2
|
+
remote: .
|
3
3
|
specs:
|
4
4
|
gemika (0.3.4)
|
5
5
|
|
@@ -18,12 +18,17 @@ GEM
|
|
18
18
|
minitest (~> 5.1)
|
19
19
|
tzinfo (~> 1.1)
|
20
20
|
arel (7.1.4)
|
21
|
+
coderay (1.1.2)
|
21
22
|
concurrent-ruby (1.0.5)
|
22
23
|
database_cleaner (1.7.0)
|
23
24
|
diff-lcs (1.3)
|
24
25
|
i18n (1.0.1)
|
25
26
|
concurrent-ruby (~> 1.0)
|
27
|
+
method_source (0.9.2)
|
26
28
|
minitest (5.11.3)
|
29
|
+
pry (0.12.2)
|
30
|
+
coderay (~> 1.1.0)
|
31
|
+
method_source (~> 0.9.0)
|
27
32
|
rake (12.3.1)
|
28
33
|
rspec (3.7.0)
|
29
34
|
rspec-core (~> 3.7.0)
|
@@ -50,6 +55,7 @@ DEPENDENCIES
|
|
50
55
|
activerecord (~> 5.0.0)
|
51
56
|
database_cleaner
|
52
57
|
gemika!
|
58
|
+
pry
|
53
59
|
rake
|
54
60
|
rspec (~> 3.5)
|
55
61
|
sqlite3
|
@@ -58,4 +64,4 @@ RUBY VERSION
|
|
58
64
|
ruby 2.2.4p230
|
59
65
|
|
60
66
|
BUNDLED WITH
|
61
|
-
1.
|
67
|
+
1.17.3
|
data/README.md
CHANGED
@@ -43,14 +43,14 @@ Gemika also makes some assumption about your Gem:
|
|
43
43
|
Below you can see the directory of a gem with a completed Gemika testing setup. The next section describes how to get there:
|
44
44
|
|
45
45
|
```shell
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
Gemfile ->
|
53
|
-
Gemfile.lock ->
|
46
|
+
Gemfile.set1 # First dependency set. Should include development dependencies and gemika.
|
47
|
+
Gemfile.set1.lock # Generated by `rake matrix:install`
|
48
|
+
Gemfile.set2 # Second dependency set. Should include development dependencies and gemika.
|
49
|
+
Gemfile.set2.lock # Generated by `rake matrix:install`
|
50
|
+
Gemfile.set3 # Third dependency set. Should include development dependencies and gemika.
|
51
|
+
Gemfile.set3.lock # Generated by `rake matrix:install`
|
52
|
+
Gemfile -> Gemfile.set2 # Symlink to default Gemfile for development
|
53
|
+
Gemfile.lock -> Gemfile.set2.lock # Symlink to default Gemfile.lock for development
|
54
54
|
.ruby-version # Default Ruby version for development
|
55
55
|
.gitignore # Should ignore spec/support/database.yml
|
56
56
|
.travis.yml # Configures all tested Ruby / gemfile combinations, for both local development and Travis CI
|
@@ -136,21 +136,16 @@ task :default => 'matrix:spec'
|
|
136
136
|
### Define multiple dependency sets
|
137
137
|
|
138
138
|
We are now creating one `Gemfile` for each set of gems and database type you'd like to test again.
|
139
|
+
Your gemfiles should be placed directly in your project's root directory.
|
139
140
|
|
140
|
-
|
141
|
-
|
142
|
-
```shell
|
143
|
-
mkdir gemfiles
|
144
|
-
```
|
145
|
-
|
146
|
-
For each dependency set, create a `Gemfile` in the `gemfiles` directory that contains:
|
141
|
+
For each dependency set, create a `Gemfile` in the project root directory that contains:
|
147
142
|
|
148
143
|
1. The runtime dependencies you'd like to test against (e.g. Rails 5)
|
149
|
-
2. The development dependencies for that set (e.g. `rspec`) in a version that is compatible with these runtime
|
144
|
+
2. The development dependencies for that set (e.g. `rspec`) in a version that is compatible with these runtime dependencies.
|
150
145
|
3. The `gemika` gem
|
151
|
-
4. Your own gem from path
|
152
|
-
|
153
|
-
For instance, if one dependency set is Rails 3.2 with a MySQL database, we would create
|
146
|
+
4. Your own gem from path `.`
|
147
|
+
|
148
|
+
For instance, if one dependency set is Rails 3.2 with a MySQL database, we would create `./Gemfile.4.2.mysql2` with these contents:
|
154
149
|
|
155
150
|
```ruby
|
156
151
|
source 'https://rubygems.org'
|
@@ -166,10 +161,10 @@ gem 'byebug'
|
|
166
161
|
gem 'gemika'
|
167
162
|
|
168
163
|
# Gem under test
|
169
|
-
gem 'my_gem', :path => '
|
164
|
+
gem 'my_gem', :path => '.'
|
170
165
|
```
|
171
166
|
|
172
|
-
If a second dependency is Rails 5.0 with a PostgreSQL database, we would create
|
167
|
+
If a second dependency is Rails 5.0 with a PostgreSQL database, we would create `./Gemfile.5.0.pg` with these contents:
|
173
168
|
|
174
169
|
```ruby
|
175
170
|
source 'https://rubygems.org'
|
@@ -185,14 +180,14 @@ gem 'byebug'
|
|
185
180
|
gem 'gemika'
|
186
181
|
|
187
182
|
# Gem under test
|
188
|
-
gem 'my_gem', :path => '
|
183
|
+
gem 'my_gem', :path => '.'
|
189
184
|
```
|
190
185
|
|
191
|
-
In this example, your
|
186
|
+
In this example, your project directory should now also contain:
|
192
187
|
|
193
188
|
```
|
194
|
-
|
195
|
-
|
189
|
+
Gemfile.4.2.mysql2
|
190
|
+
Gemfile.5.0.pg
|
196
191
|
```
|
197
192
|
|
198
193
|
|
@@ -200,7 +195,7 @@ gemfiles/Gemfile.5.0.pg
|
|
200
195
|
|
201
196
|
We will now define a test matrix that contains all permutations of gemfiles and tested Ruby versions.
|
202
197
|
|
203
|
-
We store the matrix in a `.travis.yml` file, **even if the project is not using Travis CI**. This allows us to configure the matrix once and us it for both local
|
198
|
+
We store the matrix in a `.travis.yml` file, **even if the project is not using Travis CI**. This allows us to configure the matrix once and us it for both local development and Travis CI builds.
|
204
199
|
|
205
200
|
Create a `.travis.yml` that lists all gemfiles and Ruby versions you'd like to test against:
|
206
201
|
|
@@ -211,11 +206,11 @@ rvm:
|
|
211
206
|
- 2.3.1
|
212
207
|
|
213
208
|
gemfile:
|
214
|
-
-
|
215
|
-
-
|
216
|
-
-
|
217
|
-
-
|
218
|
-
-
|
209
|
+
- Gemfile.3.2.mysql2
|
210
|
+
- Gemfile.4.2.mysql2
|
211
|
+
- Gemfile.4.2.pg
|
212
|
+
- Gemfile.5.0.mysql2
|
213
|
+
- Gemfile.5.0.pg
|
219
214
|
```
|
220
215
|
|
221
216
|
Don't mind the `rvm` key if you're using a different version manager locally (like rbenv). Things will still work.
|
@@ -228,9 +223,9 @@ There might be incompatible combinations of gemfiles and Rubies, e.g. Rails 5.0
|
|
228
223
|
```yaml
|
229
224
|
matrix:
|
230
225
|
exclude:
|
231
|
-
- gemfile:
|
226
|
+
- gemfile: Gemfile.5.0.mysql2
|
232
227
|
rvm: 2.1.8
|
233
|
-
- gemfile:
|
228
|
+
- gemfile: Gemfile.5.0.pg
|
234
229
|
rvm: 2.1.8
|
235
230
|
```
|
236
231
|
|
@@ -242,13 +237,13 @@ Generate lockfiles for each bundle by running:
|
|
242
237
|
rake matrix:install
|
243
238
|
```
|
244
239
|
|
245
|
-
In this example, your
|
240
|
+
In this example, your project directory should now contain a lockfile for each gemfile:
|
246
241
|
|
247
242
|
```
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
243
|
+
Gemfile.4.2.mysql2
|
244
|
+
Gemfile.4.2.mysql2.lock
|
245
|
+
Gemfile.5.0.pg
|
246
|
+
Gemfile.5.0.pg.lock
|
252
247
|
```
|
253
248
|
|
254
249
|
Gemfiles and lockfiles should be committed to your repo.
|
@@ -269,8 +264,8 @@ Create a `.ruby-version` file with the default Ruby version:
|
|
269
264
|
Choose a default dependency set and symlink both gemfile and lockfile to your project root:
|
270
265
|
|
271
266
|
```
|
272
|
-
ln -s
|
273
|
-
ln -s
|
267
|
+
ln -s Gemfile.4.2.mysql2 Gemfile
|
268
|
+
ln -s Gemfile.4.2.mysql2.lock Gemfile.lock
|
274
269
|
```
|
275
270
|
|
276
271
|
Commit both `.ruby-version` and symlinks to your repo.
|
@@ -295,6 +290,9 @@ postgresql:
|
|
295
290
|
database: minidusen_test
|
296
291
|
user:
|
297
292
|
password:
|
293
|
+
|
294
|
+
sqlite:
|
295
|
+
database: ":memory:"
|
298
296
|
```
|
299
297
|
|
300
298
|
We don't want to commit our local credentials, so add a line to your `.gitignore`:
|
@@ -431,8 +429,8 @@ rake matrix:spec
|
|
431
429
|
Note that if your current Ruby version is *very* far away from your [default Ruby](#default-ruby-and-default-gemfile) in `.ruby-version`, you might need to run `rake` with a gemfile that has compatible dependencies:
|
432
430
|
|
433
431
|
```shell
|
434
|
-
BUNDLE_GEMFILE=
|
435
|
-
BUNDLE_GEMFILE=
|
432
|
+
BUNDLE_GEMFILE=Gemfile.2.3 bundle exec rake matrix:install
|
433
|
+
BUNDLE_GEMFILE=Gemfile.2.3 bundle exec rake matrix:spec
|
436
434
|
```
|
437
435
|
|
438
436
|
We recommend to setup Travis CI to check the entire test matrix after each push, including all Rubies. This way developers can stay on the [default Ruby and gemfile](#default-ruby-and-default-gemfile) most of the time while Travis CI checks make sure that nothing broken gets merged.
|
data/lib/gemika/matrix.rb
CHANGED
@@ -16,10 +16,12 @@ module Gemika
|
|
16
16
|
def load_rows(options)
|
17
17
|
path = options.fetch(:path, '.travis.yml')
|
18
18
|
travis_yml = YAML.load_file(path)
|
19
|
-
rubies = travis_yml.fetch('rvm')
|
20
|
-
gemfiles = travis_yml.fetch('gemfile')
|
19
|
+
rubies = travis_yml.fetch('rvm', [])
|
20
|
+
gemfiles = travis_yml.fetch('gemfile', [])
|
21
21
|
matrix_options = travis_yml.fetch('matrix', {})
|
22
|
+
includes = matrix_options.fetch('include', [])
|
22
23
|
excludes = matrix_options.fetch('exclude', [])
|
24
|
+
|
23
25
|
rows = []
|
24
26
|
rubies.each do |ruby|
|
25
27
|
gemfiles.each do |gemfile|
|
@@ -27,6 +29,8 @@ module Gemika
|
|
27
29
|
rows << row unless excludes.include?(row)
|
28
30
|
end
|
29
31
|
end
|
32
|
+
|
33
|
+
rows = rows + includes
|
30
34
|
rows = rows.map { |row| convert_row(row) }
|
31
35
|
rows
|
32
36
|
end
|
data/lib/gemika/version.rb
CHANGED
data/spec/gemika/matrix_spec.rb
CHANGED
@@ -131,6 +131,22 @@ EOF
|
|
131
131
|
matrix.rows[2].gemfile.should == 'gemfiles/Gemfile2'
|
132
132
|
end
|
133
133
|
|
134
|
+
it 'allows to include rows to the matrix' do
|
135
|
+
path = 'spec/fixtures/travis_yml/includes.yml'
|
136
|
+
matrix = Gemika::Matrix.from_travis_yml(:path => path, :validate => false)
|
137
|
+
matrix.rows.size.should == 5
|
138
|
+
matrix.rows[0].ruby.should == '2.1.8'
|
139
|
+
matrix.rows[0].gemfile.should == 'gemfiles/Gemfile1'
|
140
|
+
matrix.rows[1].ruby.should == '2.1.8'
|
141
|
+
matrix.rows[1].gemfile.should == 'gemfiles/Gemfile2'
|
142
|
+
matrix.rows[2].ruby.should == '2.3.1'
|
143
|
+
matrix.rows[2].gemfile.should == 'gemfiles/Gemfile1'
|
144
|
+
matrix.rows[3].ruby.should == '2.3.1'
|
145
|
+
matrix.rows[3].gemfile.should == 'gemfiles/Gemfile2'
|
146
|
+
matrix.rows[4].ruby.should == '2.6.3'
|
147
|
+
matrix.rows[4].gemfile.should == 'gemfiles/Gemfile3'
|
148
|
+
end
|
149
|
+
|
134
150
|
it 'raises an error if a Gemfile does not exist' do
|
135
151
|
path = 'spec/fixtures/travis_yml/missing_gemfile.yml'
|
136
152
|
expect { Gemika::Matrix.from_travis_yml(:path => path) }.to raise_error(Gemika::MissingGemfile, /gemfile not found/i)
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,45 +1,56 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: gemika
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 15
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 4
|
9
|
+
- 0
|
10
|
+
version: 0.4.0
|
5
11
|
platform: ruby
|
6
|
-
authors:
|
12
|
+
authors:
|
7
13
|
- Henning Koch
|
8
14
|
autorequire:
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
|
-
|
17
|
+
|
18
|
+
date: 2019-08-07 00:00:00 Z
|
12
19
|
dependencies: []
|
20
|
+
|
13
21
|
description: Helpers for testing Ruby gems
|
14
22
|
email: henning.koch@makandra.de
|
15
23
|
executables: []
|
24
|
+
|
16
25
|
extensions: []
|
26
|
+
|
17
27
|
extra_rdoc_files: []
|
18
|
-
|
19
|
-
|
20
|
-
-
|
21
|
-
-
|
22
|
-
-
|
23
|
-
-
|
24
|
-
-
|
28
|
+
|
29
|
+
files:
|
30
|
+
- .gitignore
|
31
|
+
- .rspec
|
32
|
+
- .ruby-version
|
33
|
+
- .travis.yml
|
34
|
+
- .yardopts
|
35
|
+
- CHANGELOG.md
|
36
|
+
- Gemfile.2.3.mysql2
|
37
|
+
- Gemfile.2.3.mysql2.lock
|
38
|
+
- Gemfile.3.2.mysql2
|
39
|
+
- Gemfile.3.2.mysql2.lock
|
40
|
+
- Gemfile.4.2.mysql2
|
41
|
+
- Gemfile.4.2.mysql2.lock
|
42
|
+
- Gemfile.4.2.pg
|
43
|
+
- Gemfile.4.2.pg.lock
|
44
|
+
- Gemfile.5.0.mysql2
|
45
|
+
- Gemfile.5.0.mysql2.lock
|
46
|
+
- Gemfile.5.0.pg
|
47
|
+
- Gemfile.5.0.pg.lock
|
48
|
+
- Gemfile.5.0.sqlite3
|
49
|
+
- Gemfile.5.0.sqlite3.lock
|
25
50
|
- LICENSE
|
26
51
|
- README.md
|
27
52
|
- Rakefile
|
28
53
|
- doc/minidusen_test.png
|
29
|
-
- gemfiles/Gemfile.2.3.mysql2
|
30
|
-
- gemfiles/Gemfile.2.3.mysql2.lock
|
31
|
-
- gemfiles/Gemfile.3.2.mysql2
|
32
|
-
- gemfiles/Gemfile.3.2.mysql2.lock
|
33
|
-
- gemfiles/Gemfile.4.2.mysql2
|
34
|
-
- gemfiles/Gemfile.4.2.mysql2.lock
|
35
|
-
- gemfiles/Gemfile.4.2.pg
|
36
|
-
- gemfiles/Gemfile.4.2.pg.lock
|
37
|
-
- gemfiles/Gemfile.5.0.mysql2
|
38
|
-
- gemfiles/Gemfile.5.0.mysql2.lock
|
39
|
-
- gemfiles/Gemfile.5.0.pg
|
40
|
-
- gemfiles/Gemfile.5.0.pg.lock
|
41
|
-
- gemfiles/Gemfile.5.0.sqlite3
|
42
|
-
- gemfiles/Gemfile.5.0.sqlite3.lock
|
43
54
|
- gemika.gemspec
|
44
55
|
- lib/gemika.rb
|
45
56
|
- lib/gemika/database.rb
|
@@ -56,6 +67,7 @@ files:
|
|
56
67
|
- spec/fixtures/travis_yml/Gemfile_without_gemika
|
57
68
|
- spec/fixtures/travis_yml/excludes.yml
|
58
69
|
- spec/fixtures/travis_yml/gemfile_without_gemika.yml
|
70
|
+
- spec/fixtures/travis_yml/includes.yml
|
59
71
|
- spec/fixtures/travis_yml/missing_gemfile.yml
|
60
72
|
- spec/fixtures/travis_yml/two_by_two.yml
|
61
73
|
- spec/gemika/database_spec.rb
|
@@ -68,27 +80,38 @@ files:
|
|
68
80
|
- spec/support/database.travis.yml
|
69
81
|
- spec/support/models.rb
|
70
82
|
homepage: https://github.com/makandra/gemika
|
71
|
-
licenses:
|
83
|
+
licenses:
|
72
84
|
- MIT
|
73
|
-
metadata: {}
|
74
85
|
post_install_message:
|
75
86
|
rdoc_options: []
|
76
|
-
|
87
|
+
|
88
|
+
require_paths:
|
77
89
|
- lib
|
78
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
79
|
-
|
90
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
91
|
+
none: false
|
92
|
+
requirements:
|
80
93
|
- - ">="
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
|
83
|
-
|
84
|
-
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
hash: 3
|
96
|
+
segments:
|
97
|
+
- 0
|
98
|
+
version: "0"
|
99
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
100
|
+
none: false
|
101
|
+
requirements:
|
85
102
|
- - ">="
|
86
|
-
- !ruby/object:Gem::Version
|
87
|
-
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
hash: 3
|
105
|
+
segments:
|
106
|
+
- 0
|
107
|
+
version: "0"
|
88
108
|
requirements: []
|
109
|
+
|
89
110
|
rubyforge_project:
|
90
|
-
rubygems_version:
|
111
|
+
rubygems_version: 1.8.30
|
91
112
|
signing_key:
|
92
|
-
specification_version:
|
113
|
+
specification_version: 3
|
93
114
|
summary: Helpers for testing Ruby gems
|
94
115
|
test_files: []
|
116
|
+
|
117
|
+
has_rdoc:
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA256:
|
3
|
-
metadata.gz: 6c560743c889bf6b598685415ad4dbc94adfbad6570e3b6339df77bc0c875ca1
|
4
|
-
data.tar.gz: 26ae03d7ebe63ebe866c10084fbc841deb2e4e51b5b6dfa41fd83e5cdb0e0990
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: a199f7f00ee13cae08ee7b35f3b2bbe6f970643e2fb2e134c7f95418f75fcefd8573077780fdc344e2bf3b5128c767827d2ee6cc6cbf1a7331bddbef4b4a1198
|
7
|
-
data.tar.gz: 4c2a678c94e8c52590efeb78aa251631c5c820ed5fb3f6e396e3e9838f51fc0181181dc2cc0a33564f532b33955e7bfe4dc4d3cc95aad508c24256038324b84a
|
data/Gemfile.lock
DELETED
@@ -1,63 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: ..
|
3
|
-
specs:
|
4
|
-
gemika (0.3.4)
|
5
|
-
|
6
|
-
GEM
|
7
|
-
remote: https://rubygems.org/
|
8
|
-
specs:
|
9
|
-
activemodel (4.2.10)
|
10
|
-
activesupport (= 4.2.10)
|
11
|
-
builder (~> 3.1)
|
12
|
-
activerecord (4.2.10)
|
13
|
-
activemodel (= 4.2.10)
|
14
|
-
activesupport (= 4.2.10)
|
15
|
-
arel (~> 6.0)
|
16
|
-
activesupport (4.2.10)
|
17
|
-
i18n (~> 0.7)
|
18
|
-
minitest (~> 5.1)
|
19
|
-
thread_safe (~> 0.3, >= 0.3.4)
|
20
|
-
tzinfo (~> 1.1)
|
21
|
-
arel (6.0.4)
|
22
|
-
builder (3.2.3)
|
23
|
-
concurrent-ruby (1.0.5)
|
24
|
-
database_cleaner (1.7.0)
|
25
|
-
diff-lcs (1.3)
|
26
|
-
i18n (0.9.5)
|
27
|
-
concurrent-ruby (~> 1.0)
|
28
|
-
minitest (5.11.3)
|
29
|
-
pg (1.1.2)
|
30
|
-
rake (12.3.1)
|
31
|
-
rspec (3.8.0)
|
32
|
-
rspec-core (~> 3.8.0)
|
33
|
-
rspec-expectations (~> 3.8.0)
|
34
|
-
rspec-mocks (~> 3.8.0)
|
35
|
-
rspec-core (3.8.0)
|
36
|
-
rspec-support (~> 3.8.0)
|
37
|
-
rspec-expectations (3.8.1)
|
38
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
39
|
-
rspec-support (~> 3.8.0)
|
40
|
-
rspec-mocks (3.8.0)
|
41
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
42
|
-
rspec-support (~> 3.8.0)
|
43
|
-
rspec-support (3.8.0)
|
44
|
-
thread_safe (0.3.6)
|
45
|
-
tzinfo (1.2.5)
|
46
|
-
thread_safe (~> 0.1)
|
47
|
-
|
48
|
-
PLATFORMS
|
49
|
-
ruby
|
50
|
-
|
51
|
-
DEPENDENCIES
|
52
|
-
activerecord (~> 4.2.1)
|
53
|
-
database_cleaner
|
54
|
-
gemika!
|
55
|
-
pg
|
56
|
-
rake
|
57
|
-
rspec (~> 3.4)
|
58
|
-
|
59
|
-
RUBY VERSION
|
60
|
-
ruby 2.2.4p230
|
61
|
-
|
62
|
-
BUNDLED WITH
|
63
|
-
1.16.1
|