travis-yaml 0.1.0 → 0.2.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.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +3 -8
  3. data/Gemfile +3 -6
  4. data/Gemfile.lock +20 -50
  5. data/README.md +97 -2
  6. data/SPEC.md +116 -33
  7. data/lib/travis/yaml.rb +6 -3
  8. data/lib/travis/yaml/matrix.rb +12 -17
  9. data/lib/travis/yaml/nodes.rb +4 -0
  10. data/lib/travis/yaml/nodes/addons.rb +44 -0
  11. data/lib/travis/yaml/nodes/android.rb +7 -0
  12. data/lib/travis/yaml/nodes/cache.rb +5 -3
  13. data/lib/travis/yaml/nodes/deploy_conditions.rb +2 -1
  14. data/lib/travis/yaml/nodes/deploy_entry.rb +46 -0
  15. data/lib/travis/yaml/nodes/dist.rb +6 -0
  16. data/lib/travis/yaml/nodes/env.rb +1 -1
  17. data/lib/travis/yaml/nodes/group.rb +6 -0
  18. data/lib/travis/yaml/nodes/language.rb +3 -2
  19. data/lib/travis/yaml/nodes/language_specific.rb +2 -2
  20. data/lib/travis/yaml/nodes/mapping.rb +39 -10
  21. data/lib/travis/yaml/nodes/node.rb +58 -1
  22. data/lib/travis/yaml/nodes/notifications.rb +10 -6
  23. data/lib/travis/yaml/nodes/open_mapping.rb +1 -1
  24. data/lib/travis/yaml/nodes/os.rb +1 -1
  25. data/lib/travis/yaml/nodes/os_entry.rb +7 -5
  26. data/lib/travis/yaml/nodes/root.rb +28 -4
  27. data/lib/travis/yaml/nodes/scalar.rb +16 -1
  28. data/lib/travis/yaml/nodes/sequence.rb +38 -0
  29. data/lib/travis/yaml/nodes/version.rb +13 -0
  30. data/lib/travis/yaml/nodes/version_list.rb +4 -0
  31. data/lib/travis/yaml/parser/psych.rb +11 -5
  32. data/lib/travis/yaml/secure_string.rb +35 -2
  33. data/lib/travis/yaml/serializer.rb +17 -0
  34. data/lib/travis/yaml/serializer/generic.rb +114 -0
  35. data/lib/travis/yaml/serializer/json.rb +72 -0
  36. data/lib/travis/yaml/serializer/legacy.rb +32 -0
  37. data/lib/travis/yaml/serializer/ruby.rb +13 -0
  38. data/lib/travis/yaml/serializer/yaml.rb +41 -0
  39. data/lib/travis/yaml/version.rb +1 -1
  40. data/play/spec.rb +24 -17
  41. data/spec/matrix_spec.rb +57 -0
  42. data/spec/nodes/addons_spec.rb +63 -0
  43. data/spec/nodes/cache_spec.rb +4 -4
  44. data/spec/nodes/deploy_spec.rb +12 -0
  45. data/spec/nodes/dist_spec.rb +11 -0
  46. data/spec/nodes/env_spec.rb +48 -0
  47. data/spec/nodes/git_spec.rb +1 -1
  48. data/spec/nodes/group_spec.rb +11 -0
  49. data/spec/nodes/node_js_spec.rb +14 -0
  50. data/spec/nodes/notifications_spec.rb +7 -0
  51. data/spec/nodes/os_spec.rb +13 -0
  52. data/spec/nodes/root_spec.rb +36 -0
  53. data/spec/nodes/secure_spec.rb +145 -0
  54. data/spec/parser/psych_spec.rb +6 -0
  55. data/spec/parser/ruby_spec.rb +1 -1
  56. data/spec/serializer/json_spec.rb +30 -0
  57. data/spec/serializer/legacy_spec.rb +47 -0
  58. data/spec/serializer/ruby_spec.rb +21 -0
  59. data/spec/serializer/yaml_spec.rb +47 -0
  60. data/spec/support/coverage.rb +9 -9
  61. data/spec/yaml_spec.rb +23 -0
  62. data/travis-yaml.gemspec +2 -3
  63. metadata +42 -22
  64. data/config.ru +0 -2
  65. data/play/weblint.rb +0 -296
