travis-yaml 0.1.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 (75) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +1 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +14 -0
  5. data/Gemfile +9 -0
  6. data/Gemfile.lock +73 -0
  7. data/LICENSE +22 -0
  8. data/README.md +232 -0
  9. data/Rakefile +3 -0
  10. data/SPEC.md +1018 -0
  11. data/bench/parser_bench.rb +54 -0
  12. data/config.ru +2 -0
  13. data/lib/travis/yaml.rb +43 -0
  14. data/lib/travis/yaml/matrix.rb +65 -0
  15. data/lib/travis/yaml/nodes.rb +40 -0
  16. data/lib/travis/yaml/nodes/branches.rb +12 -0
  17. data/lib/travis/yaml/nodes/bundler_args.rb +6 -0
  18. data/lib/travis/yaml/nodes/cache.rb +29 -0
  19. data/lib/travis/yaml/nodes/compiler.rb +7 -0
  20. data/lib/travis/yaml/nodes/compiler_entry.rb +9 -0
  21. data/lib/travis/yaml/nodes/deploy.rb +7 -0
  22. data/lib/travis/yaml/nodes/deploy_conditions.rb +12 -0
  23. data/lib/travis/yaml/nodes/deploy_entry.rb +10 -0
  24. data/lib/travis/yaml/nodes/env.rb +36 -0
  25. data/lib/travis/yaml/nodes/fixed_value.rb +60 -0
  26. data/lib/travis/yaml/nodes/git.rb +9 -0
  27. data/lib/travis/yaml/nodes/jdk.rb +11 -0
  28. data/lib/travis/yaml/nodes/language.rb +18 -0
  29. data/lib/travis/yaml/nodes/language_specific.rb +45 -0
  30. data/lib/travis/yaml/nodes/mapping.rb +204 -0
  31. data/lib/travis/yaml/nodes/matrix.rb +36 -0
  32. data/lib/travis/yaml/nodes/node.rb +102 -0
  33. data/lib/travis/yaml/nodes/notifications.rb +77 -0
  34. data/lib/travis/yaml/nodes/open_mapping.rb +18 -0
  35. data/lib/travis/yaml/nodes/os.rb +21 -0
  36. data/lib/travis/yaml/nodes/os_entry.rb +19 -0
  37. data/lib/travis/yaml/nodes/root.rb +44 -0
  38. data/lib/travis/yaml/nodes/ruby.rb +11 -0
  39. data/lib/travis/yaml/nodes/scalar.rb +97 -0
  40. data/lib/travis/yaml/nodes/sequence.rb +84 -0
  41. data/lib/travis/yaml/nodes/stage.rb +6 -0
  42. data/lib/travis/yaml/nodes/version.rb +6 -0
  43. data/lib/travis/yaml/nodes/version_list.rb +7 -0
  44. data/lib/travis/yaml/nodes/virtual_env.rb +7 -0
  45. data/lib/travis/yaml/parser.rb +31 -0
  46. data/lib/travis/yaml/parser/dummy.rb +13 -0
  47. data/lib/travis/yaml/parser/psych.rb +217 -0
  48. data/lib/travis/yaml/parser/ruby.rb +77 -0
  49. data/lib/travis/yaml/secure_string.rb +12 -0
  50. data/lib/travis/yaml/version.rb +5 -0
  51. data/play/lint.rb +8 -0
  52. data/play/spec.rb +183 -0
  53. data/play/weblint.rb +296 -0
  54. data/spec/nodes/.rb +0 -0
  55. data/spec/nodes/branches_spec.rb +45 -0
  56. data/spec/nodes/bundler_args_spec.rb +9 -0
  57. data/spec/nodes/cache_spec.rb +55 -0
  58. data/spec/nodes/compiler_spec.rb +14 -0
  59. data/spec/nodes/deploy_spec.rb +83 -0
  60. data/spec/nodes/git_spec.rb +55 -0
  61. data/spec/nodes/jdk_spec.rb +41 -0
  62. data/spec/nodes/language_spec.rb +79 -0
  63. data/spec/nodes/notifications_spec.rb +45 -0
  64. data/spec/nodes/os_spec.rb +28 -0
  65. data/spec/nodes/ruby_spec.rb +69 -0
  66. data/spec/nodes/stage_spec.rb +34 -0
  67. data/spec/nodes/virtual_env_spec.rb +9 -0
  68. data/spec/parser/dummy_spec.rb +7 -0
  69. data/spec/parser/ruby_spec.rb +41 -0
  70. data/spec/support.rb +3 -0
  71. data/spec/support/coverage.rb +11 -0
  72. data/spec/support/environment.rb +1 -0
  73. data/spec/yaml_spec.rb +26 -0
  74. data/travis-yaml.gemspec +24 -0
  75. metadata +207 -0
