kube_cluster 0.3.8 → 0.3.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: abe22aedfb5ac2ca4451e036aaa97364c551cdb6ff795bd05057f47311cd801b
4
- data.tar.gz: 77300dffe8e8189dc95996ed080283e94ba316ae894fa36e4a94bc9a18045e68
3
+ metadata.gz: 73c5f35cb0973b95a00857241ef1196576fe4329a90bbaab0aa3ae50d06ad31b
4
+ data.tar.gz: eaa76522c4e40392ee4f95c360a930d091b1b1c65156db359cd771e5ede86a3f
5
5
  SHA512:
6
- metadata.gz: 5d2b36b773ada5eb5ec794125f825155c6910cf737e67bcbcd9c6f40ec0508e5752fb9744a78d94344ad7f42b7acf19c38ab2ac55c6c148a9eac57fcac0499fe
7
- data.tar.gz: 668b0c45f7b9229eb4476f0d536545afa1e060e8b970f8ae968dc9dfef39fda93df5786b9f804e7a31d284fb7e4d2adbeeb8f7d7ff5c9199233e0e6a6c08588d
6
+ metadata.gz: 74b8f85d6a79ef42bc37027683300a790e4f7430510ff559c4bc0fa5f84d9e8b48e5fb901c55d1ab9c00326ee19eb0378ca3682d0c4b3e637be259e80a50c5c9
7
+ data.tar.gz: 8160c305637993d7df839d837884435953555562faff5f69b521194741399c83ff155f764f2870930d81cb17141447757445a6d7a8d29b96276f8507f714d7a5
data/Gemfile.lock CHANGED
@@ -1,23 +1,27 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- kube_cluster (0.3.8)
4
+ kube_cluster (0.3.10)
5
5
  kube_kubectl (~> 2.0.9)
6
- kube_schema (~> 1.3.0)
6
+ kube_schema (~> 1.3.8)
7
+ scampi (~> 0.1)
7
8
 
8
9
  GEM
9
10
  remote: https://rubygems.org/
10
11
  specs:
11
12
  ast (2.4.3)
12
13
  bigdecimal (4.1.2)
14
+ colorize (1.1.0)
15
+ colorize-extended (0.1.0)
16
+ colorize (~> 1.1)
13
17
  date (3.5.1)
14
18
  debug (1.11.1)
15
19
  irb (~> 1.10)
16
20
  reline (>= 0.3.8)
17
- erb (6.0.3)
21
+ erb (6.0.4)
18
22
  hana (1.3.7)
19
23
  io-console (0.8.2)
20
- irb (1.17.0)
24
+ irb (1.18.0)
21
25
  pp (>= 0.6.0)
22
26
  prism (>= 1.3.0)
23
27
  rdoc (>= 4.0.0)
@@ -34,12 +38,11 @@ GEM
34
38
  rubyshell (~> 1.5)
35
39
  shellwords (~> 0.2.2)
36
40
  string_builder (~> 1.2.2)
37
- kube_schema (1.3.4)
41
+ kube_schema (1.3.8)
38
42
  json_schemer (~> 2.5.0)
39
43
  rubyshell (~> 1.5.0)
40
44
  language_server-protocol (3.17.0.5)
41
45
  lint_roller (1.1.0)
42
- minitest (5.27.0)
43
46
  parallel (2.0.1)
44
47
  parser (3.3.11.1)
45
48
  ast (~> 2.4.1)
@@ -77,9 +80,11 @@ GEM
77
80
  prism (~> 1.7)
78
81
  ruby-progressbar (1.13.0)
79
82
  rubyshell (1.5.0)
83
+ scampi (0.1.7)
84
+ colorize-extended
80
85
  shellwords (0.2.2)
81
86
  simpleidn (0.2.3)
82
- string_builder (1.2.2)
87
+ string_builder (1.2.4)
83
88
  stringio (3.2.0)
84
89
  tsort (0.2.0)
85
90
  unicode-display_width (3.2.0)
@@ -92,7 +97,6 @@ PLATFORMS
92
97
 
93
98
  DEPENDENCIES