@@ -25,4 +25,17 @@ describe Travis::Yaml::Nodes::OS do
25
25
  expect(config.os.warnings).to include('dropping "linux", does not support "objective-c"')
26
26
  expect(config.os.warnings).to include('no suitable operating system given for "objective-c", using "osx"')
27
27
  end
28
+
29
+ specify 'complains about jdk on osx' do
30
+ config = Travis::Yaml.parse(os: :osx, language: :java, jdk: :default)
31
+ expect(config.os) .to be == ['osx']
32
+ expect(config.language) .to be == 'java'
33
+ expect(config.jdk) .to be_nil
34
+ expect(config.warnings).to include('dropping "jdk" section: currently not supported on "osx"')
35
+ end
36
+
37
+ specify 'does not complain about the default os' do
38
+ config = Travis::Yaml.parse(language: 'objective-c')
39
+ expect(config.warnings).to be_empty
40
+ end
28
41
  end
@@ -0,0 +1,36 @@
1
+ describe Travis::Yaml::Nodes::Root do
2
+ let :warnings do
3
+ subject.warnings
4
+ end
5
+
6
+ describe "from YAML" do
7
+ context "sudo" do
8
+ subject :yaml do
9
+ Travis::Yaml.parse <<-YAML.gsub(/^ {10}/, '')
10
+ language: ruby
11
+ sudo: false
12
+ YAML
13
+ end
14
+
15
+ specify "gives no warnings" do
16
+ expect(warnings).to be_empty
17
+ end
18
+ end
19
+
20
+ context "double entry" do
21
+ subject :yaml do
22
+ Travis::Yaml.parse <<-YAML.gsub(/^ {10}/, '')
23
+ addons:
24
+ postgresql: "9.3"
25
+ addons:
26
+ code_climate:
27
+ api_token: "foobar"
28
+ YAML
29
+ end
30
+
31
+ specify "warns about double entries" do
32
+ expect(warnings).to include('has multiple "addons" entries, keeping last entry')
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,145 @@
1
+ describe Travis::Yaml::SecureString do
2
+ context 'encrypted value with secure mapping' do
3
+ subject(:config) { Travis::Yaml.load 'env: { secure: "foo" }' }
4
+ it { should be_encrypted }
5
+ it { should_not be_decrypted }
6
+
7
+ context 'its value' do
8
+ subject(:value) { config.env.matrix.first.value }
9
+ it { should be_a(Travis::Yaml::SecureString) }
10
+ it { should be_encrypted }
11
+ it { should_not be_decrypted }
12
+ end
13
+
14
+ context 'after decryption' do
15
+ before { config.decrypt { |v| v.upcase } }
16
+ it { should be_encrypted }
17
+ it { should be_decrypted }
18
+
19
+ context 'its value' do
20
+ subject(:value) { config.env.matrix.first.value }
21
+ it { should be_encrypted }
22
+ it { should be_decrypted }
23
+
24
+ specify 'correct encrypted and decrypted value' do
25
+ expect(value.encrypted_string).to be == 'foo'
26
+ expect(value.decrypted_string).to be == 'FOO'
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+ context 'encrypted value with secure tag' do
33
+ subject(:config) { Travis::Yaml.load 'env: !secure "foo"' }
34
+ it { should be_encrypted }
35
+ it { should_not be_decrypted }
36
+
37
+ context 'its value' do
38
+ subject(:value) { config.env.matrix.first.value }
39
+ it { should be_a(Travis::Yaml::SecureString) }
40
+ it { should be_encrypted }
41
+ it { should_not be_decrypted }
42
+ end
43
+ end
44
+
45
+ context 'encrypted value with encrypted tag' do
46
+ subject(:config) { Travis::Yaml.load 'env: !encrypted "foo"' }
47
+ it { should be_encrypted }
48
+ it { should_not be_decrypted }
49
+
50
+ context 'its value' do
51
+ subject(:value) { config.env.matrix.first.value }
52
+ it { should be_a(Travis::Yaml::SecureString) }
53
+ it { should be_encrypted }
54
+ it { should_not be_decrypted }
55
+ end
56
+ end
57
+
58
+ context 'encrypted value with decrypted tag' do
59
+ subject(:config) { Travis::Yaml.load 'env: !decrypted "foo"' }
60
+ it { should_not be_encrypted }
61
+ it { should be_decrypted }
62
+
63
+ context 'its value' do
64
+ subject(:value) { config.env.matrix.first.value }
65
+ it { should be_a(Travis::Yaml::SecureString) }
66
+ it { should_not be_encrypted }
67
+ it { should be_decrypted }
68
+ end
69
+
70
+ context 'after encryption' do
71
+ before { config.encrypt { |v| v.upcase } }
72
+ it { should be_encrypted }
73
+ it { should be_decrypted }
74
+
75
+ context 'its value' do
76
+ subject(:value) { config.env.matrix.first.value }
77
+ it { should be_encrypted }
78
+ it { should be_decrypted }
79
+
80
+ specify 'correct encrypted and decrypted value' do
81
+ expect(value.encrypted_string).to be == 'FOO'
82
+ expect(value.decrypted_string).to be == 'foo'
83
+ end
84
+ end
85
+ end
86
+ end
87
+
88
+ context 'encrypted value in secure mapping with decrypted tag' do
89
+ subject(:config) { Travis::Yaml.load 'env: { secure: !decrypted "foo" }' }
90
+ it { should_not be_encrypted }
91
+ it { should be_decrypted }
92
+
93
+ context 'its value' do
94
+ subject(:value) { config.env.matrix.first.value }
95
+ it { should be_a(Travis::Yaml::SecureString) }
96
+ it { should_not be_encrypted }
97
+ it { should be_decrypted }
98
+ end
99
+ end
100
+
101
+ specify 'in an unexpected place' do
102
+ config = Travis::Yaml.load('language: { secure: ruby }')
103
+ expect(config.warnings).to include('dropping "language" section: "secure" not supported, dropping "ruby"')
104
+ end
105
+
106
+ specify 'secure cannot be a key in an open mapping' do
107
+ config = Travis::Yaml.load <<-YAML.gsub(/^ /, "")
108
+ language: python
109
+ python:
110
+ - 2.7
111
+
112
+ deploy:
113
+ provider: heroku
114
+ strategy: git
115
+ api_key:
116
+ secure:
117
+ secure: |-
118
+ SECRET HERE
119
+ YAML
120
+
121
+ deploy = config.deploy.first
122
+ expect(deploy[:secure]).to be_nil
123
+ expect(deploy.warnings).to include('unexpected key "secure", dropping')
124
+ end
125
+
126
+ specify 'secure cannot be nested' do
127
+ config = Travis::Yaml.load <<-YAML.gsub(/^ /, "")
128
+ language: python
129
+ python:
130
+ - 2.7
131
+
132
+ deploy:
133
+ provider: heroku
134
+ strategy: git
135
+ api_key:
136
+ secure:
137
+ secure: |-
138
+ SECRET HERE
139
+ YAML
140
+
141
+ deploy = config.deploy.first
142
+ expect(deploy[:api_key]).to be_nil
143
+ expect(deploy.warnings).to include('dropping "api_key" section: secret value needs to be a string')
144
+ end
145
+ end
@@ -0,0 +1,6 @@
1
+ describe Travis::Yaml::Parser::Psych do
2
+ example "does not rely on visit_unexpected raising an exception" do
3
+ expect { Travis::Yaml.load("cache: [bundler, { directories: [test/feature_files] }]") }.
4
+ not_to raise_error
5
+ end
6
+ end
@@ -1,5 +1,5 @@
1
1
  describe Travis::Yaml::Parser::Ruby do
