bosh-workspace 0.9.10 → 0.9.11

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
  SHA1:
3
- metadata.gz: 714566deb48e99bec64c59fc879cc8b000ead30b
4
- data.tar.gz: 1720922e945f0389deb3cc4f9e5f4ba29193b913
3
+ metadata.gz: 1bd19a741ce82f38591f6c4e87d8377949f5b625
4
+ data.tar.gz: b4d837f2f51fe22afa1b4f70cb1c5c42c3170812
5
5
  SHA512:
6
- metadata.gz: dc1f59f2d91ca1725e5b650aa7be4353edae04632c13c285cd8ada65db6a6e70614a600761811c72f5975e78cbfacd4afedb375f87ffb5c0856a6f83d88855ad
7
- data.tar.gz: dede9bcac998279618330764f421d110966105324616d792ea6988f0e0c5d7a665c78c55fb6e0db8915f42b7437ef124249ce57bdedd6fa8bff94b3c79aac9f3
6
+ metadata.gz: 1f7a58f26ce03271a1a98e133f3f1168b7b8321ba8fdacdb5d37690bb5447b40cf5df7bb45154440ef5e35910694420d00f9dcca9756749eb793ad371c2f5223
7
+ data.tar.gz: fac5312d74ac733a03669cf9306e82ceb0f232436006be9d1221376ea11c99d5b4f036ed87a2e08ab53c5d0053224fc304bf18eb9304d9666ffe5919e051bea1
@@ -19,12 +19,19 @@ module Bosh::Workspace
19
19
  end
20
20
 
21
21
  def require_project_deployment
22
- unless project_deployment?
23
- err("Deployment is not a project deployment: #{deployment}")
24
- end
22
+ no_deployment_err unless deployment
23
+ not_a_bosh_workspace_deployment unless project_deployment?
25
24
  validate_project_deployment
26
25
  end
27
26
 
27
+ def no_deployment_err
28
+ err "No deployment set"
29
+ end
30
+
31
+ def not_a_bosh_workspace_deployment
32
+ err "Deployment is not a bosh-workspace deployment: #{deployment}"
33
+ end
34
+
28
35
  def create_placeholder_deployment
29
36
  resolve_director_uuid
30
37
 
@@ -1,6 +1,6 @@
1
1
  module Bosh::Workspace
2
2
  class Release
3
- REFSPEC = ['HEAD:refs/remotes/origin/HEAD']
3
+ REFSPEC = ['HEAD:refs/remotes/origin/HEAD','*:refs/remotes/origin/*']
4
4
  attr_reader :name, :git_url, :repo_dir
5
5
 
6
6
  def initialize(release, releases_dir, credentials_callback, options = {})
@@ -39,7 +39,10 @@ module Bosh::Workspace
39
39
  end
40
40
 
41
41
  def ref
42
- @ref && repo.lookup(@ref).oid
42
+ return nil unless @ref
43
+ return repo.ref(@ref).target.target.oid if
44
+ Rugged::Reference.valid_name?(@ref) && repo.ref(@ref)
45
+ repo.lookup(@ref).oid
43
46
  end
44
47
 
45
48
  def release_dir
@@ -104,6 +107,8 @@ module Bosh::Workspace
104
107
  end
105
108
 
106
109
  def update_repo_with_ref(repository, ref)
110
+ # require 'pry'
111
+ # binding.pry
107
112
  repository.checkout_tree ref, strategy: :force
108
113
  repository.checkout ref, strategy: :force
109
114
  end
@@ -181,6 +186,7 @@ module Bosh::Workspace
181
186
  end
182
187
 
183
188
  def symlink_templates
189
+ return [symlink_target(templates_dir)] if File.symlink?(templates_dir)
184
190
  return [] unless File.exist?(templates_dir)
185
191
  Find.find(templates_dir)
186
192
  .select { |f| File.symlink?(f) }.map { |f| symlink_target(f) }
@@ -1,5 +1,5 @@
1
1
  module Bosh
2
2
  module Manifests
3
- VERSION = "0.9.10"
3
+ VERSION = "0.9.11"
4
4
  end
5
5
  end
Binary file
@@ -83,12 +83,23 @@ describe Bosh::Workspace::ProjectDeploymentHelper do
83
83
  let(:project_deployment_helper) { ProjectDeploymentHelperTester.new(director, deployment) }
84
84
 
85
85
  before do
86
- expect(subject).to receive(:project_deployment?)
86
+ allow(subject).to receive(:project_deployment?)
87
87
  .and_return(:is_project_deployment)
88
88
  end
89
89
 
90
+ context "no deployment is set" do
91
+ let(:deployment) { nil }
92
+
93
+ it "raises an help full error" do
94
+ expect{ subject.require_project_deployment }
95
+ .to raise_error /no deployment set/i
96
+ end
97
+ end
98
+
90
99
  context "project deployment" do
91
100
  let(:is_project_deployment) { true }
101
+ let(:deployment) { '.deployment/foo.yml' }
102
+
92
103
  it "validates & builds" do
93
104
  expect(subject).to receive(:validate_project_deployment)
94
105
  subject.require_project_deployment
data/spec/release_spec.rb CHANGED
@@ -210,6 +210,37 @@ module Bosh::Workspace
210
210
  end
211
211
  end
212
212
 
