travis-lint 1.7.0 → 1.8.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/.travis.yml +8 -2
- data/Gemfile +3 -0
- data/README.md +2 -3
- data/lib/travis/lint/linter.rb +24 -10
- data/lib/travis/lint/runner.rb +15 -12
- data/lib/travis/lint/version.rb +1 -1
- data/spec/files/contains_exploit.yml +4 -0
- data/spec/files/invalid_language_key.yml +17 -0
- data/spec/files/no_language_key.yml +1 -1
- data/spec/files/uses_jruby_instead_of_jruby_in_specific_mode.yml +1 -1
- data/spec/travis_lint_runner_spec.rb +85 -12
- data/spec/travis_lint_spec.rb +59 -14
- data/travis-lint.gemspec +3 -2
- metadata +32 -20
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: c90e5a5967d9959dbb6679288e5268f47b9cb9b5
|
4
|
+
data.tar.gz: 25d78a63add59c86018b58d2394ba23613656875
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 6eed0e5956ff097a76f34fb935612c33101ca3f8f2afe993f62307946f427c7d36eabb824eff32930301dab16234158c1b201c3c6c3271b7fcbe1f79994ce34a
|
7
|
+
data.tar.gz: 834b2b41ffd8f1e23d36bca9a864d8e3b0733959f6edeb1cbc2c98327094da3c0af74653606512b41eb13549203662e8cff770636e092098629fc627de6b3126
|
data/.travis.yml
CHANGED
@@ -2,13 +2,19 @@ language: ruby
|
|
2
2
|
rvm:
|
3
3
|
- 1.9.2
|
4
4
|
- 1.9.3
|
5
|
+
- 2.0.0
|
5
6
|
- jruby-18mode
|
6
7
|
- jruby-19mode
|
7
|
-
- rbx
|
8
|
-
- rbx-19mode
|
8
|
+
- rbx
|
9
9
|
- jruby-head
|
10
10
|
- ruby-head
|
11
11
|
- 1.8.7
|
12
|
+
matrix:
|
13
|
+
allow_failures:
|
14
|
+
- rvm: jruby-head
|
15
|
+
- rvm: ruby-head
|
16
|
+
before_install:
|
17
|
+
- 'ruby -e ''puts RUBY_VERSION'' | grep ^1\.8 && gem update --system 2.1.11 || true'
|
12
18
|
script: bundle exec rspec -c spec
|
13
19
|
notifications:
|
14
20
|
irc: "irc.freenode.org#travis"
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
# What is travis-lint
|
2
2
|
|
3
3
|
`travis-lint` is a tool that checks your `.travis.yml` file for possible issues, deprecations and so on.
|
4
|
-
Supporting the gem, there
|
5
|
-
although it is currently down due to a security issue with the YAML parser. See [issue #17](https://github.com/travis-ci/travis-lint/issues/17) for updates.
|
4
|
+
Supporting the gem, there's also an online version of this tool at [lint.travis-ci.org](http://lint.travis-ci.org).
|
6
5
|
|
7
6
|
[](http://travis-ci.org/travis-ci/travis-lint)
|
8
7
|
|
@@ -34,6 +33,6 @@ Once you are done with your changes, push a branch and submit a pull request.
|
|
34
33
|
|
35
34
|
## License & Copyright
|
36
35
|
|
37
|
-
Copyright
|
36
|
+
Copyright 2014 (c) Travis CI Development Team.
|
38
37
|
|
39
38
|
Released under the MIT license.
|
data/lib/travis/lint/linter.rb
CHANGED
@@ -51,15 +51,15 @@ module Travis
|
|
51
51
|
hsh[:rvm].is_a?(Array) && hsh[:rvm].include?("jruby")
|
52
52
|
end
|
53
53
|
|
54
|
-
validator_for :ruby, :rvm, "
|
55
|
-
hsh[:rvm].is_a?(Array) && hsh[:rvm].include?("rbx")
|
54
|
+
validator_for :ruby, :rvm, "rbx-18mode RVM alias is no longer provide. Please use one of rbx, rbx-X, rbx-X.Y, or rbx-X.Y.Z depending on your desired version" do |hsh|
|
55
|
+
hsh[:rvm].is_a?(Array) && hsh[:rvm].include?("rbx-18mode")
|
56
56
|
end
|
57
57
|
|
58
|
-
validator_for :ruby, :rvm, "rbx-
|
59
|
-
hsh[:rvm].is_a?(Array) && hsh[:rvm].include?("rbx-
|
58
|
+
validator_for :ruby, :rvm, "rbx-19mode RVM alias is no longer provide. Please use one of rbx, rbx-X, rbx-X.Y, or rbx-X.Y.Z depending on your desired version" do |hsh|
|
59
|
+
hsh[:rvm].is_a?(Array) && hsh[:rvm].include?("rbx-19mode")
|
60
60
|
end
|
61
61
|
|
62
|
-
validator_for :ruby, :rvm, "rbx-2.0.0pre RVM alias is no longer provided. Please use rbx-
|
62
|
+
validator_for :ruby, :rvm, "rbx-2.0.0pre RVM alias is no longer provided. Please use one of rbx, rbx-X, rbx-X.Y, or rbx-X.Y.Z depending on your desired version" do |hsh|
|
63
63
|
hsh[:rvm].is_a?(Array) && hsh[:rvm].include?("rbx-2.0.0pre")
|
64
64
|
end
|
65
65
|
|
@@ -82,12 +82,12 @@ module Travis
|
|
82
82
|
end
|
83
83
|
|
84
84
|
|
85
|
-
KNOWN_RUBY_VERSIONS = %w(1.8.7 ruby-1.8.7 1.9.2 ruby-1.9.2 1.9.3 ruby-1.9.3 2.0.0 ruby-2.0.0 ruby-head jruby jruby-18mode jruby-19mode rbx rbx-18mode rbx-19mode jruby-head ree ree-1.8.7)
|
85
|
+
KNOWN_RUBY_VERSIONS = %w(1.8.7 ruby-1.8.7 1.9.2 ruby-1.9.2 1.9.3 ruby-1.9.3 2.0.0 ruby-2.0.0 2.1.0 ruby-2.1.0 2.1.1 ruby-2.1.1 ruby-head jruby jruby-18mode jruby-19mode rbx rbx-18mode rbx-19mode jruby-head ree ree-1.8.7 2.1.0-preview2 ruby-2.1.0-preview2 2.1.0-preview1 ruby-2.1.0-preview1 ree-1.8.7-2011.12)
|
86
86
|
KNOWN_NODE_VERSIONS = %w(0.6 0.8 0.9 0.10 0.11)
|
87
|
-
KNOWN_PHP_VERSIONS = %w(5.2 5.3 5.3.3 5.4 5.5)
|
87
|
+
KNOWN_PHP_VERSIONS = %w(5.2 5.3 5.3.3 5.4 5.5 5.6 hhvm)
|
88
88
|
|
89
|
-
KNOWN_PYTHON_VERSIONS = %w(2.
|
90
|
-
KNOWN_PERL_VERSIONS = %w(5.10 5.12 5.14 5.16)
|
89
|
+
KNOWN_PYTHON_VERSIONS = %w(2.6 2.7 3.2 3.3 pypy)
|
90
|
+
KNOWN_PERL_VERSIONS = %w(5.8 5.10 5.12 5.14 5.16 5.18 5.19)
|
91
91
|
|
92
92
|
|
93
93
|
#
|
@@ -124,11 +124,25 @@ module Travis
|
|
124
124
|
end
|
125
125
|
|
126
126
|
validator_for :all, :matrix, "Allowed matrix failures must contain a list of hashes." do |hash|
|
127
|
-
if hash[:matrix]
|
127
|
+
if hash[:matrix] && hash[:matrix].is_a?(Hash) && hash[:matrix][:allow_failures]
|
128
128
|
!hash[:matrix][:allow_failures].any?{|failure| failure.is_a?(Hash)}
|
129
129
|
end
|
130
130
|
end
|
131
131
|
|
132
|
+
validator_for :all, :matrix, "Matrix includes must be a list of hashes." do |hash|
|
133
|
+
if hash[:matrix] && hash[:matrix].is_a?(Hash) && hash[:matrix][:include]
|
134
|
+
!hash[:matrix][:include].any?{|failure| failure.is_a?(Hash)}
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
validator_for :all, :matrix, "Matrix must be a hash." do |hash|
|
139
|
+
!(hash[:matrix].nil? || hash[:matrix].is_a?(Hash))
|
140
|
+
end
|
141
|
+
|
142
|
+
validator_for :all, :language, "Language must be valid" do |hash|
|
143
|
+
hash.has_key?(:language) && validators_for_language(hash[:language]).empty?
|
144
|
+
end
|
145
|
+
|
132
146
|
protected
|
133
147
|
|
134
148
|
def self.known_ruby_versions?(ary)
|
data/lib/travis/lint/runner.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
require "pathname"
|
2
|
-
require "
|
2
|
+
require "safe_yaml"
|
3
3
|
|
4
4
|
require "travis/lint/linter"
|
5
5
|
|
@@ -16,6 +16,8 @@ module Travis
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
+
@quiet = !!ENV['QUIET']
|
20
|
+
|
19
21
|
@travis_yml_file_paths = []
|
20
22
|
argv.each do |arg|
|
21
23
|
@travis_yml_file_paths << Pathname.new(arg).expand_path
|
@@ -30,17 +32,20 @@ module Travis
|
|
30
32
|
check_that_travis_yml_file_is_valid_yaml!(travis_yml_file_path)
|
31
33
|
|
32
34
|
if (issues = Linter.validate(self.parsed_travis_yml(travis_yml_file_path))).empty?
|
33
|
-
|
35
|
+
unless @quiet
|
36
|
+
puts "Hooray, #{travis_yml_file_path} seems to be solid!\n"
|
37
|
+
end
|
34
38
|
else
|
35
39
|
errors = true
|
36
|
-
puts "#{travis_yml_file_path} has issues:"
|
40
|
+
$stderr.puts "#{travis_yml_file_path} has issues:"
|
37
41
|
issues.each do |issue|
|
38
|
-
puts " Found an issue with the `#{issue[:key]}:` key:\n #{issue[:issue]}"
|
42
|
+
$stderr.puts " Found an issue with the `#{issue[:key]}:` key:\n #{issue[:issue]}"
|
39
43
|
end
|
44
|
+
$stderr.puts
|
40
45
|
end
|
41
|
-
puts
|
42
46
|
end
|
43
47
|
exit(1) if errors
|
48
|
+
exit(0)
|
44
49
|
end
|
45
50
|
|
46
51
|
protected
|
@@ -53,14 +58,14 @@ module Travis
|
|
53
58
|
|
54
59
|
def check_that_travis_yml_file_is_valid_yaml!(travis_yml_file_path)
|
55
60
|
begin
|
56
|
-
YAML.load_file
|
57
|
-
rescue ArgumentError, Psych::SyntaxError
|
58
|
-
quit "#{travis_yml_file_path} is not a valid YAML file and thus will be ignored by Travis CI."
|
61
|
+
YAML.load_file travis_yml_file_path, :safe => true
|
62
|
+
rescue ArgumentError, Psych::SyntaxError => e
|
63
|
+
quit "#{travis_yml_file_path} is not a valid YAML file and thus will be ignored by Travis CI.\nError message: #{e.message}"
|
59
64
|
end
|
60
65
|
end
|
61
66
|
|
62
67
|
def parsed_travis_yml(travis_yml_file_path)
|
63
|
-
YAML.load_file
|
68
|
+
YAML.load_file travis_yml_file_path, :safe => true
|
64
69
|
end
|
65
70
|
|
66
71
|
def show_help
|
@@ -74,9 +79,7 @@ Usage:
|
|
74
79
|
end
|
75
80
|
|
76
81
|
def quit(message, status = 1)
|
77
|
-
puts message
|
78
|
-
puts
|
79
|
-
|
82
|
+
$stderr.puts message
|
80
83
|
exit(status)
|
81
84
|
end
|
82
85
|
end
|
data/lib/travis/lint/version.rb
CHANGED
@@ -0,0 +1,17 @@
|
|
1
|
+
language: foo
|
2
|
+
rvm:
|
3
|
+
- 1.9.3
|
4
|
+
- jruby-19mode
|
5
|
+
- rbx
|
6
|
+
gemfile:
|
7
|
+
- Gemfile
|
8
|
+
- gemfiles/eventmachine-pre
|
9
|
+
notifications:
|
10
|
+
recipients:
|
11
|
+
- recepient@example.com
|
12
|
+
branches:
|
13
|
+
only:
|
14
|
+
- master
|
15
|
+
- 0.9.x-stable
|
16
|
+
- 0.8.x-stable
|
17
|
+
- 0.7.x-stable
|
@@ -1,27 +1,100 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
require "stringio"
|
3
3
|
|
4
|
-
def
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
4
|
+
def capture
|
5
|
+
status = nil
|
6
|
+
$stdout = out = StringIO.new
|
7
|
+
$stderr = err = StringIO.new
|
8
|
+
|
9
|
+
begin
|
10
|
+
yield
|
11
|
+
rescue SystemExit => e
|
12
|
+
status = e.status
|
13
|
+
ensure
|
14
|
+
$stdout = STDOUT
|
15
|
+
$stderr = STDERR
|
16
|
+
end
|
17
|
+
|
18
|
+
err.rewind
|
19
|
+
out.rewind
|
20
|
+
return out.read || '', err.read || '', status
|
21
|
+
end
|
22
|
+
|
23
|
+
class ExploitableClassBuilder
|
24
|
+
def []=(key, value)
|
25
|
+
Class.new.class_eval <<-EOS
|
26
|
+
def #{key}
|
27
|
+
#{value}
|
28
|
+
end
|
29
|
+
EOS
|
30
|
+
end
|
9
31
|
end
|
10
32
|
|
11
33
|
describe "A .travis.yml" do
|
12
34
|
context "with issues" do
|
13
35
|
it "run should exit with non-zero exit status" do
|
14
|
-
status =
|
36
|
+
_, _, status = capture do
|
37
|
+
Travis::Lint::Runner.new(["spec/files/uses_unsupported_perl.yml"]).run
|
38
|
+
end
|
39
|
+
|
40
|
+
status.should_not == 0
|
41
|
+
end
|
42
|
+
|
43
|
+
it "run should report errors to $stderr" do
|
44
|
+
_, err, _ = capture do
|
45
|
+
Travis::Lint::Runner.new(["spec/files/uses_unsupported_perl.yml"]).run
|
46
|
+
end
|
47
|
+
|
48
|
+
err.chomp.should =~ /Found an issue with the `perl:` key:/
|
49
|
+
end
|
50
|
+
|
51
|
+
it "run should not report errors to $stdout" do
|
52
|
+
out, _, _ = capture do
|
53
|
+
Travis::Lint::Runner.new(["spec/files/uses_unsupported_perl.yml"]).run
|
54
|
+
end
|
15
55
|
|
16
|
-
|
17
|
-
|
18
|
-
|
56
|
+
out.chomp.should == ''
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
context "without issues" do
|
61
|
+
it "run should exit with zero exit status" do
|
62
|
+
_, _, status = capture do
|
63
|
+
Travis::Lint::Runner.new([".travis.yml"]).run
|
64
|
+
end
|
65
|
+
|
66
|
+
status.should == 0
|
67
|
+
end
|
68
|
+
|
69
|
+
it "run should report success to $stdout" do
|
70
|
+
out, _, _ = capture do
|
71
|
+
Travis::Lint::Runner.new([".travis.yml"]).run
|
72
|
+
end
|
73
|
+
|
74
|
+
out.chomp.should =~ /Hooray.*\.travis\.yml seems to be solid!/
|
75
|
+
end
|
76
|
+
|
77
|
+
context "with $QUIET set" do
|
78
|
+
before { ENV['QUIET'] = '1' }
|
79
|
+
after { ENV['QUIET'] = nil }
|
80
|
+
|
81
|
+
it "run should be silent" do
|
82
|
+
out, _, _ = capture do
|
83
|
+
Travis::Lint::Runner.new([".travis.yml"]).run
|
19
84
|
end
|
20
|
-
|
21
|
-
|
85
|
+
|
86
|
+
out.chomp.should == ''
|
22
87
|
end
|
88
|
+
end
|
89
|
+
end
|
23
90
|
|
24
|
-
|
91
|
+
context "with an exploit" do
|
92
|
+
it "loads safely" do
|
93
|
+
expect {
|
94
|
+
capture {
|
95
|
+
Travis::Lint::Runner.new(["spec/files/contains_exploit.yml"]).run
|
96
|
+
}
|
97
|
+
}.to_not raise_error
|
25
98
|
end
|
26
99
|
end
|
27
100
|
end
|
data/spec/travis_lint_spec.rb
CHANGED
@@ -13,16 +13,16 @@ describe "A .travis.yml" do
|
|
13
13
|
{ :key => :rvm, :issue => "Prefer jruby-18mode RVM alias to jruby" }
|
14
14
|
end
|
15
15
|
|
16
|
-
let(:
|
17
|
-
{ :key => :rvm, :issue => "
|
16
|
+
let(:rbx18mode_is_no_longer_provided) do
|
17
|
+
{ :key => :rvm, :issue => "rbx-18mode RVM alias is no longer provide. Please use one of rbx, rbx-X, rbx-X.Y, or rbx-X.Y.Z depending on your desired version" }
|
18
18
|
end
|
19
19
|
|
20
|
-
let(:
|
21
|
-
{ :key => :rvm, :issue => "rbx-
|
20
|
+
let(:rbx19mode_is_no_longer_provided) do
|
21
|
+
{ :key => :rvm, :issue => "rbx-19mode RVM alias is no longer provide. Please use one of rbx, rbx-X, rbx-X.Y, or rbx-X.Y.Z depending on your desired version" }
|
22
22
|
end
|
23
23
|
|
24
24
|
let(:rbx200pre_is_no_longer_provided) do
|
25
|
-
{ :key => :rvm, :issue => "rbx-2.0.0pre RVM alias is no longer provided. Please use rbx-
|
25
|
+
{ :key => :rvm, :issue => "rbx-2.0.0pre RVM alias is no longer provided. Please use one of rbx, rbx-X, rbx-X.Y, or rbx-X.Y.Z depending on your desired version" }
|
26
26
|
end
|
27
27
|
|
28
28
|
let(:otp_release_key_is_required) do
|
@@ -34,7 +34,7 @@ describe "A .travis.yml" do
|
|
34
34
|
def content_of_sample_file(name)
|
35
35
|
path = Pathname.new(File.join("spec", "files", name)).expand_path
|
36
36
|
|
37
|
-
YAML.load_file
|
37
|
+
YAML.load_file path.to_s, :safe => true
|
38
38
|
end
|
39
39
|
|
40
40
|
context "that is blank" do
|
@@ -45,6 +45,12 @@ describe "A .travis.yml" do
|
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
48
|
+
context "with invalid language" do
|
49
|
+
it "is invalid" do
|
50
|
+
Travis::Lint::Linter.valid?(content_of_sample_file("invalid_language_key.yml")).should be_false
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
48
54
|
context "using String keys" do
|
49
55
|
it "is validates as with Symbol keys" do
|
50
56
|
Travis::Lint::Linter.validate({ "language" => "ruby" }).should include(rvm_key_is_recommended)
|
@@ -70,34 +76,34 @@ describe "A .travis.yml" do
|
|
70
76
|
end
|
71
77
|
end
|
72
78
|
|
73
|
-
context "and uses rbx
|
79
|
+
context "and uses rbx-18mode" do
|
74
80
|
let(:travis_yml) do
|
75
|
-
{ :language => "ruby", :rvm => ["rbx", "1.9.3"] }
|
81
|
+
{ :language => "ruby", :rvm => ["rbx-18mode", "1.9.3"] }
|
76
82
|
end
|
77
83
|
|
78
84
|
it "is invalid" do
|
79
|
-
Travis::Lint::Linter.validate(travis_yml).should include(
|
85
|
+
Travis::Lint::Linter.validate(travis_yml).should include(rbx18mode_is_no_longer_provided)
|
80
86
|
end
|
81
87
|
end
|
82
88
|
|
83
|
-
context "and uses rbx-
|
89
|
+
context "and uses rbx-19mode" do
|
84
90
|
let(:travis_yml) do
|
85
|
-
{ :language => "ruby", :rvm => ["rbx-
|
91
|
+
{ :language => "ruby", :rvm => ["rbx-19mode", "1.9.3"] }
|
86
92
|
end
|
87
93
|
|
88
94
|
it "is invalid" do
|
89
|
-
Travis::Lint::Linter.validate(travis_yml).should include(
|
90
|
-
Travis::Lint::Linter.valid?(content_of_sample_file("uses_old_rbx_aliases.yml")).should be_false
|
95
|
+
Travis::Lint::Linter.validate(travis_yml).should include(rbx19mode_is_no_longer_provided)
|
91
96
|
end
|
92
97
|
end
|
93
98
|
|
94
|
-
context "and uses rbx-2.0.0pre
|
99
|
+
context "and uses rbx-2.0.0pre" do
|
95
100
|
let(:travis_yml) do
|
96
101
|
{ :language => "ruby", :rvm => ["rbx-2.0.0pre", "1.9.3"] }
|
97
102
|
end
|
98
103
|
|
99
104
|
it "is invalid" do
|
100
105
|
Travis::Lint::Linter.validate(travis_yml).should include(rbx200pre_is_no_longer_provided)
|
106
|
+
Travis::Lint::Linter.valid?(content_of_sample_file("uses_old_rbx_aliases.yml")).should be_false
|
101
107
|
end
|
102
108
|
end
|
103
109
|
|
@@ -205,6 +211,19 @@ describe "A .travis.yml" do
|
|
205
211
|
end
|
206
212
|
|
207
213
|
context "with a build matrix" do
|
214
|
+
let(:invalid_array_matrix) {
|
215
|
+
{:matrix => ['foo', 'bar', 'baz']}
|
216
|
+
}
|
217
|
+
|
218
|
+
let(:build_matrix_is_not_hash) {
|
219
|
+
{:key => :matrix, :issue => "Matrix must be a hash."}
|
220
|
+
}
|
221
|
+
|
222
|
+
it "is invalid unless the build matrix is a hash" do
|
223
|
+
Travis::Lint::Linter.valid?(invalid_array_matrix).should eq(false)
|
224
|
+
Travis::Lint::Linter.validate(invalid_array_matrix).should include(build_matrix_is_not_hash)
|
225
|
+
end
|
226
|
+
|
208
227
|
let(:build_matrix_is_not_list_of_hashes) {
|
209
228
|
{:key => :matrix, :issue => "Allowed matrix failures must contain a list of hashes."}
|
210
229
|
}
|
@@ -226,5 +245,31 @@ describe "A .travis.yml" do
|
|
226
245
|
Travis::Lint::Linter.valid?(valid_matrix).should == true
|
227
246
|
end
|
228
247
|
end
|
248
|
+
context "with include" do
|
249
|
+
let(:include_is_a_hash) {
|
250
|
+
{:matrix => {:include => {"jdk"=> 'openjdk6', 'script' => 'mvn dostuff'}}}
|
251
|
+
}
|
252
|
+
|
253
|
+
let(:include_is_an_array_of_arrays) {
|
254
|
+
{:matrix => {:include => [[{"jdk"=> 'openjdk6', 'script' => 'mvn dostuff'}]]}}
|
255
|
+
}
|
256
|
+
|
257
|
+
let(:valid_matrix) {
|
258
|
+
{:matrix => {:include => [{"jdk"=> 'openjdk6', 'script' => 'mvn dostuff'}]}}
|
259
|
+
}
|
260
|
+
|
261
|
+
let(:include_is_not_list_of_hashes) {
|
262
|
+
{:key => :matrix, :issue => "Matrix includes must be a list of hashes."}
|
263
|
+
}
|
264
|
+
it "is invalid when the include is not a list of hashes" do
|
265
|
+
Travis::Lint::Linter.validate(include_is_a_hash).should include(include_is_not_list_of_hashes)
|
266
|
+
Travis::Lint::Linter.valid?(include_is_a_hash).should == false
|
267
|
+
Travis::Lint::Linter.validate(include_is_an_array_of_arrays).should include(include_is_not_list_of_hashes)
|
268
|
+
Travis::Lint::Linter.valid?(include_is_an_array_of_arrays).should == false
|
269
|
+
end
|
270
|
+
it "is valid when allowed include is a list of hashes" do
|
271
|
+
Travis::Lint::Linter.valid?(valid_matrix).should == true
|
272
|
+
end
|
273
|
+
end
|
229
274
|
end
|
230
275
|
end
|
data/travis-lint.gemspec
CHANGED
@@ -16,7 +16,8 @@ Gem::Specification.new do |s|
|
|
16
16
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
17
17
|
s.require_paths = ["lib"]
|
18
18
|
|
19
|
-
s.add_dependency
|
19
|
+
s.add_dependency "hashr", "~> 0.0.22"
|
20
|
+
s.add_dependency "safe_yaml", '~> 0.9.0'
|
20
21
|
|
21
|
-
s.add_development_dependency
|
22
|
+
s.add_development_dependency "rspec", "~> 2.8"
|
22
23
|
end
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: travis-lint
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
5
|
-
prerelease:
|
4
|
+
version: 1.8.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Michael S. Klishin
|
@@ -10,38 +9,48 @@ authors:
|
|
10
9
|
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date:
|
12
|
+
date: 2014-03-13 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: hashr
|
17
16
|
requirement: !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
19
17
|
requirements:
|
20
|
-
- - ~>
|
18
|
+
- - "~>"
|
21
19
|
- !ruby/object:Gem::Version
|
22
20
|
version: 0.0.22
|
23
21
|
type: :runtime
|
24
22
|
prerelease: false
|
25
23
|
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
none: false
|
27
24
|
requirements:
|
28
|
-
- - ~>
|
25
|
+
- - "~>"
|
29
26
|
- !ruby/object:Gem::Version
|
30
27
|
version: 0.0.22
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: safe_yaml
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - "~>"
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: 0.9.0
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - "~>"
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: 0.9.0
|
31
42
|
- !ruby/object:Gem::Dependency
|
32
43
|
name: rspec
|
33
44
|
requirement: !ruby/object:Gem::Requirement
|
34
|
-
none: false
|
35
45
|
requirements:
|
36
|
-
- - ~>
|
46
|
+
- - "~>"
|
37
47
|
- !ruby/object:Gem::Version
|
38
48
|
version: '2.8'
|
39
49
|
type: :development
|
40
50
|
prerelease: false
|
41
51
|
version_requirements: !ruby/object:Gem::Requirement
|
42
|
-
none: false
|
43
52
|
requirements:
|
44
|
-
- - ~>
|
53
|
+
- - "~>"
|
45
54
|
- !ruby/object:Gem::Version
|
46
55
|
version: '2.8'
|
47
56
|
description: travis-lint is a tool that check your .travis.yml for possible issues,
|
@@ -54,9 +63,9 @@ executables:
|
|
54
63
|
extensions: []
|
55
64
|
extra_rdoc_files: []
|
56
65
|
files:
|
57
|
-
- .gitignore
|
58
|
-
- .rspec
|
59
|
-
- .travis.yml
|
66
|
+
- ".gitignore"
|
67
|
+
- ".rspec"
|
68
|
+
- ".travis.yml"
|
60
69
|
- Gemfile
|
61
70
|
- LICENSE
|
62
71
|
- README.md
|
@@ -67,6 +76,8 @@ files:
|
|
67
76
|
- lib/travis/lint/runner.rb
|
68
77
|
- lib/travis/lint/validator.rb
|
69
78
|
- lib/travis/lint/version.rb
|
79
|
+
- spec/files/contains_exploit.yml
|
80
|
+
- spec/files/invalid_language_key.yml
|
70
81
|
- spec/files/no_language_key.yml
|
71
82
|
- spec/files/no_rvm_key.yml
|
72
83
|
- spec/files/uses_jruby_instead_of_jruby_in_specific_mode.yml
|
@@ -83,29 +94,30 @@ files:
|
|
83
94
|
- travis-lint.gemspec
|
84
95
|
homepage: http://github.com/travis-ci
|
85
96
|
licenses: []
|
97
|
+
metadata: {}
|
86
98
|
post_install_message:
|
87
99
|
rdoc_options: []
|
88
100
|
require_paths:
|
89
101
|
- lib
|
90
102
|
required_ruby_version: !ruby/object:Gem::Requirement
|
91
|
-
none: false
|
92
103
|
requirements:
|
93
|
-
- -
|
104
|
+
- - ">="
|
94
105
|
- !ruby/object:Gem::Version
|
95
106
|
version: '0'
|
96
107
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
108
|
requirements:
|
99
|
-
- -
|
109
|
+
- - ">="
|
100
110
|
- !ruby/object:Gem::Version
|
101
111
|
version: '0'
|
102
112
|
requirements: []
|
103
113
|
rubyforge_project:
|
104
|
-
rubygems_version:
|
114
|
+
rubygems_version: 2.2.2
|
105
115
|
signing_key:
|
106
|
-
specification_version:
|
116
|
+
specification_version: 4
|
107
117
|
summary: Checks your .travis.yml for possible issues, deprecations and so on
|
108
118
|
test_files:
|
119
|
+
- spec/files/contains_exploit.yml
|
120
|
+
- spec/files/invalid_language_key.yml
|
109
121
|
- spec/files/no_language_key.yml
|
110
122
|
- spec/files/no_rvm_key.yml
|
111
123
|
- spec/files/uses_jruby_instead_of_jruby_in_specific_mode.yml
|