2
- subject { described_class }
2
+ subject { Travis::Yaml::Parser::Ruby }
3
3
  let(:secure_string) { Travis::Yaml::SecureString.new("") }
4
4
  let(:input) {{ ruby: ['2.0.0', :jruby, 10, 4.2, Time.now, false, nil, secure_string, Object.new] }}
5
5
 
@@ -0,0 +1,30 @@
1
+ describe Travis::Yaml::Serializer::Json do
2
+ subject(:config) { Travis::Yaml.parse('env: [{ secure: "foo" }, "bar"]') }
3
+
4
+ example "serializes json" do
5
+ expect(config.serialize(:json)).to be == '{"env":{"matrix":[{"secure":"foo"},"bar"]},"language":"ruby","os":["linux"]}'
6
+ end
7
+
8
+ example "does work properly with symbol keys option" do
9
+ expect(config.serialize(:json, symbol_keys: true)).to be == '{"env":{"matrix":[{"secure":"foo"},"bar"]},"language":"ruby","os":["linux"]}'
10
+ end
11
+
12
+ example "serializes pretty json" do
13
+ expect(config.serialize(:json, pretty: true)).to be ==
14
+ "{\n \"env\": {\n \"matrix\": [\n {\"secure\": \"foo\"},\n \"bar\"\n ]\n },\n \"language\": \"ruby\",\n \"os\": [ \"linux\" ]\n}"
15
+ end
16
+
17
+ example "complains about decrypted values missing" do
18
+ expect { config.serialize(:json, secure: :decrypted) }.to raise_error(ArgumentError, 'secure option is set decrypted, but a secure value is not decrypted')
19
+ end
20
+
21
+ example "serializes decrypted values" do
22
+ config.decrypt { |*| "x" }
23
+ expect(config.serialize(:json, secure: :encrypted)).to be == '{"env":{"matrix":[{"secure":"foo"},"bar"]},"language":"ruby","os":["linux"]}'
24
+ expect(config.serialize(:json, secure: :decrypted)).to be == '{"env":{"matrix":["x","bar"]},"language":"ruby","os":["linux"]}'
25
+ end
26
+
27
+ example "is exposed via to_json" do
28
+ expect(config.serialize(:json)).to be == config.to_json
29
+ end
30
+ end
@@ -0,0 +1,47 @@
1
+ describe Travis::Yaml::Serializer::Legacy do
2
+ subject(:config) { Travis::Yaml.parse('env: [{ secure: "foo" }, "bar"]') }
3
+
4
+ example "serializes to legacy ruby" do
5
+ expect(config.serialize(:legacy)).to be == {
6
+ "env"=>{"matrix"=>[{"secure"=>"foo"}, "bar"]},
7
+ "language"=>"ruby", "os"=>["linux"],
8
+ ".result"=>"configured",
9
+ ".result_warnings"=>[[[], "missing key \"language\", defaulting to \"ruby\""]]
10
+ }
11
+ end
12
+
13
+ example "serializes to legacy ruby" do
14
+ expect(config.serialize(:legacy, symbol_keys: true)).to be == {
15
+ :env=>{:matrix=>[{:secure=>"foo"}, "bar"]},
16
+ :language=>"ruby", :os=>["linux"],
17
+ :".result"=>"configured",
18
+ :".result_warnings"=>[[[], "missing key \"language\", defaulting to \"ruby\""]]
19
+ }
20
+ end
21
+
22
+ example "complains about decrypted values missing" do
23
+ expect { config.serialize(:legacy, secure: :decrypted) }.to raise_error(ArgumentError, 'secure option is set decrypted, but a secure value is not decrypted')
24
+ end
25
+
26
+ example "serializes decrypted values" do
27
+ config.decrypt { |*| "x" }
28
+
29
+ expect(config.serialize(:legacy, secure: :encrypted)).to be == {
30
+ "env"=>{"matrix"=>[{"secure"=>"foo"}, "bar"]},
31
+ "language"=>"ruby", "os"=>["linux"],
32
+ ".result"=>"configured",
33
+ ".result_warnings"=>[[[], "missing key \"language\", defaulting to \"ruby\""]]
34
+ }
35
+
36
+ expect(config.serialize(:legacy, secure: :decrypted)).to be == {
37
+ "env"=>{"matrix"=>["x", "bar"]},
38
+ "language"=>"ruby", "os"=>["linux"],
39
+ ".result"=>"configured",
40
+ ".result_warnings"=>[[[], "missing key \"language\", defaulting to \"ruby\""]]
41
+ }
42
+ end
43
+
44
+ example "is exposed via to_legacy_ruby" do
45
+ expect(config.serialize(:legacy)).to be == config.to_legacy_ruby
46
+ end
47
+ end
@@ -0,0 +1,21 @@
1
+ describe Travis::Yaml::Serializer::Ruby do
2
+ subject(:config) { Travis::Yaml.parse('env: [{ secure: "foo" }, "bar"]') }
3
+
4
+ example "serializes to ruby objects" do
5
+ expect(config.serialize(:ruby)).to be == {
6
+ "env"=>{"matrix"=>[Travis::Yaml::SecureString.new("foo"), "bar"]},
7
+ "language"=>"ruby", "os"=>["linux"]
8
+ }
9
+ end
10
+
11
+ example "serializes symbol keys" do
12
+ expect(config.serialize(:ruby, symbol_keys: true)).to be == {
13
+ env: { matrix: [Travis::Yaml::SecureString.new("foo"), "bar"]},
14
+ language: "ruby", os: ["linux"]
15
+ }
16
+ end
17
+
18
+ example "is exposed via to_ruby" do
19
+ expect(config.serialize(:ruby)).to be == config.to_ruby
20
+ end
21
+ end
@@ -0,0 +1,47 @@
1
+ describe Travis::Yaml::Serializer::Yaml do
2
+ subject(:config) { Travis::Yaml.parse('env: [{ secure: "foo" }, "bar"]') }
3
+
4
+ example "serializes json" do
5
+ expect(config.serialize(:yaml).gsub("'", "")).to be ==
6
+ "---\nenv:\n matrix:\n - !encrypted foo\n - bar\nlanguage: ruby\nos:\n- linux\n"
7
+ end
8
+
9
+ example "complains about decrypted values missing" do
10
+ expect { config.serialize(:yaml, secure: :decrypted) }.to raise_error(ArgumentError,
11
+ 'secure option is set decrypted, but a secure value is not decrypted')
12
+ end
13
+
14
+ example "serializes decrypted values" do
15
+ config.decrypt { |*| "x" }
16
+
17
+ expect(config.serialize(:yaml, secure: :encrypted).gsub("'", "")).to be ==
18
+ "---\nenv:\n matrix:\n - !encrypted foo\n - bar\nlanguage: ruby\nos:\n- linux\n"
19
+
20
+ expect(config.serialize(:yaml, secure: :decrypted).gsub("'", "")).to be ==
21
+ "---\nenv:\n matrix:\n - !decrypted x\n - bar\nlanguage: ruby\nos:\n- linux\n"
22
+ end
23
+
24
+ example "avoid tags" do
25
+ config.decrypt { |*| "x" }
26
+
27
+ expect(config.serialize(:yaml, secure: :encrypted, avoid_tags: true).gsub("'", "")).to be ==
28
+ "---\nenv:\n matrix:\n - secure: foo\n - bar\nlanguage: ruby\nos:\n- linux\n"
29
+
30
+ expect(config.serialize(:yaml, secure: :decrypted, avoid_tags: true).gsub("'", "")).to be ==
31
+ "---\nenv:\n matrix:\n - x\n - bar\nlanguage: ruby\nos:\n- linux\n"
32
+ end
33
+
34
+ example "indentation" do
35
+ expect(config.serialize(:yaml, indentation: 3).gsub("'", "")).to be ==
36
+ "---\nenv:\n matrix:\n - !encrypted foo\n - bar\nlanguage: ruby\nos:\n- linux\n"
37
+ end
38
+
39
+ example "symbol keys" do
40
+ expect(config.serialize(:yaml, symbol_keys: true).gsub("'", "")).to be ==
41
+ "---\n:env:\n :matrix:\n - !encrypted foo\n - bar\n:language: ruby\n:os:\n- linux\n"
42
+ end
43
+
44
+ example "is exposed via to_yaml" do
45
+ expect(config.serialize(:yaml)).to be == config.to_yaml
46
+ end
47
+ end
@@ -1,11 +1,11 @@
1
- require 'simplecov'
1
+ unless defined? RUBY_ENGINE and RUBY_ENGINE == 'jruby'
2
+ require 'simplecov'
3
+ SimpleCov.formatter = SimpleCov::Formatter::HTMLFormatter
2
4
 