213
+ context "given a release that has the whole templates/ dir symlinked from a submodule" do
214
+ let(:repo) { extracted_asset_dir("supermodule-all-templates-symlinked", "supermodule-all-templates-symlinked-boshrelease-repo.zip") }
215
+ let(:subrepo) { extracted_asset_dir("submodule-boshrelease", "submodule-boshrelease-repo.zip") }
216
+ let(:name) { "supermodule-all-templates-symlinked" }
217
+ let(:version) { "1" }
218
+
219
+ before do
220
+ FileUtils.rm_rf(releases_dir)
221
+ allow_any_instance_of(Rugged::Submodule).to receive(:url).and_return(subrepo)
222
+ end
223
+
224
+ describe "#update_repo" do
225
+ subject { Rugged::Repository.new(File.join(releases_dir, name)) }
226
+
227
+ context "with templates in submodules" do
228
+ before do
229
+ release = load_release("name" => name, "version" => 1, "git" => repo)
230
+ end
231
+
232
+ it "clones + checks out required submodules" do
233
+ expect(subject.submodules["src/submodule"].workdir_oid)
234
+ .to eq "95eed8c967af969d659a766b0551a75a729a7b65"
235
+ end
236
+
237
+ it "doesn't clone/checkout extraneous submodules" do
238
+ expect(subject.submodules["src/other"].workdir_oid).to eq nil
239
+ end
240
+ end
241
+ end
242
+ end
243
+
213
244
  context "given a release with deprecated structure within 'releases' folder" do
214
245
  let(:repo) { extracted_asset_dir("foo", "foo-boshrelease-repo.zip") }
215
246
 
@@ -264,6 +295,53 @@ module Bosh::Workspace
264
295
  end
265
296
  end
266
297
 
298
+ context "specific ref from different branch with specific release" do
299
+ let(:release_data) do
300
+ {"name" => name, "version" => "9.1", "ref" => "9c899", "git" => repo}
301
+ end
302
+
303
+ it "checks out repo" do
304
+ release.update_repo
305
+ expect(subject).to match(/foo-9.1.yml/)
306
+ end
307
+ end
308
+
309
+ context "specific ref from different branch with latest release" do
310
+ let(:release_data) do
311
+ {"name" => name, "version" => "latest", "ref" => "9c899", "git" => repo}
312
+ end
313
+
314
+ it "checks out repo" do
315
+ release.update_repo
316
+ expect(subject).to match(/foo-9.2.yml/)
317
+ expect(subject).to_not match(/foo-10.yml/)
318
+ end
319
+ end
320
+
321
+ context "specific tag latest release" do
322
+ let(:release_data) do
323
+ {"name" => name, "version" => "latest", "ref" => "refs/tags/v8", "git" => repo}
324
+ end
325
+
326
+ it "checks out repo" do
327
+
328
+ release.update_repo
329
+ expect(subject).to match(/foo-8.yml/)
330
+ end
331
+ end
332
+
333
+ context "specific tag from different branch with latest release" do
334
+ let(:release_data) do
335
+ {"name" => name, "version" => "9.1", "ref" => "refs/tags/v9.1", "git" => repo}
336
+ end
337
+
338
+ it "checks out repo" do
339
+ release.update_repo
340
+ expect(subject).to match(/foo-9.1.yml/)
341
+ expect(subject).to_not match(/foo-9.2.yml/)
342
+ end
343
+ end
344
+
267
345
  context "updated version" do
268
346
  let(:version) { "11" }
269
347
 
@@ -452,10 +530,10 @@ module Bosh::Workspace
452
530
 
453
531
  context "correct checkout behavior:" do
454
532
  let(:release_data) { { "name" => name, "version" => version,
455
- "git" => repo, "ref" => :fooref } }
533
+ "git" => repo, "ref" => 'e0b35d6' } }
456
534
  let(:repo) { 'foo/bar' }
457
535
  let(:repository) do
458
- instance_double('Rugged::Repository', lookup: double(oid: :fooref))
536
+ instance_double('Rugged::Repository', lookup: double(oid: 'e0b35d6'))
459
537
  end
460
538
 
461
539
  describe "#update_repo_with_ref" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bosh-workspace
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.10
4
+ version: 0.9.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ruben Koster
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-23 00:00:00.000000000 Z
11
+ date: 2016-02-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bosh_cli
@@ -236,6 +236,7 @@ files:
236
236
  - spec/assets/manifests-repo/stubs/foobar
237
237
  - spec/assets/manifests-repo/templates/foo/bar.yml
238
238
  - spec/assets/submodule-boshrelease-repo.zip
239
+ - spec/assets/supermodule-all-templates-symlinked-boshrelease-repo.zip
239
240
  - spec/assets/supermodule-boshrelease-repo.zip
240
241
  - spec/assets/symlinkreplacement-boshrelease-repo.zip
241
242
  - spec/commands/deployment_patch_spec.rb
@@ -315,6 +316,7 @@ test_files:
315
316
  - spec/assets/manifests-repo/stubs/foobar
316
317
  - spec/assets/manifests-repo/templates/foo/bar.yml
317
318
  - spec/assets/submodule-boshrelease-repo.zip
319
+ - spec/assets/supermodule-all-templates-symlinked-boshrelease-repo.zip
318
320
  - spec/assets/supermodule-boshrelease-repo.zip
319
321
  - spec/assets/symlinkreplacement-boshrelease-repo.zip
320
322
  - spec/commands/deployment_patch_spec.rb