bosh-workspace 0.9.10 → 0.9.11

Sign up to get free protection for your applications and to get access to all the features.
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