3
- SimpleCov.formatter = SimpleCov::Formatter::HTMLFormatter
4
-
5
- SimpleCov.start do
6
- project_name 'travis-yaml'
7
- coverage_dir '.coverage'
8
-
9
- add_filter "/spec/"
10
- add_group 'Library', 'lib'
5
+ SimpleCov.start do
6
+ project_name 'travis-yaml'
7
+ coverage_dir '.coverage'
8
+ add_filter '/spec/'
9
+ add_group 'Library', 'lib'
10
+ end
11
11
  end
@@ -5,6 +5,13 @@ describe Travis::Yaml do
5
5
  Travis::Yaml.parse! ""
6
6
  end
7
7
 
8
+ specify :parse do
9
+ config = Travis::Yaml.parse('env: { secure: foo }') do |yaml|
10
+ yaml.decrypt { |value| value }
11
+ end
12
+ expect(config).to be_decrypted
13
+ end
14
+
8
15
  describe :new do
9
16
  specify 'with block' do
10
17
  config = Travis::Yaml.new { |c| c.language = 'php' }
@@ -23,4 +30,20 @@ describe Travis::Yaml do
23
30
  config = Travis::Yaml.parse(rvm: ['jruby', '2.0.0'], language: :ruby)
24
31
  expect(config.inspect).to be == '#<Travis::Yaml:{"ruby"=>["jruby", "2.0.0"], "language"=>"ruby", "os"=>"linux"}>'