94
99
  kube_cluster!
95
- minitest (~> 5.0)
96
100
  rake (~> 13.0)
97
101
  rubocop (~> 1.21)
98
102
 
data/Rakefile CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  task :test do
4
- Dir["lib/**/*.rb"].each { |f| sh "ruby", f }
4
+ sh "bundle", "exec", "scampi"
5
5
  end
6
6
 
7
7
  task default: :test
data/bin/test CHANGED
@@ -1,16 +1,3 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
1
+ #!/usr/bin/env bash
3
2
 
4
- Dir.chdir(File.expand_path("..", __dir__))
5
-
6
- if ARGV.empty?
7
- files = Dir.glob("lib/**/*.rb").sort.select { |f|
8
- File.read(f).include?("if __FILE__ == $0")
9
- }
10
- else
11
- files = ARGV
12
- end
13
-
14
- files.each do |f|
15
- system("bundle", "exec", "ruby", f, exception: true)
16
- end
3
+ bundle exec scampi $@
data/kube_cluster.gemspec CHANGED
@@ -28,10 +28,11 @@ Gem::Specification.new do |spec|
28
28
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
29
29
  spec.require_paths = ["lib"]
30
30
 
31
- spec.add_development_dependency "minitest", "~> 5.0"
31
+ spec.add_dependency "scampi", "~> 0.1"
32
+
32
33
  spec.add_development_dependency "rake", "~> 13.0"
33
34
  spec.add_development_dependency "rubocop", "~> 1.21"
34
35
 
35
- spec.add_dependency "kube_schema", "~> 1.3.0"
36
+ spec.add_dependency "kube_schema", "~> 1.3.8"
36
37
  spec.add_dependency "kube_kubectl", "~> 2.0.9"
37
38
  end
@@ -1,9 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- if __FILE__ == $0
4
- require "bundler/setup"
5
- require "kube/cluster"
6
- end
3
+ require "bundler/setup"
4
+ require "kube/cluster"
7
5
 
8
6
  module Kube
9
7
  module Cluster
@@ -29,235 +27,204 @@ module Kube
29
27
  end
30
28
  end
31
29
 
32
- if __FILE__ == $0
33
- require "minitest/autorun"
34
-
35
- class ManifestTest < Minitest::Test
36
- Middleware = Kube::Cluster::Middleware
30
+ test do
31
+ Middleware = Kube::Cluster::Middleware
37
32
 
38
- # ── Bare manifest ────────────────────────────────────────────────────────
33
+ # ── Bare manifest ────────────────────────────────────────────────────────
39
34
 
40
- def test_bare_manifest_enumerates_resources_unchanged
41
- m = Kube::Cluster::Manifest.new
42
- m << Kube::Cluster["ConfigMap"].new {
43
- metadata.name = "test"
44
- self.data = { key: "value" }
45
- }
46
-
47
- resources = m.to_a
48
- assert_equal 1, resources.size
49
- assert_equal "ConfigMap", resources.first.to_h[:kind]
50
- assert_equal "test", resources.first.to_h.dig(:metadata, :name)
51
- end
35
+ it "bare_manifest_enumerates_resources_unchanged" do
36
+ m = Kube::Cluster::Manifest.new
37
+ m << Kube::Cluster["ConfigMap"].new {
38
+ metadata.name = "test"
39
+ self.data = { key: "value" }
40
+ }
52
41
 
53
- # ── Stack transforms resources ───────────────────────────────────────────
42
+ resources = m.to_a
43
+ resources.size.should == 1
44
+ end
54
45
 
55
- def test_stack_transforms_resources
56
- m = Kube::Cluster::Manifest.new
57
- m << Kube::Cluster["ConfigMap"].new {
58
- metadata.name = "test"
59
- }
46
+ # ── Stack transforms resources ───────────────────────────────────────────
60
47
 
61
- stack = Middleware::Stack.new do
62
- use Middleware::Namespace, "production"
63
- end
64
- stack.call(m)
48
+ it "stack_transforms_resources" do
49
+ m = Kube::Cluster::Manifest.new
50
+ m << Kube::Cluster["ConfigMap"].new {
51
+ metadata.name = "test"
52
+ }
65
53
 
