travis-lint 1.8.0 → 2.0.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 +4 -4
- data/bin/travis-lint +22 -29
- metadata +15 -88
- data/.gitignore +0 -8
- data/.rspec +0 -3
- data/.travis.yml +0 -24
- data/Gemfile +0 -7
- data/LICENSE +0 -22
- data/README.md +0 -38
- data/lib/travis/lint.rb +0 -4
- data/lib/travis/lint/dsl.rb +0 -32
- data/lib/travis/lint/linter.rb +0 -185
- data/lib/travis/lint/runner.rb +0 -87
- data/lib/travis/lint/validator.rb +0 -15
- data/lib/travis/lint/version.rb +0 -6
- data/spec/files/contains_exploit.yml +0 -4
- data/spec/files/invalid_language_key.yml +0 -17
- data/spec/files/no_language_key.yml +0 -16
- data/spec/files/no_rvm_key.yml +0 -1
- data/spec/files/uses_jruby_instead_of_jruby_in_specific_mode.yml +0 -4
- data/spec/files/uses_old_rbx_aliases.yml +0 -5
- data/spec/files/uses_ruby_as_language_but_tries_to_switch_nodejs.yml +0 -5
- data/spec/files/uses_unsupported_nodejs.yml +0 -5
- data/spec/files/uses_unsupported_perl.yml +0 -7
- data/spec/files/uses_unsupported_php.yml +0 -5
- data/spec/files/uses_unsupported_python.yml +0 -7
- data/spec/files/uses_unsupported_rubies.yml +0 -5
- data/spec/spec_helper.rb +0 -11
- data/spec/travis_lint_runner_spec.rb +0 -100
- data/spec/travis_lint_spec.rb +0 -275
- data/travis-lint.gemspec +0 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0caba50cb092c71ffae98a0aa63a3c707065f94d
|
4
|
+
data.tar.gz: c436f7b7bb4d5bb1168e1084f6c1ab7fd4464a85
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 92bb27047fafb37c40d136644048130339ff6a195b7e7c4828b29b918173b89f0475ec2d1d6de56a1cd73e27290933abaf7597e1cd84cea0324ec3b4a559fc02
|
7
|
+
data.tar.gz: a4f36c68ba75ae83af8adf4e802cbe090bc41c2a1e915ccfd332bc8c2eede603315c148aa1dc25354a76275de27994435312f2d862b471b23707b472f98051f9
|
data/bin/travis-lint
CHANGED
@@ -1,31 +1,24 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
For background, please see http://gist.github.com/54177.
|
25
|
-
#{'*'*50}
|
26
|
-
EOS
|
27
|
-
|
28
|
-
raise e
|
29
|
-
|
30
|
-
exit(1)
|
2
|
+
require 'timeout'
|
3
|
+
|
4
|
+
Timeout.timeout(5) do
|
5
|
+
require 'uri'
|
6
|
+
require 'net/https'
|
7
|
+
require 'json'
|
8
|
+
|
9
|
+
path = ARGV[0] || '.travis.yml'
|
10
|
+
http = Net::HTTP.new('api.travis-ci.org', 443)
|
11
|
+
http.use_ssl = true
|
12
|
+
request = Net::HTTP::Post.new('/lint')
|
13
|
+
request.body = path == '-' ? $stdin.read : File.read(path)
|
14
|
+
response = http.request(request)
|
15
|
+
|
16
|
+
response.value
|
17
|
+
warnings = JSON.load(response.body)['lint']['warnings']
|
18
|
+
warnings.reverse.each do |warning|
|
19
|
+
prefix = " " << warning['key'].join('.') << ":" if warning['key'].any?
|
20
|
+
puts "-#{prefix} #{warning['message']}"
|
21
|
+
end
|
22
|
+
|
23
|
+
exit 1 if warnings.any?
|
31
24
|
end
|
metadata
CHANGED
@@ -1,99 +1,40 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: travis-lint
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
8
|
-
- Travis CI Development Team
|
7
|
+
- Travis CI GmbH
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2014-
|
11
|
+
date: 2014-07-16 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
14
|
+
name: json
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
16
|
requirements:
|
18
|
-
- - "
|
17
|
+
- - ">="
|
19
18
|
- !ruby/object:Gem::Version
|
20
|
-
version: 0
|
19
|
+
version: '0'
|
21
20
|
type: :runtime
|
22
21
|
prerelease: false
|
23
22
|
version_requirements: !ruby/object:Gem::Requirement
|
24
23
|
requirements:
|
25
|
-
- - "
|
24
|
+
- - ">="
|
26
25
|
- !ruby/object:Gem::Version
|
27
|
-
version: 0
|
28
|
-
|
29
|
-
|
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
|
42
|
-
- !ruby/object:Gem::Dependency
|
43
|
-
name: rspec
|
44
|
-
requirement: !ruby/object:Gem::Requirement
|
45
|
-
requirements:
|
46
|
-
- - "~>"
|
47
|
-
- !ruby/object:Gem::Version
|
48
|
-
version: '2.8'
|
49
|
-
type: :development
|
50
|
-
prerelease: false
|
51
|
-
version_requirements: !ruby/object:Gem::Requirement
|
52
|
-
requirements:
|
53
|
-
- - "~>"
|
54
|
-
- !ruby/object:Gem::Version
|
55
|
-
version: '2.8'
|
56
|
-
description: travis-lint is a tool that check your .travis.yml for possible issues,
|
57
|
-
deprecations and so on. Recommended for all travis-ci.org users.
|
58
|
-
email:
|
59
|
-
- michaelklishin@me.com
|
60
|
-
- michael@novemberain.com
|
26
|
+
version: '0'
|
27
|
+
description: 'DEPRECATED: Use `travis lint` (from travis gem) instead'
|
28
|
+
email: support@travis-ci.com
|
61
29
|
executables:
|
62
30
|
- travis-lint
|
63
31
|
extensions: []
|
64
32
|
extra_rdoc_files: []
|
65
33
|
files:
|
66
|
-
- ".gitignore"
|
67
|
-
- ".rspec"
|
68
|
-
- ".travis.yml"
|
69
|
-
- Gemfile
|
70
|
-
- LICENSE
|
71
|
-
- README.md
|
72
34
|
- bin/travis-lint
|
73
|
-
|
74
|
-
|
75
|
-
-
|
76
|
-
- lib/travis/lint/runner.rb
|
77
|
-
- lib/travis/lint/validator.rb
|
78
|
-
- lib/travis/lint/version.rb
|
79
|
-
- spec/files/contains_exploit.yml
|
80
|
-
- spec/files/invalid_language_key.yml
|
81
|
-
- spec/files/no_language_key.yml
|
82
|
-
- spec/files/no_rvm_key.yml
|
83
|
-
- spec/files/uses_jruby_instead_of_jruby_in_specific_mode.yml
|
84
|
-
- spec/files/uses_old_rbx_aliases.yml
|
85
|
-
- spec/files/uses_ruby_as_language_but_tries_to_switch_nodejs.yml
|
86
|
-
- spec/files/uses_unsupported_nodejs.yml
|
87
|
-
- spec/files/uses_unsupported_perl.yml
|
88
|
-
- spec/files/uses_unsupported_php.yml
|
89
|
-
- spec/files/uses_unsupported_python.yml
|
90
|
-
- spec/files/uses_unsupported_rubies.yml
|
91
|
-
- spec/spec_helper.rb
|
92
|
-
- spec/travis_lint_runner_spec.rb
|
93
|
-
- spec/travis_lint_spec.rb
|
94
|
-
- travis-lint.gemspec
|
95
|
-
homepage: http://github.com/travis-ci
|
96
|
-
licenses: []
|
35
|
+
homepage: https://travis-ci.com
|
36
|
+
licenses:
|
37
|
+
- MIT
|
97
38
|
metadata: {}
|
98
39
|
post_install_message:
|
99
40
|
rdoc_options: []
|
@@ -115,19 +56,5 @@ rubygems_version: 2.2.2
|
|
115
56
|
signing_key:
|
116
57
|
specification_version: 4
|
117
58
|
summary: Checks your .travis.yml for possible issues, deprecations and so on
|
118
|
-
test_files:
|
119
|
-
|
120
|
-
- spec/files/invalid_language_key.yml
|
121
|
-
- spec/files/no_language_key.yml
|
122
|
-
- spec/files/no_rvm_key.yml
|
123
|
-
- spec/files/uses_jruby_instead_of_jruby_in_specific_mode.yml
|
124
|
-
- spec/files/uses_old_rbx_aliases.yml
|
125
|
-
- spec/files/uses_ruby_as_language_but_tries_to_switch_nodejs.yml
|
126
|
-
- spec/files/uses_unsupported_nodejs.yml
|
127
|
-
- spec/files/uses_unsupported_perl.yml
|
128
|
-
- spec/files/uses_unsupported_php.yml
|
129
|
-
- spec/files/uses_unsupported_python.yml
|
130
|
-
- spec/files/uses_unsupported_rubies.yml
|
131
|
-
- spec/spec_helper.rb
|
132
|
-
- spec/travis_lint_runner_spec.rb
|
133
|
-
- spec/travis_lint_spec.rb
|
59
|
+
test_files: []
|
60
|
+
has_rdoc:
|
data/.gitignore
DELETED
data/.rspec
DELETED
data/.travis.yml
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
rvm:
|
3
|
-
- 1.9.2
|
4
|
-
- 1.9.3
|
5
|
-
- 2.0.0
|
6
|
-
- jruby-18mode
|
7
|
-
- jruby-19mode
|
8
|
-
- rbx
|
9
|
-
- jruby-head
|
10
|
-
- ruby-head
|
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'
|
18
|
-
script: bundle exec rspec -c spec
|
19
|
-
notifications:
|
20
|
-
irc: "irc.freenode.org#travis"
|
21
|
-
email:
|
22
|
-
recepients:
|
23
|
-
- michaelklishin@me.com
|
24
|
-
|
data/Gemfile
DELETED
data/LICENSE
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
MIT LICENSE
|
2
|
-
|
3
|
-
Copyright (c) 2012 Travis CI Development Team <contact@travis-ci.org>
|
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
|
13
|
-
all 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
|
21
|
-
THE SOFTWARE.
|
22
|
-
|
data/README.md
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
# What is travis-lint
|
2
|
-
|
3
|
-
`travis-lint` is a tool that checks your `.travis.yml` file for possible issues, deprecations and so on.
|
4
|
-
Supporting the gem, there's also an online version of this tool at [lint.travis-ci.org](http://lint.travis-ci.org).
|
5
|
-
|
6
|
-
[](http://travis-ci.org/travis-ci/travis-lint)
|
7
|
-
|
8
|
-
|
9
|
-
## Installation
|
10
|
-
|
11
|
-
gem install travis-lint
|
12
|
-
|
13
|
-
|
14
|
-
## Usage
|
15
|
-
|
16
|
-
travis-lint # inside a dir with .travis.yml
|
17
|
-
travis-lint ./.travis.yml
|
18
|
-
travis-lint ~/your/project/.travis.yml
|
19
|
-
|
20
|
-
|
21
|
-
## Development
|
22
|
-
|
23
|
-
Install dependencies with
|
24
|
-
|
25
|
-
bundle install
|
26
|
-
|
27
|
-
then run tests with
|
28
|
-
|
29
|
-
bundle exec rspec spec
|
30
|
-
|
31
|
-
Once you are done with your changes, push a branch and submit a pull request.
|
32
|
-
|
33
|
-
|
34
|
-
## License & Copyright
|
35
|
-
|
36
|
-
Copyright 2014 (c) Travis CI Development Team.
|
37
|
-
|
38
|
-
Released under the MIT license.
|
data/lib/travis/lint.rb
DELETED
data/lib/travis/lint/dsl.rb
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
require "travis/lint/validator"
|
2
|
-
|
3
|
-
module Travis
|
4
|
-
module Lint
|
5
|
-
module DSL
|
6
|
-
def blank? object
|
7
|
-
# This implementation is based on rails' activesupport. It is used
|
8
|
-
# under the MIT license.
|
9
|
-
object.respond_to?(:empty?) ? object.empty? : !object
|
10
|
-
end
|
11
|
-
|
12
|
-
@@validators = []
|
13
|
-
|
14
|
-
def validator_for(language, key, message, &validator)
|
15
|
-
@@validators << Validator.new(language, key, message, validator)
|
16
|
-
end
|
17
|
-
|
18
|
-
|
19
|
-
def validators_for_language(language)
|
20
|
-
@@validators.select { |v| v.language.to_s.downcase == language.to_s.downcase }
|
21
|
-
end
|
22
|
-
|
23
|
-
def generic_validators
|
24
|
-
@@validators.select { |v| v.language.to_s.downcase == :all.to_s }
|
25
|
-
end
|
26
|
-
|
27
|
-
def find_validators_for(language)
|
28
|
-
generic_validators + validators_for_language(language)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
data/lib/travis/lint/linter.rb
DELETED
@@ -1,185 +0,0 @@
|
|
1
|
-
require "travis/lint/dsl"
|
2
|
-
|
3
|
-
require "hashr"
|
4
|
-
|
5
|
-
module Travis
|
6
|
-
module Lint
|
7
|
-
class Linter
|
8
|
-
|
9
|
-
#
|
10
|
-
# Behaviors
|
11
|
-
#
|
12
|
-
|
13
|
-
extend Lint::DSL
|
14
|
-
|
15
|
-
|
16
|
-
#
|
17
|
-
# API
|
18
|
-
#
|
19
|
-
|
20
|
-
def self.validate(hsh)
|
21
|
-
hsh = Hashr.new hsh
|
22
|
-
|
23
|
-
find_validators_for(hsh[:language]).inject([]) do |acc, val|
|
24
|
-
acc << val.call(hsh)
|
25
|
-
acc
|
26
|
-
end.reject(&:first).map { |pair| pair[1] }
|
27
|
-
end
|
28
|
-
|
29
|
-
def self.valid?(hsh)
|
30
|
-
validate(hsh).empty?
|
31
|
-
end
|
32
|
-
|
33
|
-
#
|
34
|
-
# Erlang
|
35
|
-
#
|
36
|
-
|
37
|
-
validator_for :erlang, :otp_release, "Specify OTP releases you want to test against using the \"otp_release\" key" do |hsh|
|
38
|
-
hsh[:language].to_s.downcase == "erlang" && blank?(hsh[:otp_release])
|
39
|
-
end
|
40
|
-
|
41
|
-
|
42
|
-
#
|
43
|
-
# Ruby
|
44
|
-
#
|
45
|
-
|
46
|
-
validator_for :ruby, :rvm, "Specify Ruby versions/implementations you want to test against using the \"rvm\" key" do |hsh|
|
47
|
-
hsh[:language].to_s.downcase == "ruby" && blank?(hsh[:rvm])
|
48
|
-
end
|
49
|
-
|
50
|
-
validator_for :ruby, :rvm, "Prefer jruby-18mode RVM alias to jruby" do |hsh|
|
51
|
-
hsh[:rvm].is_a?(Array) && hsh[:rvm].include?("jruby")
|
52
|
-
end
|
53
|
-
|
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
|
-
end
|
57
|
-
|
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
|
-
end
|
61
|
-
|
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
|
-
hsh[:rvm].is_a?(Array) && hsh[:rvm].include?("rbx-2.0.0pre")
|
64
|
-
end
|
65
|
-
|
66
|
-
validator_for :ruby, :rvm, "Ruby 1.9.1 is no longer maintained and is no longer provided on travis-ci.org. Please move to 1.9.3." do |hsh|
|
67
|
-
hsh[:rvm].is_a?(Array) && hsh[:rvm].include?("1.9.1")
|
68
|
-
end
|
69
|
-
|
70
|
-
validator_for :ruby, :rvm, "Ruby 1.8.6 is no longer maintained and is no longer provided on travis-ci.org. Please move to 1.8.7." do |hsh|
|
71
|
-
hsh[:rvm].is_a?(Array) && hsh[:rvm].include?("1.8.6")
|
72
|
-
end
|
73
|
-
|
74
|
-
DOCS_URL = "Travis CI documentation at http://bit.ly/travis-ci-environment"
|
75
|
-
|
76
|
-
validator_for :ruby, :rvm, "Detected unsupported Ruby versions. For an up-to-date list of supported Rubies, see #{DOCS_URL}" do |hsh|
|
77
|
-
("ruby" == hsh[:language].to_s.downcase) && hsh[:rvm].is_a?(Array) && !known_ruby_versions?(hsh[:rvm])
|
78
|
-
end
|
79
|
-
|
80
|
-
validator_for :ruby, :language, "Language is set to Ruby but node_js key is present. Ruby builder will ignore node_js key." do |hsh|
|
81
|
-
hsh[:language].to_s.downcase == "ruby" && ! blank?(hsh[:node_js])
|
82
|
-
end
|
83
|
-
|
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 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
|
-
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 5.6 hhvm)
|
88
|
-
|
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
|
-
|
92
|
-
|
93
|
-
#
|
94
|
-
# PHP
|
95
|
-
#
|
96
|
-
|
97
|
-
validator_for :php, :php, "Detected unsupported PHP versions. For an up-to-date list of supported PHP versions, see #{DOCS_URL}" do |hsh|
|
98
|
-
("php" == hsh[:language].to_s.downcase) && hsh[:php].is_a?(Array) && !known_php_versions?(hsh[:php])
|
99
|
-
end
|
100
|
-
|
101
|
-
#
|
102
|
-
# Python
|
103
|
-
#
|
104
|
-
|
105
|
-
validator_for :python, :python, "Detected unsupported Python versions. For an up-to-date list of supported Python versions, see #{DOCS_URL}" do |hsh|
|
106
|
-
("python" == hsh[:language].to_s.downcase) && hsh[:python].is_a?(Array) && !known_python_versions?(hsh[:python])
|
107
|
-
end
|
108
|
-
|
109
|
-
#
|
110
|
-
# Perl
|
111
|
-
#
|
112
|
-
|
113
|
-
validator_for :perl, :perl, "Detected unsupported Perl versions. For an up-to-date list of supported Perl versions, see #{DOCS_URL}" do |hsh|
|
114
|
-
("perl" == hsh[:language].to_s.downcase) && hsh[:perl].is_a?(Array) && !known_perl_versions?(hsh[:perl])
|
115
|
-
end
|
116
|
-
|
117
|
-
|
118
|
-
#
|
119
|
-
# Node.js
|
120
|
-
#
|
121
|
-
|
122
|
-
validator_for :node_js, :node_js, "Detected unsupported Node.js versions. For an up-to-date list of supported Node.js versions, see #{DOCS_URL}" do |hsh|
|
123
|
-
("node_js" == hsh[:language].to_s.downcase) && hsh[:node_js].is_a?(Array) && !known_node_js_versions?(hsh[:node_js])
|
124
|
-
end
|
125
|
-
|
126
|
-
validator_for :all, :matrix, "Allowed matrix failures must contain a list of hashes." do |hash|
|
127
|
-
if hash[:matrix] && hash[:matrix].is_a?(Hash) && hash[:matrix][:allow_failures]
|
128
|
-
!hash[:matrix][:allow_failures].any?{|failure| failure.is_a?(Hash)}
|
129
|
-
end
|
130
|
-
end
|
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
|
-
|
146
|
-
protected
|
147
|
-
|
148
|
-
def self.known_ruby_versions?(ary)
|
149
|
-
ary = ary.map(&:to_s)
|
150
|
-
|
151
|
-
unknown = ary - KNOWN_RUBY_VERSIONS
|
152
|
-
unknown.empty?
|
153
|
-
end
|
154
|
-
|
155
|
-
def self.known_node_js_versions?(ary)
|
156
|
-
ary = ary.map(&:to_s)
|
157
|
-
|
158
|
-
unknown = ary - KNOWN_NODE_VERSIONS
|
159
|
-
unknown.empty?
|
160
|
-
end
|
161
|
-
|
162
|
-
def self.known_php_versions?(ary)
|
163
|
-
ary = ary.map(&:to_s)
|
164
|
-
|
165
|
-
unknown = ary - KNOWN_PHP_VERSIONS
|
166
|
-
unknown.empty?
|
167
|
-
end
|
168
|
-
|
169
|
-
def self.known_python_versions?(ary)
|
170
|
-
ary = ary.map(&:to_s)
|
171
|
-
|
172
|
-
unknown = ary - KNOWN_PYTHON_VERSIONS
|
173
|
-
unknown.empty?
|
174
|
-
end
|
175
|
-
|
176
|
-
def self.known_perl_versions?(ary)
|
177
|
-
ary = ary.map(&:to_s)
|
178
|
-
|
179
|
-
unknown = ary - KNOWN_PERL_VERSIONS
|
180
|
-
unknown.empty?
|
181
|
-
end
|
182
|
-
|
183
|
-
end
|
184
|
-
end
|
185
|
-
end
|
data/lib/travis/lint/runner.rb
DELETED
@@ -1,87 +0,0 @@
|
|
1
|
-
require "pathname"
|
2
|
-
require "safe_yaml"
|
3
|
-
|
4
|
-
require "travis/lint/linter"
|
5
|
-
|
6
|
-
module Travis
|
7
|
-
module Lint
|
8
|
-
|
9
|
-
class Runner
|
10
|
-
def initialize(argv)
|
11
|
-
if argv.empty?
|
12
|
-
if File.exists?(".travis.yml")
|
13
|
-
argv = [".travis.yml"]
|
14
|
-
else
|
15
|
-
show_help
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
@quiet = !!ENV['QUIET']
|
20
|
-
|
21
|
-
@travis_yml_file_paths = []
|
22
|
-
argv.each do |arg|
|
23
|
-
@travis_yml_file_paths << Pathname.new(arg).expand_path
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
|
28
|
-
def run
|
29
|
-
errors = false
|
30
|
-
@travis_yml_file_paths.each do |travis_yml_file_path|
|
31
|
-
check_that_travis_yml_file_exists!(travis_yml_file_path)
|
32
|
-
check_that_travis_yml_file_is_valid_yaml!(travis_yml_file_path)
|
33
|
-
|
34
|
-
if (issues = Linter.validate(self.parsed_travis_yml(travis_yml_file_path))).empty?
|
35
|
-
unless @quiet
|
36
|
-
puts "Hooray, #{travis_yml_file_path} seems to be solid!\n"
|
37
|
-
end
|
38
|
-
else
|
39
|
-
errors = true
|
40
|
-
$stderr.puts "#{travis_yml_file_path} has issues:"
|
41
|
-
issues.each do |issue|
|
42
|
-
$stderr.puts " Found an issue with the `#{issue[:key]}:` key:\n #{issue[:issue]}"
|
43
|
-
end
|
44
|
-
$stderr.puts
|
45
|
-
end
|
46
|
-
end
|
47
|
-
exit(1) if errors
|
48
|
-
exit(0)
|
49
|
-
end
|
50
|
-
|
51
|
-
protected
|
52
|
-
|
53
|
-
def check_that_travis_yml_file_exists!(travis_yml_file_path)
|
54
|
-
quit("Cannot read #{travis_yml_file_path}: file does not exist or is not readable") unless File.exists?(travis_yml_file_path) &&
|
55
|
-
File.file?(travis_yml_file_path) &&
|
56
|
-
File.readable?(travis_yml_file_path)
|
57
|
-
end
|
58
|
-
|
59
|
-
def check_that_travis_yml_file_is_valid_yaml!(travis_yml_file_path)
|
60
|
-
begin
|
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}"
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
def parsed_travis_yml(travis_yml_file_path)
|
68
|
-
YAML.load_file travis_yml_file_path, :safe => true
|
69
|
-
end
|
70
|
-
|
71
|
-
def show_help
|
72
|
-
puts <<-EOS
|
73
|
-
Usage:
|
74
|
-
|
75
|
-
travis-lint [path to your .travis.yml]
|
76
|
-
EOS
|
77
|
-
|
78
|
-
exit(1)
|
79
|
-
end
|
80
|
-
|
81
|
-
def quit(message, status = 1)
|
82
|
-
$stderr.puts message
|
83
|
-
exit(status)
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
module Travis
|
2
|
-
module Lint
|
3
|
-
module DSL
|
4
|
-
class Validator < Struct.new(:language, :key, :message, :validator)
|
5
|
-
def call(hash)
|
6
|
-
if self.validator.call(hash)
|
7
|
-
[false, { :key => self.key, :issue => self.message }]
|
8
|
-
else
|
9
|
-
[true, {}]
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
data/lib/travis/lint/version.rb
DELETED
@@ -1,17 +0,0 @@
|
|
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
|
data/spec/files/no_rvm_key.yml
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
language: ruby
|
data/spec/spec_helper.rb
DELETED
@@ -1,100 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
require "stringio"
|
3
|
-
|
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
|
31
|
-
end
|
32
|
-
|
33
|
-
describe "A .travis.yml" do
|
34
|
-
context "with issues" do
|
35
|
-
it "run should exit with non-zero exit status" do
|
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
|
55
|
-
|
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
|
84
|
-
end
|
85
|
-
|
86
|
-
out.chomp.should == ''
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
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
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|
data/spec/travis_lint_spec.rb
DELETED
@@ -1,275 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe "A .travis.yml" do
|
4
|
-
let(:language_key_is_mandatory) do
|
5
|
-
{ :key => :language, :issue => "The \"language\" key is mandatory" }
|
6
|
-
end
|
7
|
-
|
8
|
-
let(:rvm_key_is_recommended) do
|
9
|
-
{ :key => :rvm, :issue => "Specify Ruby versions/implementations you want to test against using the \"rvm\" key" }
|
10
|
-
end
|
11
|
-
|
12
|
-
let(:prefer_jruby18mode_over_jruby) do
|
13
|
-
{ :key => :rvm, :issue => "Prefer jruby-18mode RVM alias to jruby" }
|
14
|
-
end
|
15
|
-
|
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
|
-
end
|
19
|
-
|
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
|
-
end
|
23
|
-
|
24
|
-
let(:rbx200pre_is_no_longer_provided) do
|
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
|
-
end
|
27
|
-
|
28
|
-
let(:otp_release_key_is_required) do
|
29
|
-
{ :key => :otp_release, :issue => "Specify OTP releases you want to test against using the \"otp_release\" key" }
|
30
|
-
end
|
31
|
-
|
32
|
-
let(:docs) { "Travis CI documentation at http://bit.ly/travis-ci-environment" }
|
33
|
-
|
34
|
-
def content_of_sample_file(name)
|
35
|
-
path = Pathname.new(File.join("spec", "files", name)).expand_path
|
36
|
-
|
37
|
-
YAML.load_file path.to_s, :safe => true
|
38
|
-
end
|
39
|
-
|
40
|
-
context "that is blank" do
|
41
|
-
it "is valid" do
|
42
|
-
Travis::Lint::Linter.validate({}).should_not include(language_key_is_mandatory)
|
43
|
-
|
44
|
-
Travis::Lint::Linter.valid?(content_of_sample_file("no_language_key.yml")).should be_true
|
45
|
-
end
|
46
|
-
end
|
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
|
-
|
54
|
-
context "using String keys" do
|
55
|
-
it "is validates as with Symbol keys" do
|
56
|
-
Travis::Lint::Linter.validate({ "language" => "ruby" }).should include(rvm_key_is_recommended)
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
context "that has language set to Ruby" do
|
61
|
-
context "but has no \"rvm\" key" do
|
62
|
-
it "is invalid" do
|
63
|
-
Travis::Lint::Linter.validate({ :language => "ruby" }).should include(rvm_key_is_recommended)
|
64
|
-
Travis::Lint::Linter.valid?(content_of_sample_file("no_rvm_key.yml")).should be_false
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
context "and uses jruby instead of jruby-18mode" do
|
69
|
-
let(:travis_yml) do
|
70
|
-
{ :language => "ruby", :rvm => ["jruby"] }
|
71
|
-
end
|
72
|
-
|
73
|
-
it "is invalid" do
|
74
|
-
Travis::Lint::Linter.validate(travis_yml).should include(prefer_jruby18mode_over_jruby)
|
75
|
-
Travis::Lint::Linter.valid?(content_of_sample_file("uses_jruby_instead_of_jruby_in_specific_mode.yml")).should be_false
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
context "and uses rbx-18mode" do
|
80
|
-
let(:travis_yml) do
|
81
|
-
{ :language => "ruby", :rvm => ["rbx-18mode", "1.9.3"] }
|
82
|
-
end
|
83
|
-
|
84
|
-
it "is invalid" do
|
85
|
-
Travis::Lint::Linter.validate(travis_yml).should include(rbx18mode_is_no_longer_provided)
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
context "and uses rbx-19mode" do
|
90
|
-
let(:travis_yml) do
|
91
|
-
{ :language => "ruby", :rvm => ["rbx-19mode", "1.9.3"] }
|
92
|
-
end
|
93
|
-
|
94
|
-
it "is invalid" do
|
95
|
-
Travis::Lint::Linter.validate(travis_yml).should include(rbx19mode_is_no_longer_provided)
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
context "and uses rbx-2.0.0pre" do
|
100
|
-
let(:travis_yml) do
|
101
|
-
{ :language => "ruby", :rvm => ["rbx-2.0.0pre", "1.9.3"] }
|
102
|
-
end
|
103
|
-
|
104
|
-
it "is invalid" do
|
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
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
|
-
context "and uses an unsupported Ruby version" do
|
111
|
-
let(:unsupported_rubies) do
|
112
|
-
{ :key => :rvm, :issue => "Detected unsupported Ruby versions. For an up-to-date list of supported Rubies, see #{docs}" }
|
113
|
-
end
|
114
|
-
|
115
|
-
let(:travis_yml) do
|
116
|
-
{ :language => "ruby", :rvm => ["neoruby", "goruby", "bonanzaruby"] }
|
117
|
-
end
|
118
|
-
|
119
|
-
it "is invalid" do
|
120
|
-
Travis::Lint::Linter.validate(travis_yml).should include(unsupported_rubies)
|
121
|
-
Travis::Lint::Linter.valid?(content_of_sample_file("uses_unsupported_rubies.yml")).should be_false
|
122
|
-
end
|
123
|
-
end
|
124
|
-
|
125
|
-
context "that specifies Ruby as the language but tries to set node_js version" do
|
126
|
-
let(:travis_yml) do
|
127
|
-
{ :language => "ruby", :rvm => ["1.9.3"], :node_js => ["0.6"] }
|
128
|
-
end
|
129
|
-
|
130
|
-
it "is invalid" do
|
131
|
-
Travis::Lint::Linter.validate(travis_yml).should include({ :key => :language, :issue => "Language is set to Ruby but node_js key is present. Ruby builder will ignore node_js key." })
|
132
|
-
end
|
133
|
-
end
|
134
|
-
end
|
135
|
-
|
136
|
-
context "that has language set to node_js" do
|
137
|
-
context "and uses an unsupported Node.js version" do
|
138
|
-
let(:unsupported_nodejs) do
|
139
|
-
{ :key => :node_js, :issue => "Detected unsupported Node.js versions. For an up-to-date list of supported Node.js versions, see #{docs}" }
|
140
|
-
end
|
141
|
-
|
142
|
-
let(:travis_yml) do
|
143
|
-
{ :language => "node_js", :node_js => ["100.0", "0.5"] }
|
144
|
-
end
|
145
|
-
|
146
|
-
it "is invalid" do
|
147
|
-
Travis::Lint::Linter.validate(travis_yml).should include(unsupported_nodejs)
|
148
|
-
Travis::Lint::Linter.valid?(content_of_sample_file("uses_unsupported_nodejs.yml")).should be_false
|
149
|
-
end
|
150
|
-
end
|
151
|
-
end
|
152
|
-
|
153
|
-
context "that has language set to PHP" do
|
154
|
-
context "and uses an unsupported PHP version" do
|
155
|
-
let(:unsupported_php) do
|
156
|
-
{ :key => :php, :issue => "Detected unsupported PHP versions. For an up-to-date list of supported PHP versions, see #{docs}" }
|
157
|
-
end
|
158
|
-
|
159
|
-
let(:travis_yml) do
|
160
|
-
{ :language => "php", :php => ["100.0", "0.5"] }
|
161
|
-
end
|
162
|
-
|
163
|
-
it "is invalid" do
|
164
|
-
Travis::Lint::Linter.validate(travis_yml).should include(unsupported_php)
|
165
|
-
Travis::Lint::Linter.valid?(content_of_sample_file("uses_unsupported_php.yml")).should be_false
|
166
|
-
end
|
167
|
-
end
|
168
|
-
end
|
169
|
-
|
170
|
-
context "that has language set to Python" do
|
171
|
-
context "and uses an unsupported Python version" do
|
172
|
-
let(:unsupported_python) do
|
173
|
-
{ :key => :python, :issue => "Detected unsupported Python versions. For an up-to-date list of supported Python versions, see #{docs}" }
|
174
|
-
end
|
175
|
-
|
176
|
-
let(:travis_yml) do
|
177
|
-
{ :language => "python", :python => ["stackless-py", "2.4", "2.3"] }
|
178
|
-
end
|
179
|
-
|
180
|
-
it "is invalid" do
|
181
|
-
Travis::Lint::Linter.validate(travis_yml).should include(unsupported_python)
|
182
|
-
Travis::Lint::Linter.valid?(content_of_sample_file("uses_unsupported_python.yml")).should be_false
|
183
|
-
end
|
184
|
-
end
|
185
|
-
end
|
186
|
-
|
187
|
-
context "that has language set to Perl" do
|
188
|
-
context "and uses an unsupported Perl version" do
|
189
|
-
let(:unsupported_perl) do
|
190
|
-
{ :key => :perl, :issue => "Detected unsupported Perl versions. For an up-to-date list of supported Perl versions, see #{docs}" }
|
191
|
-
end
|
192
|
-
|
193
|
-
let(:travis_yml) do
|
194
|
-
{ :language => "perl", :perl => ["5.6", "5.8"] }
|
195
|
-
end
|
196
|
-
|
197
|
-
it "is invalid" do
|
198
|
-
Travis::Lint::Linter.validate(travis_yml).should include(unsupported_perl)
|
199
|
-
Travis::Lint::Linter.valid?(content_of_sample_file("uses_unsupported_perl.yml")).should be_false
|
200
|
-
end
|
201
|
-
end
|
202
|
-
end
|
203
|
-
|
204
|
-
context "that has language set to erlang" do
|
205
|
-
context "but has no \"otp_release\" key" do
|
206
|
-
it "is invalid" do
|
207
|
-
Travis::Lint::Linter.validate({ :language => "erlang" }).should include(otp_release_key_is_required)
|
208
|
-
Travis::Lint::Linter.valid?({ :language => "erlang" }).should be_false
|
209
|
-
end
|
210
|
-
end
|
211
|
-
end
|
212
|
-
|
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
|
-
|
227
|
-
let(:build_matrix_is_not_list_of_hashes) {
|
228
|
-
{:key => :matrix, :issue => "Allowed matrix failures must contain a list of hashes."}
|
229
|
-
}
|
230
|
-
context "with allow_failures" do
|
231
|
-
let(:invalid_matrix) {
|
232
|
-
{:matrix => {:allow_failures => ["ruby-head"]}}
|
233
|
-
}
|
234
|
-
|
235
|
-
let(:valid_matrix) {
|
236
|
-
{:matrix => {:allow_failures => [{"rvm" => "ruby-head"}]}}
|
237
|
-
}
|
238
|
-
|
239
|
-
it "is invalid when the allowed failures are not a list of hashes" do
|
240
|
-
Travis::Lint::Linter.validate(invalid_matrix).should include(build_matrix_is_not_list_of_hashes)
|
241
|
-
Travis::Lint::Linter.valid?(invalid_matrix).should == false
|
242
|
-
end
|
243
|
-
|
244
|
-
it "is valid when allowed failures are a list of hashes" do
|
245
|
-
Travis::Lint::Linter.valid?(valid_matrix).should == true
|
246
|
-
end
|
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
|
274
|
-
end
|
275
|
-
end
|
data/travis-lint.gemspec
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
$:.push File.expand_path("../lib", __FILE__)
|
3
|
-
require "travis/lint/version"
|
4
|
-
|
5
|
-
Gem::Specification.new do |s|
|
6
|
-
s.name = "travis-lint"
|
7
|
-
s.version = Travis::Lint::Version.to_s
|
8
|
-
s.platform = Gem::Platform::RUBY
|
9
|
-
s.authors = ["Michael S. Klishin", "Travis CI Development Team"]
|
10
|
-
s.email = ["michaelklishin@me.com", "michael@novemberain.com"]
|
11
|
-
s.homepage = "http://github.com/travis-ci"
|
12
|
-
s.summary = %q{Checks your .travis.yml for possible issues, deprecations and so on}
|
13
|
-
s.description = %q{travis-lint is a tool that check your .travis.yml for possible issues, deprecations and so on. Recommended for all travis-ci.org users.}
|
14
|
-
s.files = `git ls-files`.split("\n")
|
15
|
-
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
16
|
-
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
17
|
-
s.require_paths = ["lib"]
|
18
|
-
|
19
|
-
s.add_dependency "hashr", "~> 0.0.22"
|
20
|
-
s.add_dependency "safe_yaml", '~> 0.9.0'
|
21
|
-
|
22
|
-
s.add_development_dependency "rspec", "~> 2.8"
|
23
|
-
end
|