25
32
  end
33
+
34
+ context :with_value do
35
+ subject(:config) { Travis::Yaml.parse(rvm: ['jruby', '2.0.0'], language: :ruby) }
36
+
37
+ example "with_value for language" do
38
+ changed = config.with_value(language: :php)
39
+ expect(changed.language) .to be == "php"
40
+ expect(config.language) .to be == "ruby"
41
+ end
42
+
43
+ example "with_value for rvm" do
44
+ changed = config.with_value(rvm: :jruby)
45
+ expect(changed.rvm) .to be == "jruby"
46
+ expect(config.rvm) .to be == ['jruby', '2.0.0']
47
+ end
48
+ end
26
49
  end
@@ -8,7 +8,7 @@ Gem::Specification.new do |s|
8
8
  s.email = "contact@travis-ci.com"
9
9
  s.homepage = "https://github.com/travis-ci/travis-yaml"
10
10
  s.summary = %q{parses your .travis.yml}
11
- s.description = %q{parses and validates your .travis.yml, fast ans secure}
11
+ s.description = %q{parses and validates your .travis.yml, fast and secure}
12
12
  s.license = 'MIT'
13
13
  s.files = `git ls-files`.split("\n")
14
14
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -16,8 +16,7 @@ Gem::Specification.new do |s|
16
16
  s.require_path = 'lib'