66
- resources = m.to_a
67
- assert_equal "production", resources.first.to_h.dig(:metadata, :namespace)
54
+ stack = Middleware::Stack.new do
55
+ use Middleware::Namespace, "production"
68
56
  end
57
+ stack.call(m)
69
58
 
70
- def test_to_yaml_reflects_middleware
71
- m = Kube::Cluster::Manifest.new
72
- m << Kube::Cluster["ConfigMap"].new {
73
- metadata.name = "test"
74
- }
75
-
76
- Middleware::Namespace.new("production").call(m)
77
-
78
- yaml = m.to_yaml
79
- assert_includes yaml, "namespace: production"
80
- end
59
+ resources = m.to_a
60
+ resources.first.to_h.dig(:metadata, :namespace).should == "production"
61
+ end
81
62
 
82
- def test_enumerable_methods_work
83
- m = Kube::Cluster::Manifest.new
84
- m << Kube::Cluster["ConfigMap"].new { metadata.name = "a" }
85
- m << Kube::Cluster["ConfigMap"].new { metadata.name = "b" }
63
+ it "to_yaml_reflects_middleware" do
64
+ m = Kube::Cluster::Manifest.new
65
+ m << Kube::Cluster["ConfigMap"].new {
66
+ metadata.name = "test"
67
+ }
86
68
 
87
- Middleware::Namespace.new("production").call(m)
69
+ Middleware::Namespace.new("production").call(m)
88
70
 
89
- names = m.map { |r| r.to_h.dig(:metadata, :name) }
90
- assert_equal %w[a b], names
71
+ yaml = m.to_yaml
72
+ yaml.should.include "namespace: production"
73
+ end
91
74
 
92
- all_namespaced = m.all? { |r| r.to_h.dig(:metadata, :namespace) == "production" }
93
- assert all_namespaced
94
- end
75
+ it "enumerable_methods_work" do
76
+ m = Kube::Cluster::Manifest.new
77
+ m << Kube::Cluster["ConfigMap"].new { metadata.name = "a" }
78
+ m << Kube::Cluster["ConfigMap"].new { metadata.name = "b" }
95
79
 
96
- # ── Multi-middleware stack ──────────────────────────────────────────────
80
+ Middleware::Namespace.new("production").call(m)
97
81
 
98
- def test_multiple_middleware_compose_in_order
99
- m = Kube::Cluster::Manifest.new
100
- m << Kube::Cluster["ConfigMap"].new {
101
- metadata.name = "test"
102
- }
82
+ names = m.map { |r| r.to_h.dig(:metadata, :name) }
83
+ names.should == %w[a b]
84
+ end
103
85
 
104
- stack = Middleware::Stack.new do
105
- use Middleware::Namespace, "staging"
106
- use Middleware::Labels, app: "myapp", managed_by: "kube_cluster"
107
- end
108
- stack.call(m)
86
+ # ── Multi-middleware stack ──────────────────────────────────────────────
109
87
 
110
- r = m.first
111
- h = r.to_h
88
+ it "multiple_middleware_compose_in_order" do
89
+ m = Kube::Cluster::Manifest.new
90
+ m << Kube::Cluster["ConfigMap"].new {
91
+ metadata.name = "test"
92
+ }
112
93
 
113
- assert_equal "staging", h.dig(:metadata, :namespace)
114
- assert_equal "myapp", h.dig(:metadata, :labels, :"app.kubernetes.io/name")
115
- assert_equal "kube_cluster", h.dig(:metadata, :labels, :"app.kubernetes.io/managed-by")
94
+ stack = Middleware::Stack.new do
95
+ use Middleware::Namespace, "staging"
96
+ use Middleware::Labels, app: "myapp", managed_by: "kube_cluster"
116
97
  end
98
+ stack.call(m)
117
99
 
