buildpack-support 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (122) hide show
  1. data/LICENSE +202 -0
  2. data/NOTICE +2 -0
  3. data/docs/cache.md +77 -0
  4. data/docs/component.md +1 -0
  5. data/docs/configuration.md +27 -0
  6. data/docs/logging.md +54 -0
  7. data/docs/other.md +1 -0
  8. data/docs/rake.md +1 -0
  9. data/docs/repository.md +116 -0
  10. data/docs/test.md +1 -0
  11. data/lib/buildpack_support.rb +18 -0
  12. data/lib/buildpack_support/base_buildpack.rb +166 -0
  13. data/lib/buildpack_support/buildpack_version.rb +124 -0
  14. data/lib/buildpack_support/cache.rb +24 -0
  15. data/lib/buildpack_support/cache/application_cache.rb +41 -0
  16. data/lib/buildpack_support/cache/cached_file.rb +103 -0
  17. data/lib/buildpack_support/cache/download_cache.rb +280 -0
  18. data/lib/buildpack_support/cache/inferred_network_failure.rb +26 -0
  19. data/lib/buildpack_support/cache/internet_availability.rb +64 -0
  20. data/lib/buildpack_support/component.rb +24 -0
  21. data/lib/buildpack_support/component/application.rb +76 -0
  22. data/lib/buildpack_support/component/base_component.rb +78 -0
  23. data/lib/buildpack_support/component/base_droplet.rb +96 -0
  24. data/lib/buildpack_support/component/downloads.rb +88 -0
  25. data/lib/buildpack_support/component/services.rb +84 -0
  26. data/lib/buildpack_support/component/versioned_dependency_component.rb +71 -0
  27. data/lib/buildpack_support/component/versioned_downloads.rb +57 -0
  28. data/lib/buildpack_support/component/with_timing.rb +40 -0
  29. data/lib/buildpack_support/configuration_utils.rb +58 -0
  30. data/lib/buildpack_support/constantize.rb +46 -0
  31. data/lib/buildpack_support/dash_case.rb +29 -0
  32. data/lib/buildpack_support/directory_finder.rb +45 -0
  33. data/lib/buildpack_support/filtering_pathname.rb +227 -0
  34. data/lib/buildpack_support/format_duration.rb +57 -0
  35. data/lib/buildpack_support/logging.rb +22 -0
  36. data/lib/buildpack_support/logging/delegating_logger.rb +48 -0
  37. data/lib/buildpack_support/logging/logger_factory.rb +148 -0
  38. data/lib/buildpack_support/qualify_path.rb +36 -0
  39. data/lib/buildpack_support/rake.rb +22 -0
  40. data/lib/buildpack_support/rake/buildpack_stage_task.rb +86 -0
  41. data/lib/buildpack_support/rake/cached_artifact_finder.rb +99 -0
  42. data/lib/buildpack_support/rake/check_api_doc_task.rb +70 -0
  43. data/lib/buildpack_support/rake/dependency_cache_task.rb +87 -0
  44. data/lib/buildpack_support/rake/disable_remote_downloads_task.rb +80 -0
  45. data/lib/buildpack_support/rake/package_task.rb +133 -0
  46. data/lib/buildpack_support/rake/package_zip_task.rb +80 -0
  47. data/lib/buildpack_support/rake/repository_configuration_finder.rb +66 -0
  48. data/lib/buildpack_support/rake/write_version_file_task.rb +82 -0
  49. data/lib/buildpack_support/repository.rb +24 -0
  50. data/lib/buildpack_support/repository/configured_item.rb +81 -0
  51. data/lib/buildpack_support/repository/repository_index.rb +98 -0
  52. data/lib/buildpack_support/repository/wildcard_version_resolver.rb +75 -0
  53. data/lib/buildpack_support/shell.rb +41 -0
  54. data/lib/buildpack_support/snake_case.rb +30 -0
  55. data/lib/buildpack_support/space_case.rb +29 -0
  56. data/lib/buildpack_support/test/application_helper.rb +41 -0
  57. data/lib/buildpack_support/test/base_component_helper.rb +59 -0
  58. data/lib/buildpack_support/test/base_droplet_helper.rb +36 -0
  59. data/lib/buildpack_support/test/console_helper.rb +57 -0
  60. data/lib/buildpack_support/test/environment_helper.rb +32 -0
  61. data/lib/buildpack_support/test/internet_availability_helper.rb +29 -0
  62. data/lib/buildpack_support/test/logging_helper.rb +50 -0
  63. data/lib/buildpack_support/test/scratch_helper.rb +32 -0
  64. data/lib/buildpack_support/test/versioned_dependency_component_helper.rb +32 -0
  65. data/lib/buildpack_support/test/with_load_path_helper.rb +27 -0
  66. data/lib/buildpack_support/to_b.rb +38 -0
  67. data/lib/buildpack_support/tokenized_version.rb +157 -0
  68. data/lib/buildpack_support/version.rb +23 -0
  69. data/spec/buildpack_support/base_buildpack_spec.rb +112 -0
  70. data/spec/buildpack_support/buildpack_version_spec.rb +122 -0
  71. data/spec/buildpack_support/cache/application_cache_spec.rb +56 -0
  72. data/spec/buildpack_support/cache/cached_file_spec.rb +94 -0
  73. data/spec/buildpack_support/cache/download_cache_spec.rb +293 -0
  74. data/spec/buildpack_support/cache/internet_availability_spec.rb +57 -0
  75. data/spec/buildpack_support/cache/yield_file_with_content.rb +30 -0
  76. data/spec/buildpack_support/component/application_spec.rb +81 -0
  77. data/spec/buildpack_support/component/base_component_spec.rb +81 -0
  78. data/spec/buildpack_support/component/base_droplet_spec.rb +72 -0
  79. data/spec/buildpack_support/component/downloads_spec.rb +63 -0
  80. data/spec/buildpack_support/component/services_spec.rb +80 -0
  81. data/spec/buildpack_support/component/versioned_dependency_component_spec.rb +58 -0
  82. data/spec/buildpack_support/component/versioned_downloads_spec.rb +58 -0
  83. data/spec/buildpack_support/component/with_timing_spec.rb +30 -0
  84. data/spec/buildpack_support/configuration_utils_spec.rb +39 -0
  85. data/spec/buildpack_support/constantize_spec.rb +34 -0
  86. data/spec/buildpack_support/dash_case_spec.rb +41 -0
  87. data/spec/buildpack_support/directory_finder_spec.rb +41 -0
  88. data/spec/buildpack_support/filtering_pathname_spec.rb +443 -0
  89. data/spec/buildpack_support/format_duration_spec.rb +60 -0
  90. data/spec/buildpack_support/logging/delegating_logger_spec.rb +62 -0
  91. data/spec/buildpack_support/logging/logger_factory_spec.rb +262 -0
  92. data/spec/buildpack_support/qualify_path_spec.rb +42 -0
  93. data/spec/buildpack_support/rake/buildpack_stage_task_spec.rb +88 -0
  94. data/spec/buildpack_support/rake/cached_artifact_finder_spec.rb +73 -0
  95. data/spec/buildpack_support/rake/check_api_doc_task_spec.rb +69 -0
  96. data/spec/buildpack_support/rake/dependency_cache_task_spec.rb +133 -0
  97. data/spec/buildpack_support/rake/disable_remote_downloads_task_spec.rb +91 -0
  98. data/spec/buildpack_support/rake/package_task_spec.rb +335 -0
  99. data/spec/buildpack_support/rake/package_zip_task_spec.rb +91 -0
  100. data/spec/buildpack_support/rake/repository_configuration_finder_spec.rb +61 -0
  101. data/spec/buildpack_support/rake/write_version_file_task_spec.rb +96 -0
  102. data/spec/buildpack_support/repository/configured_item_spec.rb +78 -0
  103. data/spec/buildpack_support/repository/repository_index_spec.rb +118 -0
  104. data/spec/buildpack_support/repository/wildcard_version_resolver_spec.rb +73 -0
  105. data/spec/buildpack_support/shell_spec.rb +32 -0
  106. data/spec/buildpack_support/snake_case_spec.rb +45 -0
  107. data/spec/buildpack_support/space_case_spec.rb +41 -0
  108. data/spec/buildpack_support/to_b_spec.rb +41 -0
  109. data/spec/buildpack_support/tokenized_version_spec.rb +132 -0
  110. data/spec/fixtures/application/test-file +0 -0
  111. data/spec/fixtures/config/found-config.yml +2 -0
  112. data/spec/fixtures/droplet-resources/droplet-resource +0 -0
  113. data/spec/fixtures/stub-download-with-top-level.zip +0 -0
  114. data/spec/fixtures/stub-download.tar.gz +0 -0
  115. data/spec/fixtures/stub-download.zip +0 -0
  116. data/spec/fixtures/test-cache.yml +18 -0
  117. data/spec/fixtures/test-index.yml +2 -0
  118. data/spec/fixtures/test_component.rb +0 -0
  119. data/spec/fixtures/zip-contents/test-directory/test-deep-file +0 -0
  120. data/spec/fixtures/zip-contents/test-file +0 -0
  121. data/spec/spec_helper.rb +30 -0
  122. metadata +416 -0