17
17
  s.required_ruby_version = '>= 1.9.3'
18
18
 
19
- s.add_dependency 'psych', '~> 2.0'
20
- s.add_development_dependency 'rspec', '~> 3.0.0.beta'
19
+ s.add_development_dependency 'rspec', '~> 3.0'
21
20
  s.add_development_dependency 'rake'
22
21
  s.add_development_dependency 'simplecov'
23
22
  s.add_development_dependency 'safe_yaml', '~> 1.0.1'
metadata CHANGED
@@ -1,43 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: travis-yaml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Travis CI GmbH
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-21 00:00:00.000000000 Z
11
+ date: 2014-12-01 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: psych
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '2.0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '2.0'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: rspec
29
15
  requirement: !ruby/object:Gem::Requirement
30
16
  requirements:
31
17
  - - "~>"
32
18
  - !ruby/object:Gem::Version
33
- version: 3.0.0.beta
19
+ version: '3.0'
34
20
  type: :development
35
21
  prerelease: false
36
22
  version_requirements: !ruby/object:Gem::Requirement
37
23
  requirements:
38
24
  - - "~>"
39
25
  - !ruby/object:Gem::Version
40
- version: 3.0.0.beta
26
+ version: '3.0'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: rake
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -80,7 +66,7 @@ dependencies:
80
66
  - - "~>"