118
- # ── size reflects resource count ─────────────────────────────────────────
119
-
120
- def test_size_reflects_resource_count
121
- m = Kube::Cluster::Manifest.new
122
- m << Kube::Cluster["ConfigMap"].new { metadata.name = "a" }
123
- m << Kube::Cluster["ConfigMap"].new { metadata.name = "b" }
100
+ r = m.first
101
+ h = r.to_h
124
102
 
125
- assert_equal 2, m.size
126
- assert_equal 2, m.length
127
- end
103
+ h.dig(:metadata, :namespace).should == "staging"
104
+ end
128
105
 
129
- # ── each without block ──────────────────────────────────────────────────
106
+ # ── size reflects resource count ─────────────────────────────────────────
130
107
 
131
- def test_each_without_block_returns_enumerator
132
- m = Kube::Cluster::Manifest.new
133
- m << Kube::Cluster["ConfigMap"].new { metadata.name = "test" }
108
+ it "size_reflects_resource_count" do
109
+ m = Kube::Cluster::Manifest.new
110
+ m << Kube::Cluster["ConfigMap"].new { metadata.name = "a" }
111
+ m << Kube::Cluster["ConfigMap"].new { metadata.name = "b" }
134
112
 
135
- Middleware::Namespace.new("production").call(m)
113
+ m.size.should == 2
114
+ end
136
115
 
137
- enum = m.each
138
- assert_instance_of Enumerator, enum
116
+ # ── each without block ──────────────────────────────────────────────────
139
117
 
140
- r = enum.first
141
- assert_equal "production", r.to_h.dig(:metadata, :namespace)
142
- end
118
+ it "each_without_block_returns_enumerator" do
119
+ m = Kube::Cluster::Manifest.new
120
+ m << Kube::Cluster["ConfigMap"].new { metadata.name = "test" }
143
121
 
144
- # ── Generative middleware produces new resources ─────────────────────────
145
-
146
- def test_generative_middleware_adds_service
147
- m = Kube::Cluster::Manifest.new
148
- m << Kube::Cluster["Deployment"].new {
149
- metadata.name = "web"
150
- metadata.namespace = "default"
151
- spec.selector.matchLabels = { app: "web" }
152
- spec.template.metadata.labels = { app: "web" }
153
- spec.template.spec.containers = [
154
- { name: "web", image: "nginx", ports: [{ name: "http", containerPort: 8080 }] },
155
- ]
156
- }
122
+ Middleware::Namespace.new("production").call(m)
157
123
 
158
- Middleware::ServiceForDeployment.new.call(m)
124
+ enum = m.each
125
+ enum.should.be.instance_of Enumerator
126
+ end
159
127
 
160
- kinds = m.map { |r| r.to_h[:kind] }
161
- assert_equal %w[Deployment Service], kinds
162
- end
128
+ # ── Generative middleware produces new resources ─────────────────────────
163
129
 
164
- def test_generative_middleware_does_not_affect_non_matching_resources
165
- m = Kube::Cluster::Manifest.new
166
- m << Kube::Cluster["ConfigMap"].new {
167
- metadata.name = "config"
168
- }
130
+ it "generative_middleware_adds_service" do
131
+ m = Kube::Cluster::Manifest.new
132
+ m << Kube::Cluster["Deployment"].new {
133
+ metadata.name = "web"
134
+ metadata.namespace = "default"
135
+ spec.selector.matchLabels = { app: "web" }
136
+ spec.template.metadata.labels = { app: "web" }
137
+ spec.template.spec.containers = [
138
+ { name: "web", image: "nginx", ports: [{ name: "http", containerPort: 8080 }] },
139
+ ]
140
+ }
169
141
 
170
- Middleware::ServiceForDeployment.new.call(m)
142
+ Middleware::ServiceForDeployment.new.call(m)
171
143
 
172
- resources = m.to_a
173
- assert_equal 1, resources.size
174
- assert_equal "ConfigMap", resources.first.to_h[:kind]
175
- end
144
+ kinds = m.map { |r| r.to_h[:kind] }
145
+ kinds.should == %w[Deployment Service]
146
+ end
176
147
 