File without changes
@@ -0,0 +1,45 @@
1
+ describe Travis::Yaml::Nodes::Branches do
2
+ context 'from Ruby' do
3
+ specify 'with string' do
4
+ config = Travis::Yaml.parse(branches: 'foo')
5
+ expect(config.branches).to be == { 'only' => ['foo'] }
6
+ end
7
+
8
+ specify 'with regexp' do
9
+ config = Travis::Yaml.parse(branches: /foo/)
10
+ expect(config.branches).to be == { 'only' => [/foo/] }
11
+ end
12
+
13
+ specify 'with array' do
14
+ config = Travis::Yaml.parse(branches: [/foo/, 'bar'])
15
+ expect(config.branches).to be == { 'only' => [/foo/, 'bar'] }
16
+ end
17
+
18
+ specify 'with hash' do
19
+ config = Travis::Yaml.parse(branches: { except: /foo/ })
20
+ expect(config.branches).to be == { 'except' => [/foo/] }
21
+ end
22
+ end
23
+
24
+ context 'from YAML' do
25
+ specify 'with string' do
26
+ config = Travis::Yaml.parse('branches: foo')
27
+ expect(config.branches).to be == { 'only' => ['foo'] }
28
+ end
29
+
30
+ specify 'with regexp' do
31
+ config = Travis::Yaml.parse('branches: /foo/')
32
+ expect(config.branches).to be == { 'only' => [/foo/] }
33
+ end
34
+
35
+ specify 'with array' do
36
+ config = Travis::Yaml.parse('branches: [/foo/, bar]')
37
+ expect(config.branches).to be == { 'only' => [/foo/, 'bar'] }
38
+ end
39
+
40
+ specify 'with hash' do
41
+ config = Travis::Yaml.parse('branches: { except: /foo/ }')
42
+ expect(config.branches).to be == { 'except' => [/foo/] }
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,9 @@
1
+ describe Travis::Yaml::Nodes::BundlerArgs do
2
+ context 'from Ruby' do
3
+ specify 'can only be set for Ruby' do
4
+ expect(Travis::Yaml.parse(language: 'ruby', bundler_args: '--local').warnings).to be_empty
5
+ expect(Travis::Yaml.parse(language: 'php', bundler_args: '--local').warnings).to \
6
+ include('specified "bundler_args", but setting is not relevant for "php"')
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,55 @@
1
+ describe Travis::Yaml::Nodes::Cache do
2
+ context 'from Ruby' do
3
+ specify 'with true' do
4
+ config = Travis::Yaml.parse(cache: true)
5
+ expect(config.cache).to be == { 'apt' => true, 'bundler' => true }
6
+ end
7
+
8
+ specify 'with false' do
9
+ config = Travis::Yaml.parse(cache: false)
10
+ expect(config.cache).to be == { 'apt' => false, 'bundler' => false }
11
+ end
12
+
13
+ specify 'with string' do
14
+ config = Travis::Yaml.parse(cache: 'apt')
15
+ expect(config.cache).to be == { 'apt' => true }
16
+ end
17
+
18
+ specify 'with array' do
19
+ config = Travis::Yaml.parse(cache: ['apt', 'bundler'])
20
+ expect(config.cache).to be == { 'apt' => true, 'bundler' => true }
21
+ end
22
+
23
+ specify 'with hash' do
24
+ config = Travis::Yaml.parse(cache: { bundler: true, directories: ['a', 'b'] })
25
+ expect(config.cache).to be == { 'bundler' => true, 'directories' => ['a', 'b'] }
26
+ end
27
+ end
28
+
29
+ context 'from YAML' do
30
+ specify 'with true' do
31
+ config = Travis::Yaml.parse('cache: on')
32
+ expect(config.cache).to be == { 'apt' => true, 'bundler' => true }
33
+ end
34
+
35
+ specify 'with false' do
36
+ config = Travis::Yaml.parse('cache: off')
37
+ expect(config.cache).to be == { 'apt' => false, 'bundler' => false }
38
+ end
39
+
40
+ specify 'with string' do
41
+ config = Travis::Yaml.parse('cache: apt')
42
+ expect(config.cache).to be == { 'apt' => true }
43
+ end
44
+
45
+ specify 'with array' do
46
+ config = Travis::Yaml.parse('cache: [apt, bundler]')
47
+ expect(config.cache).to be == { 'apt' => true, 'bundler' => true }
48
+ end
49
+
50
+ specify 'with hash' do
51
+ config = Travis::Yaml.parse('cache: { bundler: true, directories: [a, b] }')
52
+ expect(config.cache).to be == { 'bundler' => true, 'directories' => ['a', 'b'] }
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,14 @@
1
+ describe Travis::Yaml::Nodes::Compiler do
2
+ context 'from Ruby' do
3
+ specify 'can only be set for C++ and C' do
4
+ expect(Travis::Yaml.parse(language: 'c', compiler: 'gcc').warnings).to be_empty
5
+ expect(Travis::Yaml.parse(language: 'c++', compiler: 'gcc').warnings).to be_empty
6
+ expect(Travis::Yaml.parse(language: 'ruby', compiler: 'gcc').warnings).to include('specified "compiler", but setting is not relevant for "ruby"')
7
+ end
8
+
9
+ specify 'allows an array' do
10
+ config = Travis::Yaml.parse(language: 'c', compiler: ['gcc', 'clang'])
11
+ expect(config.compiler).to be == ['gcc', 'clang']
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,83 @@
1
+ describe Travis::Yaml::Nodes::Deploy do
2
+ describe 'from ruby' do
3
+ specify 'empty section' do
4
+ config = Travis::Yaml.parse(deploy: {})
5
+ expect(config.deploy).to be_nil
6
+ expect(config.nested_warnings).to include([[], 'value for "deploy" section is empty, dropping'])
7
+ end
8
+
9
+ specify 'without provider' do
10
+ config = Travis::Yaml.parse(deploy: { foo: :bar })
11
+ expect(config.deploy).to be_nil
12
+ expect(config.nested_warnings).to include([['deploy'], 'missing key "provider"'])
13
+ expect(config.nested_warnings).to include([[], 'value for "deploy" section is empty, dropping'])
14
+ end
15
+
16
+ specify 'with a string' do
17
+ config = Travis::Yaml.parse(deploy: 'heroku')
18
+ expect(config.deploy) .to be == [{"provider" => "heroku"}]
19
+ expect(config.deploy.nested_warnings) .to be_empty
20
+ end
21
+
22
+ specify 'with one provider' do
23
+ config = Travis::Yaml.parse(deploy: { provider: :heroku })
24
+ expect(config.deploy) .to be == [{"provider" => "heroku"}]
25
+ expect(config.deploy.nested_warnings) .to be_empty
26
+ end
27
+
28
+ specify 'with multiple providers' do
29
+ config = Travis::Yaml.parse(deploy: [{ provider: :heroku }, { provider: :heroku }])
30
+ expect(config.deploy) .to be == [{"provider" => "heroku"}, {"provider" => "heroku"}]
31
+ expect(config.deploy.nested_warnings) .to be_empty
32
+ end
33
+
34
+ specify 'stores arbitrary data' do
35
+ config = Travis::Yaml.parse(deploy: { provider: :heroku, foo: :bar })
36
+ expect(config.deploy.first['foo']) .to be == "bar"
37
+ expect(config.deploy.nested_warnings) .to be_empty
38
+ end
39
+
40
+ specify 'with conditions' do
41
+ config = Travis::Yaml.parse(deploy: { provider: :heroku, on: :production })
42
+ expect(config.deploy.first.on.branch).to be == "production"
43
+ end
44
+
45
+ specify 'with multiple conditions' do
46
+ config = Travis::Yaml.parse(deploy: { provider: :heroku, on: { rvm: "2.0.0", repo: 'foo/bar', tags: true } })
47
+ expect(config.deploy.first.on).to be == { 'ruby' => '2.0.0', 'repo' => 'foo/bar', 'tags' => true }
48
+ end
49
+ end
50
+
51
+ describe 'from yaml' do
52
+ specify 'empty section' do
53
+ config = Travis::Yaml.parse('deploy: ')
54
+ expect(config.deploy).to be_nil
55
+ expect(config.nested_warnings).to include([[], 'value for "deploy" section is empty, dropping'])
56
+ end
57
+
58
+ specify 'without provider' do
59
+ config = Travis::Yaml.parse('deploy: { foo: bar }')
60
+ expect(config.deploy).to be_nil
61
+ expect(config.nested_warnings).to include([['deploy'], 'missing key "provider"'])
62
+ expect(config.nested_warnings).to include([[], 'value for "deploy" section is empty, dropping'])
63
+ end
64
+
65
+ specify 'with one provider' do
66
+ config = Travis::Yaml.parse('deploy: { provider: heroku }')
67
+ expect(config.deploy) .to be == [{"provider" => "heroku"}]
68
+ expect(config.deploy.nested_warnings) .to be_empty
69
+ end
70
+
71
+ specify 'with multiple providers' do
72
+ config = Travis::Yaml.parse('deploy: [{ provider: heroku }, { provider: heroku }]')
73
+ expect(config.deploy) .to be == [{"provider" => "heroku"}, {"provider" => "heroku"}]
74
+ expect(config.deploy.nested_warnings) .to be_empty
75
+ end
76
+
77
+ specify 'stores arbitrary data' do
78
+ config = Travis::Yaml.parse('deploy: { provider: heroku, foo: bar }')
79
+ expect(config.deploy.first['foo']) .to be == "bar"
80
+ expect(config.deploy.nested_warnings) .to be_empty
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,55 @@
1
+ describe Travis::Yaml::Nodes::Git do
2
+ context 'from Ruby' do
3
+ describe :depth do
4
+ specify 'is integer' do
5
+ expect(Travis::Yaml.parse(git: { depth: 42 }).git.depth).to be == 42
6
+ end
7
+
8
+ specify 'complains about non-integer values' do
9
+ expect(Travis::Yaml.parse(git: { depth: "foo" }).nested_warnings).to \
10
+ include([['git'], 'dropping "depth" section: "str" not supported, dropping "foo"'])
11
+ end
12
+ end
13
+
14
+ describe :submodules do
15
+ specify 'is integer' do
16
+ expect(Travis::Yaml.parse(git: { submodules: false }).git.submodules).to be == false
17
+ end
18
+
19
+ specify 'complains about non-integer values' do
20
+ expect(Travis::Yaml.parse(git: { submodules: "foo" }).nested_warnings).to \
21
+ include([['git'], 'dropping "submodules" section: "str" not supported, dropping "foo"'])
22
+ end
23
+ end
24
+
25
+ describe :strategy do
26
+ specify 'can be clone' do
27
+ expect(Travis::Yaml.parse(git: { strategy: :clone }).git.strategy).to be == "clone"
28
+ end
29
+
30
+ specify 'can be tarball' do
31
+ expect(Travis::Yaml.parse(git: { strategy: :tarball }).git.strategy).to be == "tarball"
32
+ end
33
+
34
+ specify 'cannot be foo' do
35
+ expect(Travis::Yaml.parse(git: { strategy: :foo }).nested_warnings).to \
36
+ include([['git'], 'dropping "strategy" section: illegal value "foo"'])
37
+ end
38
+ end
39
+ end
40
+
41
+ context 'from YAML' do
42
+ describe :depth do
43
+ specify 'is integer' do
44
+ expect(Travis::Yaml.parse("git: { depth: 42 }").git.depth).to be == 42
45
+ end
46
+
47
+ specify 'complains about non-integer values' do
48
+ expect(Travis::Yaml.parse('git: { depth: !str foo }').nested_warnings).to \
49
+ include([['git'], 'dropping "depth" section: "str" not supported, dropping "foo"'])
50
+ expect(Travis::Yaml.parse('git: { depth: foo }').nested_warnings).to \
51
+ include([['git'], 'dropping "depth" section: failed to parse "int" - invalid value for Integer(): "foo"'])
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,41 @@
1
+ describe Travis::Yaml::Nodes::JDK do
2
+ context 'from ruby' do
3
+ specify 'java' do
4
+ config = Travis::Yaml.parse(language: :java, jdk: 'default')
5
+ expect(config.jdk).to be == ['default']
6
+ end
7
+
8
+ specify 'scala' do
9
+ config = Travis::Yaml.parse(language: :scala, jdk: 'default')
10
+ expect(config.jdk).to be == ['default']
11
+ end
12
+
13
+ specify 'clojure' do
14
+ config = Travis::Yaml.parse(language: :clojure, jdk: 'default')
15
+ expect(config.jdk).to be == ['default']
16
+ end
17
+
18
+ specify 'groovy' do
19
+ config = Travis::Yaml.parse(language: :groovy, jdk: 'default')
20
+ expect(config.jdk).to be == ['default']
21
+ end
22
+
23
+ specify 'c' do
24
+ config = Travis::Yaml.parse(language: :c, jdk: 'default')
25
+ expect(config.jdk).to be_nil
26
+ expect(config.warnings).to include('specified "jdk", but setting is not relevant for "c"')
27
+ end
28
+
29
+ specify 'ruby without jruby' do
30
+ config = Travis::Yaml.parse(language: :ruby, jdk: 'default')
31
+ expect(config.jdk).to be_nil
32
+ expect(config.warnings).to include('dropping "jdk" section: specified "jdk", but "ruby" does not include "jruby"')
33
+ end
34
+
35
+ specify 'ruby with jruby' do
36
+ config = Travis::Yaml.parse(language: :ruby, jdk: 'default', ruby: ['2.0.0', 'jruby'])
37
+ expect(config.jdk).to be == ['default']
38
+ expect(config.warnings).to be_empty
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,79 @@
1
+ describe Travis::Yaml::Nodes::Language do
2
+ context 'from ruby' do
3
+ specify 'default language' do
4
+ config = Travis::Yaml.parse({})
5
+ expect(config.language).to be == 'ruby'
6
+ expect(config.nested_warnings).to include([[], "missing key \"language\", defaulting to \"ruby\""])
7
+ end
8
+
9
+ specify 'set to valid language' do
10
+ expect(Travis::Yaml.parse(language: 'php').language).to be == 'php'
11
+ end
12
+
13
+ specify 'ignores case' do
14
+ expect(Travis::Yaml.parse(language: 'PHP').language).to be == 'php'
15
+ end
16
+
17
+ specify 'set to an invalid language' do
18
+ config = Travis::Yaml.parse(language: 'sql')
19
+ expect(config.language).to be == 'ruby'
20
+ expect(config.nested_warnings).to include([["language"], "illegal value \"sql\", defaulting to \"ruby\""])
21
+ end
22
+
23
+ specify 'supports aliases' do
24
+ config = Travis::Yaml.parse(language: 'javascript')
25
+ expect(config.language).to be == 'node_js'
26
+ end
27
+
28
+ specify 'supports singe element arrays' do
29
+ config = Travis::Yaml.parse(language: ['javascript'])
30
+ expect(config.language) .to be == 'node_js'
31
+ expect(config.language.warnings) .to be_empty
32
+ end
33
+
34
+ specify 'complains about multi element arrays' do
35
+ config = Travis::Yaml.parse(language: ['javascript', 'ruby'])
36
+ expect(config.language) .to be == 'node_js'
37
+ expect(config.language.warnings) .to include('does not support multiple values, dropping "ruby"')
38
+ end
39
+ end
40
+
41
+ context 'from yaml' do
42
+ specify 'default language' do
43
+ config = Travis::Yaml.parse('')
44
+ expect(config.language).to be == 'ruby'
45
+ expect(config.nested_warnings).to include([[], "missing key \"language\", defaulting to \"ruby\""])
46
+ end
47
+
48
+ specify 'set to valid language' do
49
+ expect(Travis::Yaml.parse('language: php').language).to be == 'php'
50
+ end
51
+
52
+ specify 'ignores case' do
53
+ expect(Travis::Yaml.parse('language: PHP').language).to be == 'php'
54
+ end
55
+
56
+ specify 'set to an invalid language' do
57
+ config = Travis::Yaml.parse('language: sql')
58
+ expect(config.language).to be == 'ruby'
59
+ expect(config.nested_warnings).to include([["language"], "illegal value \"sql\", defaulting to \"ruby\""])
60
+ end
61
+
62
+ specify 'supports aliases' do
63
+ config = Travis::Yaml.parse('language: javascript')
64
+ expect(config.language).to be == 'node_js'
65
+ end
66
+
67
+ specify 'supports singe element arrays' do
68
+ config = Travis::Yaml.parse("language: [javascript]")
69
+ expect(config.language) .to be == 'node_js'
70
+ expect(config.language.warnings) .to be_empty
71
+ end
72
+
73
+ specify 'complains about multi element arrays' do
74
+ config = Travis::Yaml.parse("language: [javascript, ruby]")
75
+ expect(config.language) .to be == 'node_js'
76
+ expect(config.language.warnings) .to include('does not support multiple values, dropping "ruby"')
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,45 @@
1
+ describe Travis::Yaml::Nodes::Notifications do
2
+ context :email do
3
+ example "disabled via false" do
4
+ config = Travis::Yaml.parse(notifications: { email: false })
5
+ expect(config.notifications.email).to be_disabled
6
+ expect(config.notifications.email).not_to be_enabled
7
+ end
8
+
9
+ example "disabled via disabled: true" do
10
+ config = Travis::Yaml.parse(notifications: { email: { disabled: true } })
11
+ expect(config.notifications.email).to be_disabled
12
+ expect(config.notifications.email).not_to be_enabled
13
+ end
14
+
15
+ example "disabled via enabled: false" do
16
+ config = Travis::Yaml.parse(notifications: { email: { enabled: false } })
17
+ expect(config.notifications.email).to be_disabled
18
+ expect(config.notifications.email).not_to be_enabled
19
+ end
20
+
21
+ example "enabled by default" do
22
+ config = Travis::Yaml.parse(notifications: { email: { recipients: "example@rkh.im" } })
23
+ expect(config.notifications.email).not_to be_disabled
24
+ expect(config.notifications.email).to be_enabled
25
+ end
26
+
27
+ example "enabled via true" do
28
+ config = Travis::Yaml.parse(notifications: { email: true })
29
+ expect(config.notifications.email).not_to be_disabled
30
+ expect(config.notifications.email).to be_enabled
31
+ end
32
+
33
+ example "disabled via disabled: true" do
34
+ config = Travis::Yaml.parse(notifications: { email: { disabled: false } })
35
+ expect(config.notifications.email).not_to be_disabled
36
+ expect(config.notifications.email).to be_enabled
37
+ end
38
+
39
+ example "disabled via enabled: false" do
40
+ config = Travis::Yaml.parse(notifications: { email: { enabled: true } })
41
+ expect(config.notifications.email).not_to be_disabled
42
+ expect(config.notifications.email).to be_enabled
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,28 @@
1
+ describe Travis::Yaml::Nodes::OS do
2
+ specify 'defaults to linux' do
3
+ expect(Travis::Yaml.new.os).to be == ['linux']
4
+ end
5
+
6
+ specify 'defaults to osx for objective-c' do
7
+ config = Travis::Yaml.parse(language: :objc)
8
+ expect(config.os).to be == ['osx']
9
+ end
10
+
11
+ specify 'supports aliases' do
12
+ config = Travis::Yaml.parse(os: [:ubuntu, :mac], language: 'ruby')
13
+ expect(config.os).to be == ['linux', 'osx']
14
+ end
15
+
16
+ specify 'unsupported values' do
17
+ config = Travis::Yaml.parse(os: :windows)
18
+ expect(config.os).to be == ['linux']
19
+ expect(config.os.first.warnings).to include('illegal value "windows", defaulting to "linux"')
20
+ end
21
+
22
+ specify 'checks if the os suppors the language' do
23
+ config = Travis::Yaml.parse(os: :linux, language: :objc)
24
+ expect(config.os).to be == ['osx']
25
+ expect(config.os.warnings).to include('dropping "linux", does not support "objective-c"')
26
+ expect(config.os.warnings).to include('no suitable operating system given for "objective-c", using "osx"')
27
+ end
28
+ end