81
67
  - !ruby/object:Gem::Version
82
68
  version: 1.0.1
83
- description: parses and validates your .travis.yml, fast ans secure
69
+ description: parses and validates your .travis.yml, fast and secure
84
70
  email: contact@travis-ci.com
85
71
  executables: []
86
72
  extensions: []
@@ -96,10 +82,11 @@ files:
96
82
  - Rakefile
97
83
  - SPEC.md
98
84
  - bench/parser_bench.rb
99
- - config.ru
100
85
  - lib/travis/yaml.rb
101
86
  - lib/travis/yaml/matrix.rb
102
87
  - lib/travis/yaml/nodes.rb
88
+ - lib/travis/yaml/nodes/addons.rb
89
+ - lib/travis/yaml/nodes/android.rb
103
90
  - lib/travis/yaml/nodes/branches.rb
104
91
  - lib/travis/yaml/nodes/bundler_args.rb
105
92
  - lib/travis/yaml/nodes/cache.rb
@@ -108,9 +95,11 @@ files:
108
95
  - lib/travis/yaml/nodes/deploy.rb
109
96
  - lib/travis/yaml/nodes/deploy_conditions.rb
110
97
  - lib/travis/yaml/nodes/deploy_entry.rb
98
+ - lib/travis/yaml/nodes/dist.rb
111
99
  - lib/travis/yaml/nodes/env.rb
112
100
  - lib/travis/yaml/nodes/fixed_value.rb
113
101
  - lib/travis/yaml/nodes/git.rb
102
+ - lib/travis/yaml/nodes/group.rb
114
103
  - lib/travis/yaml/nodes/jdk.rb
115
104
  - lib/travis/yaml/nodes/language.rb
116
105
  - lib/travis/yaml/nodes/language_specific.rb
@@ -134,26 +123,44 @@ files:
134
123
  - lib/travis/yaml/parser/psych.rb
135
124
  - lib/travis/yaml/parser/ruby.rb
136
125
  - lib/travis/yaml/secure_string.rb
126
+ - lib/travis/yaml/serializer.rb
127
+ - lib/travis/yaml/serializer/generic.rb
128
+ - lib/travis/yaml/serializer/json.rb
129
+ - lib/travis/yaml/serializer/legacy.rb
130
+ - lib/travis/yaml/serializer/ruby.rb
131
+ - lib/travis/yaml/serializer/yaml.rb
137
132
  - lib/travis/yaml/version.rb