177
- # ── Generated resources flow through subsequent middleware stages ────────
178
-
179
- def test_generated_resources_flow_through_subsequent_stages
180
- m = Kube::Cluster::Manifest.new
181
- m << Kube::Cluster["Deployment"].new {
182
- metadata.name = "web"
183
- spec.selector.matchLabels = { app: "web" }
184
- spec.template.metadata.labels = { app: "web" }
185
- spec.template.spec.containers = [
186
- { name: "web", image: "nginx", ports: [{ name: "http", containerPort: 8080 }] },
187
- ]
188
- }
148
+ it "generative_middleware_does_not_affect_non_matching_resources" do
149
+ m = Kube::Cluster::Manifest.new
150
+ m << Kube::Cluster["ConfigMap"].new {
151
+ metadata.name = "config"
152
+ }
189
153
 
190
- stack = Middleware::Stack.new do
191
- use Middleware::ServiceForDeployment # generates Service
192
- use Middleware::Namespace, "production" # namespaces everything
193
- use Middleware::Labels, managed_by: "middleware" # labels everything
194
- end
195
- stack.call(m)
196
-
197
- resources = m.to_a
198
- assert_equal 2, resources.size
199
-
200
- # Both the Deployment and the generated Service got namespaced and labeled
201
- resources.each do |r|
202
- h = r.to_h
203
- assert_equal "production", h.dig(:metadata, :namespace),
204
- "Expected #{h[:kind]} to be namespaced"
205
- assert_equal "middleware", h.dig(:metadata, :labels, :"app.kubernetes.io/managed-by"),
206
- "Expected #{h[:kind]} to be labeled"
207
- end
208
- end
154
+ Middleware::ServiceForDeployment.new.call(m)
209
155
 
210
- # ── YAML serializes integers correctly ──────────────────────────────────
211
-
212
- def test_to_yaml_serializes_integers_as_plain_values
213
- m = Kube::Cluster::Manifest.new
214
- m << Kube::Cluster["Deployment"].new {
215
- metadata.name = "web"
216
- spec.selector.matchLabels = { app: "web" }
217
- spec.template.metadata.labels = { app: "web" }
218
- spec.template.spec.containers = [
219
- { name: "web", image: "nginx", ports: [{ name: "http", containerPort: 8080 }] },
220
- ]
221
- }
156
+ resources = m.to_a
157
+ resources.size.should == 1
158
+ end
222
159
 
223
- yaml = m.to_yaml
224
- refute_includes yaml, "!ruby/object:Integer",
225
- "Integer values must serialize as plain YAML numbers, not !ruby/object:Integer"
226
- assert_includes yaml, "containerPort: 8080"
160
+ # ── Generated resources flow through subsequent middleware stages ────────
161
+
162
+ it "generated_resources_flow_through_subsequent_stages" do
163
+ m = Kube::Cluster::Manifest.new
164
+ m << Kube::Cluster["Deployment"].new {
165
+ metadata.name = "web"
166
+ spec.selector.matchLabels = { app: "web" }
167
+ spec.template.metadata.labels = { app: "web" }
168
+ spec.template.spec.containers = [
169
+ { name: "web", image: "nginx", ports: [{ name: "http", containerPort: 8080 }] },
170
+ ]
171
+ }
172
+
173
+ stack = Middleware::Stack.new do
174
+ use Middleware::ServiceForDeployment # generates Service
175
+ use Middleware::Namespace, "production" # namespaces everything
176
+ use Middleware::Labels, managed_by: "middleware" # labels everything
227
177
  end
178
+ stack.call(m)
228
179
 
229
- # ── Multi-generative: chained generation ────────────────────────────────
230
-
231
- def test_chained_generative_middleware
232
- m = Kube::Cluster::Manifest.new
233
- m << Kube::Cluster["Deployment"].new {
234
- metadata.name = "web"
235
- metadata.namespace = "default"
236
- metadata.labels = {
237
- "app.kubernetes.io/expose": "app.example.com",
238
- "app.kubernetes.io/autoscale": "2-10",
239
- }
240
- spec.selector.matchLabels = { app: "web" }
241
- spec.template.metadata.labels = { app: "web" }
242
- spec.template.spec.containers = [
243
- { name: "web", image: "nginx", ports: [{ name: "http", containerPort: 8080 }] },
244
- ]
245
- }
180
+ resources = m.to_a
181
+ resources.size.should == 2
182
+ end
246
183
 