@@ -0,0 +1,73 @@
1
+ # Encoding: utf-8
2
+ # Copyright 2013-2014 the original author or authors.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.anguage governing permissions and
15
+ # limitations under the License.
16
+
17
+ require 'spec_helper'
18
+ require 'buildpack_support/repository/wildcard_version_resolver'
19
+ require 'buildpack_support/tokenized_version'
20
+
21
+ describe BuildpackSupport::Repository::WildcardVersionResolver do
22
+
23
+ let(:resolver) { described_class.new }
24
+
25
+ let(:versions) { %w(1.6.0_26 1.6.0_27 1.6.1_14 1.7.0_19 1.7.0_21 1.8.0_M-7 1.8.0_05 2.0.0) }
26
+
27
+ it 'resolves the default version if no candidate is supplied' do
28
+ expect(resolver.resolve(nil, versions)).to eq(tokenized_version('2.0.0'))
29
+ end
30
+
31
+ it 'resolves a wildcard major version' do
32
+ expect(resolver.resolve(tokenized_version('+'), versions)).to eq(tokenized_version('2.0.0'))
33
+ end
34
+
35
+ it 'resolves a wildcard minor version' do
36
+ expect(resolver.resolve(tokenized_version('1.+'), versions)).to eq(tokenized_version('1.8.0_05'))
37
+ end
38
+
39
+ it 'resolves a wildcard micro version' do
40
+ expect(resolver.resolve(tokenized_version('1.6.+'), versions)).to eq(tokenized_version('1.6.1_14'))
41
+ end
42
+
43
+ it 'resolves a wildcard qualifier' do
44
+ expect(resolver.resolve(tokenized_version('1.6.0_+'), versions)).to eq(tokenized_version('1.6.0_27'))
45
+ expect(resolver.resolve(tokenized_version('1.8.0_+'), versions)).to eq(tokenized_version('1.8.0_05'))
46
+ end
47
+
48
+ it 'resolves a non-wildcard version' do
49
+ expect(resolver.resolve(tokenized_version('1.6.0_26'), versions)).to eq(tokenized_version('1.6.0_26'))
50
+ expect(resolver.resolve(tokenized_version('2.0.0'), versions)).to eq(tokenized_version('2.0.0'))
51
+ end
52
+
53
+ it 'resolves a non-digit qualifier' do
54
+ expect(resolver.resolve(tokenized_version('1.8.0_M-7'), versions)).to eq(tokenized_version('1.8.0_M-7'))
55
+ end
56
+
57
+ it 'should raise an exception if no version can be resolved' do
58
+ expect { resolver.resolve(tokenized_version('2.1.0'), versions) }.to raise_error
59
+ end
60
+
61
+ it 'should raise an exception when a wildcard is specified in the [] collection' do
62
+ expect { resolver.resolve(tokenized_version('1.6.0_25'), %w(+)) }.to raise_error(/Invalid/)
63
+ end
64
+
65
+ it 'should fail if candidate is not a tokenized version' do
66
+ expect { resolver.resolve('+', versions) }.to raise_error(/Invalid TokenizedVersion '\+'/)
67
+ end
68
+
69
+ def tokenized_version(s)
70
+ BuildpackSupport::TokenizedVersion.new(s)
71
+ end
72
+
73
+ end
@@ -0,0 +1,32 @@
1
+ # Encoding: utf-8
2
+ # Copyright 2013-2014 the original author or authors.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ require 'spec_helper'
17
+ require 'buildpack_support/shell'
18
+ require 'buildpack_support/test/console_helper'
19
+
20
+ describe BuildpackSupport::Shell do
21
+ include BuildpackSupport::Shell
22
+ include_context 'console_helper'
23
+
24
+ it 'should return if command returns a zero exit code' do
25
+ shell 'true'
26
+ end
27
+
28
+ it 'should raise an error if command returns a non-zero exit code' do
29
+ expect { shell 'false' }.to raise_error
30
+ end
31
+
32
+ end
@@ -0,0 +1,45 @@
1
+ # Encoding: utf-8
2
+ # Copyright 2013-2014 the original author or authors.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ require 'spec_helper'
17
+ require 'buildpack_support/snake_case'
18
+
19
+ describe 'snake_case' do
20
+
21
+ it 'should return only lowercase strings' do
22
+ expect('Test'.snake_case).to eq('test')
23
+ end
24
+
25
+ it 'should separate module names with forward slash characters' do
26
+ expect('Foo::Bar::Bang'.snake_case).to eq('foo/bar/bang')
27
+ end
28
+
29
+ it 'should split on penultimate uppercase characters' do
30
+ expect('FOOBar'.snake_case).to eq('foo_bar')
31
+ end
32
+
33
+ it 'should split on lowercase characters followed an uppercase characters' do
34
+ expect('FooBar'.snake_case).to eq('foo_bar')
35
+ end
36
+
37
+ it 'should split on digit characters followed an uppercase characters' do
38
+ expect('123Bar'.snake_case).to eq('123_bar')
39
+ end
40
+
41
+ it 'should replace dashes with underscores' do
42
+ expect('Foo-Bar'.snake_case).to eq('foo_bar')
43
+ end
44
+
45
+ end
@@ -0,0 +1,41 @@
1
+ # Encoding: utf-8
2
+ # Copyright 2013-2014 the original author or authors.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ require 'spec_helper'
17
+ require 'buildpack_support/space_case'
18
+
19
+ describe 'space_case' do
20
+
21
+ it 'should replace dashes with spaces' do
22
+ expect('Test-Test'.space_case).to eq('Test Test')
23
+ end
24
+
25
+ it 'should return only the last module name' do
26
+ expect('Foo::Bar::Bang'.space_case).to eq('Bang')
27
+ end
28
+
29
+ it 'should split on penultimate uppercase characters' do
30
+ expect('FOOBar'.space_case).to eq('FOO Bar')
31
+ end
32
+
33
+ it 'should split on lowercase characters followed an uppercase characters' do
34
+ expect('FooBar'.space_case).to eq('Foo Bar')
35
+ end
36
+
37
+ it 'should split on digit characters followed an uppercase characters' do
38
+ expect('123Bar'.space_case).to eq('123 Bar')
39
+ end
40
+
41
+ end
@@ -0,0 +1,41 @@
1
+ # Encoding: utf-8
2
+ # Copyright 2013-2014 the original author or authors.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ require 'spec_helper'
17
+ require 'buildpack_support/to_b'
18
+
19
+ describe 'to_b' do
20
+
21
+ it 'should return true for any the string "true" in mixed case' do
22
+ expect('TrUe'.to_b).to eq(true)
23
+ end
24
+
25
+ it 'should return true for the string "true" in any lower case' do
26
+ expect('true'.to_b).to eq(true)
27
+ end
28
+
29
+ it 'should return false for any string other than "true" in any case' do
30
+ expect('1true'.to_b).to eq(false)
31
+ end
32
+
33
+ it 'should return false for the string "false" in any case' do
34
+ expect('FALSE'.to_b).to eq(false)
35
+ end
36
+
37
+ it 'should return false for a nil Class' do
38
+ expect(nil.to_b).to eq(false)
39
+ end
40
+
41
+ end
@@ -0,0 +1,132 @@
1
+ # Encoding: utf-8
2
+ # Copyright 2013-2014 the original author or authors.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ require 'spec_helper'
17
+ require 'buildpack_support/tokenized_version'
18
+
19
+ describe BuildpackSupport::TokenizedVersion do
20
+
21
+ it 'defaults to a wildcard if no version is supplied' do
22
+ expect(described_class.new(nil)).to eq(described_class.new('+'))
23
+ end
24
+
25
+ it 'should order major versions correctly' do
26
+ expect(described_class.new('3.0.0')).to be > described_class.new('2.0.0')
27
+ expect(described_class.new('10.0.0')).to be > described_class.new('2.0.0')
28
+ end
29
+
30
+ it 'should order minor versions correctly' do
31
+ expect(described_class.new('0.3.0')).to be > described_class.new('0.2.0')
32
+ expect(described_class.new('0.10.0')).to be > described_class.new('0.2.0')
33
+ end
34
+
35
+ it 'should order micro versions correctly' do
36
+ expect(described_class.new('0.0.3')).to be > described_class.new('0.0.2')
37
+ expect(described_class.new('0.0.10')).to be > described_class.new('0.0.2')
38
+ end
39
+
40
+ it 'should order qualifiers correctly' do
41
+ expect(described_class.new('1.7.0_28a')).to be > described_class.new('1.7.0_28')
42
+ end
43
+
44
+ it 'should accept a qualifier with embedded periods and hyphens' do
45
+ described_class.new('0.5.0_BUILD-20120731.141622-16')
46
+ end
47
+
48
+ it 'should raise an exception when the major version is not numeric' do
49
+ expect { described_class.new('A') }.to raise_error(/Invalid/)
50
+ end
51
+
52
+ it 'should raise an exception when the minor version is not numeric' do
53
+ expect { described_class.new('1.A') }.to raise_error(/Invalid/)
54
+ expect { described_class.new('1..0') }.to raise_error(/Invalid/)
55
+ end
56
+
57
+ it 'should raise an exception when the micro version is not numeric' do
58
+ expect { described_class.new('1.6.A') }.to raise_error(/Invalid/)
59
+ expect { described_class.new('1.6..') }.to raise_error(/Invalid/)
60
+ expect { described_class.new('1.6._0') }.to raise_error(/Invalid/)
61
+ expect { described_class.new('1.6_26') }.to raise_error(/Invalid/)
62
+ end
63
+
64
+ it 'should raise an exception when micro version is missing' do
65
+ expect { described_class.new('1.6') }.to raise_error(/Invalid/)
66
+ end
67
+
68
+ it 'should raise an exception when major version is not legal' do
69
+ expect { described_class.new('1+') }.to raise_error(/Invalid/)
70
+ end
71
+
72
+ it 'should raise an exception when minor version is not legal' do
73
+ expect { described_class.new('1.6+') }.to raise_error(/Invalid/)
74
+ end
75
+
76
+ it 'should raise an exception when micro version is not legal' do
77
+ expect { described_class.new('1.6.0+') }.to raise_error(/Invalid/)
78
+ end
79
+
80
+ it 'should raise an exception when qualifier version is not legal' do
81
+ expect { described_class.new('1.6.0_05+') }.to raise_error(/Invalid/)
82
+ end
83
+
84
+ it 'should raise an exception when the qualifier is not letter, number, or hyphen' do
85
+ expect { described_class.new('1.6.0_?') }.to raise_error(/Invalid/)
86
+ expect { described_class.new('1.6.0__5') }.to raise_error(/Invalid/)
87
+ expect { described_class.new('1.6.0_A.') }.to raise_error(/Invalid/)
88
+ end
89
+
90
+ it 'should raise an exception when a major version wildcard is followed by anything' do
91
+ expect { described_class.new('+.6.0_26') }.to raise_error(/Invalid/)
92
+ end
93
+
94
+ it 'should raise an exception when a minor version wildcard is followed by anything' do
95
+ expect { described_class.new('1.+.0_26') }.to raise_error(/Invalid/)
96
+ end
97
+
98
+ it 'should raise an exception when a micro version wildcard is followed by anything' do
99
+ expect { described_class.new('1.6.+_26') }.to raise_error(/Invalid/)
100
+ end
101
+
102
+ it 'should raise an exception when too many components are specified' do
103
+ expect { described_class.new('1.6.0.25') }.to raise_error(/Invalid/)
104
+ expect { described_class.new('1.6.0.25_27') }.to raise_error(/Invalid/)
105
+ end
106
+
107
+ it 'should raise an exception when not enough components are specified' do
108
+ expect { described_class.new('_25') }.to raise_error(/Invalid/)
109
+ end
110
+
111
+ it 'should raise an exception when a wildcard is specified but should not be' do
112
+ expect { described_class.new('+', false) }.to raise_error(/Invalid/)
113
+ expect { described_class.new('1.+', false) }.to raise_error(/Invalid/)
114
+ expect { described_class.new('1.1.+', false) }.to raise_error(/Invalid/)
115
+ expect { described_class.new('1.1.1_+', false) }.to raise_error(/Invalid/)
116
+ end
117
+
118
+ it 'should raise an exception when a version ends with a component separator' do
119
+ expect { described_class.new('1.') }.to raise_error(/Invalid/)
120
+ expect { described_class.new('1.7.') }.to raise_error(/Invalid/)
121
+ expect { described_class.new('1.7.0_') }.to raise_error(/Invalid/)
122
+ end
123
+
124
+ it 'should accept a version has a number of components acceptable to check_size' do
125
+ described_class.new('1.2.3_4').check_size(4)
126
+ end
127
+
128
+ it 'should raise an exception when a version has too many components for check_size' do
129
+ expect { described_class.new('1.2.3_4').check_size(3) }.to raise_error(/too many version components/)
130
+ end
131
+
132
+ end
File without changes
@@ -0,0 +1,2 @@
1
+ ---
2
+ foo: bar
File without changes
Binary file
Binary file
@@ -0,0 +1,18 @@
1
+ # Cloud Foundry Java Buildpack
2
+ # Copyright (c) 2013 the original author or authors.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ # Download cache configuration
17
+ ---
18
+ remote_downloads: enabled
@@ -0,0 +1,2 @@
1
+ ---
2
+ resolved-version: resolved-uri
File without changes
File without changes
@@ -0,0 +1,30 @@
1
+ # Encoding: utf-8
2
+ # Copyright 2013-2014 the original author or authors.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ require 'simplecov'
17
+ SimpleCov.start do
18
+ add_filter 'spec'
19
+ end
20
+
21
+ require 'codeclimate-test-reporter'
22
+ CodeClimate::TestReporter.start
23
+
24
+ require 'webmock/rspec'
25
+ WebMock.disable_net_connect!(allow: 'codeclimate.com')
26
+
27
+ RSpec.configure do |config|
28
+ config.run_all_when_everything_filtered = true
29
+ config.filter_run :focus
30
+ end