138
133
  - play/lint.rb
139
134
  - play/spec.rb
140
- - play/weblint.rb
135
+ - spec/matrix_spec.rb
141
136
  - spec/nodes/.rb
137
+ - spec/nodes/addons_spec.rb
142
138
  - spec/nodes/branches_spec.rb
143
139
  - spec/nodes/bundler_args_spec.rb
144
140
  - spec/nodes/cache_spec.rb
145
141
  - spec/nodes/compiler_spec.rb
146
142
  - spec/nodes/deploy_spec.rb
143
+ - spec/nodes/dist_spec.rb
144
+ - spec/nodes/env_spec.rb
147
145
  - spec/nodes/git_spec.rb
146
+ - spec/nodes/group_spec.rb
148
147
  - spec/nodes/jdk_spec.rb
149
148
  - spec/nodes/language_spec.rb
149
+ - spec/nodes/node_js_spec.rb
150
150
  - spec/nodes/notifications_spec.rb
151
151
  - spec/nodes/os_spec.rb
152
+ - spec/nodes/root_spec.rb
152
153
  - spec/nodes/ruby_spec.rb
154
+ - spec/nodes/secure_spec.rb
153
155
  - spec/nodes/stage_spec.rb
154
156
  - spec/nodes/virtual_env_spec.rb
155
157
  - spec/parser/dummy_spec.rb
158
+ - spec/parser/psych_spec.rb
156
159
  - spec/parser/ruby_spec.rb
160
+ - spec/serializer/json_spec.rb
161
+ - spec/serializer/legacy_spec.rb
162
+ - spec/serializer/ruby_spec.rb
163
+ - spec/serializer/yaml_spec.rb
157
164
  - spec/support.rb
158
165
  - spec/support/coverage.rb
159
166
  - spec/support/environment.rb
@@ -179,27 +186,40 @@ required_rubygems_version: !ruby/object:Gem::Requirement
179
186
  version: '0'
180
187
  requirements: []
181
188
  rubyforge_project:
182
- rubygems_version: 2.0.14
189
+ rubygems_version: 2.4.4
183
190
  signing_key:
184
191
  specification_version: 4
185
192
  summary: parses your .travis.yml
186
193
  test_files:
194
+ - spec/matrix_spec.rb
187
195
  - spec/nodes/.rb
196
+ - spec/nodes/addons_spec.rb
188
197
  - spec/nodes/branches_spec.rb
189
198
  - spec/nodes/bundler_args_spec.rb
190
199
  - spec/nodes/cache_spec.rb
191
200
  - spec/nodes/compiler_spec.rb
192
201
  - spec/nodes/deploy_spec.rb
202
+ - spec/nodes/dist_spec.rb
203
+ - spec/nodes/env_spec.rb
193
204
  - spec/nodes/git_spec.rb
205
+ - spec/nodes/group_spec.rb
194
206
  - spec/nodes/jdk_spec.rb
195
207
  - spec/nodes/language_spec.rb
208
+ - spec/nodes/node_js_spec.rb
196
209
  - spec/nodes/notifications_spec.rb
197
210
  - spec/nodes/os_spec.rb
211
+ - spec/nodes/root_spec.rb
198
212
  - spec/nodes/ruby_spec.rb
213
+ - spec/nodes/secure_spec.rb
199
214
  - spec/nodes/stage_spec.rb
200
215
  - spec/nodes/virtual_env_spec.rb
201
216
  - spec/parser/dummy_spec.rb
217
+ - spec/parser/psych_spec.rb
202
218
  - spec/parser/ruby_spec.rb
219
+ - spec/serializer/json_spec.rb
220
+ - spec/serializer/legacy_spec.rb
221
+ - spec/serializer/ruby_spec.rb
222
+ - spec/serializer/yaml_spec.rb
203
223
  - spec/support.rb
204
224
  - spec/support/coverage.rb
205
225
  - spec/support/environment.rb