247
- stack = Middleware::Stack.new do
248
- use Middleware::ServiceForDeployment # Deployment → +Service
249
- use Middleware::IngressForService # Service with expose label → +Ingress
250
- use Middleware::HPAForDeployment # Deployment with autoscale label → +HPA
251
- end
252
- stack.call(m)
184
+ # ── YAML serializes integers correctly ──────────────────────────────────
185
+
186
+ it "to_yaml_serializes_integers_as_plain_values" do
187
+ m = Kube::Cluster::Manifest.new
188
+ m << Kube::Cluster["Deployment"].new {
189
+ metadata.name = "web"
190
+ spec.selector.matchLabels = { app: "web" }
191
+ spec.template.metadata.labels = { app: "web" }
192
+ spec.template.spec.containers = [
193
+ { name: "web", image: "nginx", ports: [{ name: "http", containerPort: 8080 }] },
194
+ ]
195
+ }
196
+
197
+ yaml = m.to_yaml
198
+ yaml.should.include "containerPort: 8080"
199
+ end
253
200
 
254
- kinds = m.map { |r| r.to_h[:kind] }
201
+ # ── Multi-generative: chained generation ────────────────────────────────
255
202
 
256
- assert_includes kinds, "Deployment"
257
- assert_includes kinds, "Service"
258
- assert_includes kinds, "Ingress"
259
- assert_includes kinds, "HorizontalPodAutoscaler"
260
- assert_equal 4, m.to_a.size
203
+ it "chained_generative_middleware" do
204
+ m = Kube::Cluster::Manifest.new
205
+ m << Kube::Cluster["Deployment"].new {
206
+ metadata.name = "web"
207
+ metadata.namespace = "default"
208
+ metadata.labels = {
209
+ "app.kubernetes.io/expose": "app.example.com",
210
+ "app.kubernetes.io/autoscale": "2-10",
211
+ }
212
+ spec.selector.matchLabels = { app: "web" }
213
+ spec.template.metadata.labels = { app: "web" }
214
+ spec.template.spec.containers = [
215
+ { name: "web", image: "nginx", ports: [{ name: "http", containerPort: 8080 }] },
216
+ ]
217
+ }
218
+
219
+ stack = Middleware::Stack.new do
220
+ use Middleware::ServiceForDeployment # Deployment → +Service
221
+ use Middleware::IngressForService # Service with expose label → +Ingress
222
+ use Middleware::HPAForDeployment # Deployment with autoscale label → +HPA
261
223
  end
224
+ stack.call(m)
225
+
226
+ kinds = m.map { |r| r.to_h[:kind] }
227
+
228
+ m.to_a.size.should == 4
262
229
  end
263
230
  end
@@ -1,9 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- if __FILE__ == $0
4
- require "bundler/setup"
5
- require "kube/cluster"
6
- end
3
+ require "bundler/setup"
4
+ require "kube/cluster"
7
5
 
8
6
  module Kube
9
7
  module Cluster
@@ -36,66 +34,60 @@ module Kube
36
34
  end
37
35
  end
38
36
 
39
- if __FILE__ == $0
40
- require "minitest/autorun"
41
-
42
- class AnnotationsMiddlewareTest < Minitest::Test
43
- Middleware = Kube::Cluster::Middleware
37
+ test do
38
+ Middleware = Kube::Cluster::Middleware
44
39
 
45
- def test_adds_annotations
46
- m = manifest(Kube::Cluster["ConfigMap"].new { metadata.name = "test" })
40
+ it "adds_annotations" do
41
+ m = manifest(Kube::Cluster["ConfigMap"].new { metadata.name = "test" })
47
42
 
