buildpack-support 1.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.
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