48
- Middleware::Annotations.new(
49
- "prometheus.io/scrape": "true",
50
- "prometheus.io/port": "9090",
51
- ).call(m)
43
+ Middleware::Annotations.new(
44
+ "prometheus.io/scrape": "true",
45
+ "prometheus.io/port": "9090",
46
+ ).call(m)
52
47
 
53
- annotations = m.resources.first.to_h.dig(:metadata, :annotations)
48
+ annotations = m.resources.first.to_h.dig(:metadata, :annotations)
54
49
 
55
- assert_equal "true", annotations[:"prometheus.io/scrape"]
56
- assert_equal "9090", annotations[:"prometheus.io/port"]
57
- end
50
+ annotations[:"prometheus.io/port"].should == "9090"
51
+ end
58
52
 
59
- def test_resource_annotations_override_middleware_defaults
60
- m = manifest(Kube::Cluster["ConfigMap"].new {
61
- metadata.name = "test"
62
- metadata.annotations = { "prometheus.io/port": "8080" }
63
- })
53
+ it "resource_annotations_override_middleware_defaults" do
54
+ m = manifest(Kube::Cluster["ConfigMap"].new {
55
+ metadata.name = "test"
56
+ metadata.annotations = { "prometheus.io/port": "8080" }
57
+ })
64
58
 
65
- Middleware::Annotations.new("prometheus.io/port": "9090").call(m)
66
- annotations = m.resources.first.to_h.dig(:metadata, :annotations)
59
+ Middleware::Annotations.new("prometheus.io/port": "9090").call(m)
60
+ annotations = m.resources.first.to_h.dig(:metadata, :annotations)
67
61
 
68
- assert_equal "8080", annotations[:"prometheus.io/port"]
69
- end
62
+ annotations[:"prometheus.io/port"].should == "8080"
63
+ end
70
64
 
71
- def test_preserves_existing_annotations
72
- m = manifest(Kube::Cluster["ConfigMap"].new {
73
- metadata.name = "test"
74
- metadata.annotations = { "custom/annotation": "keep" }
75
- })
65
+ it "preserves_existing_annotations" do
66
+ m = manifest(Kube::Cluster["ConfigMap"].new {
67
+ metadata.name = "test"
68
+ metadata.annotations = { "custom/annotation": "keep" }
69
+ })
76
70
 
77
- Middleware::Annotations.new("prometheus.io/scrape": "true").call(m)
78
- annotations = m.resources.first.to_h.dig(:metadata, :annotations)
71
+ Middleware::Annotations.new("prometheus.io/scrape": "true").call(m)
72
+ annotations = m.resources.first.to_h.dig(:metadata, :annotations)
79
73
 
80
- assert_equal "keep", annotations[:"custom/annotation"]
81
- assert_equal "true", annotations[:"prometheus.io/scrape"]
82
- end
74
+ annotations[:"prometheus.io/scrape"].should == "true"
75
+ end
83
76
 
84
- def test_converts_values_to_strings
85
- m = manifest(Kube::Cluster["ConfigMap"].new { metadata.name = "test" })
77
+ it "converts_values_to_strings" do
78
+ m = manifest(Kube::Cluster["ConfigMap"].new { metadata.name = "test" })
86
79
 
87
- Middleware::Annotations.new("prometheus.io/port": 9090).call(m)
88
- annotations = m.resources.first.to_h.dig(:metadata, :annotations)
80
+ Middleware::Annotations.new("prometheus.io/port": 9090).call(m)
81
+ annotations = m.resources.first.to_h.dig(:metadata, :annotations)
89
82
 
90
- assert_equal "9090", annotations[:"prometheus.io/port"]
91
- end
83
+ annotations[:"prometheus.io/port"].should == "9090"
84
+ end
92
85
 
93
- private
86
+ private
94
87
 
95
- def manifest(*resources)
96
- m = Kube::Cluster::Manifest.new
97
- resources.each { |r| m << r }
98
- m
99
- end
100
- end
88
+ def manifest(*resources)
89
+ m = Kube::Cluster::Manifest.new
90
+ resources.each { |r| m << r }
91
+ m
92
+ end
101
93
  end