manifests-vmc-plugin 0.6.2 → 0.6.3.rc1

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.
data/Rakefile CHANGED
@@ -1,38 +1,5 @@
1
1
  require "rake"
2
2
  require "rspec/core/rake_task"
3
3
 
4
- $LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
5
- require "manifests-vmc-plugin/version"
6
-
7
4
  RSpec::Core::RakeTask.new(:spec)
8
5
  task :default => :spec
9
-
10
- namespace :deploy do
11
- def last_staging_sha
12
- `git rev-parse latest-staging`.strip
13
- end
14
-
15
- def last_release_sha
16
- `git rev-parse latest-release`.strip
17
- end
18
-
19
- def last_staging_ref_was_released?
20
- last_staging_sha == last_release_sha
21
- end
22
-
23
- task :staging, :version do |_, args|
24
- sh "gem bump --push #{"--version #{args.version}" if args.version}" if last_staging_ref_was_released?
25
- sh "git tag -f latest-staging"
26
- sh "git push origin :latest-staging"
27
- sh "git push origin latest-staging"
28
- end
29
-
30
- task :gem do
31
- sh "git fetch"
32
- sh "git checkout #{last_staging_sha}"
33
- sh "gem release --tag"
34
- sh "git tag -f latest-release"
35
- sh "git push origin :latest-release"
36
- sh "git push origin latest-release"
37
- end
38
- end
@@ -186,6 +186,10 @@ module VMCManifests
186
186
  meta["command"] = cmd
187
187
  end
188
188
 
189
+ if buildpack = app.buildpack
190
+ meta["buildpack"] = buildpack
191
+ end
192
+
189
193
  meta
190
194
  end
191
195
 
@@ -1,4 +1,16 @@
1
1
  module VMCManifests
2
+ class InvalidManifest < RuntimeError
3
+ attr_reader :file
4
+
5
+ def initialize(file)
6
+ @file = file
7
+ end
8
+
9
+ def to_s
10
+ "Manifest file '#{@file}' is malformed."
11
+ end
12
+ end
13
+
2
14
  class CircularDependency < RuntimeError
3
15
  def initialize(app)
4
16
  @app = app
@@ -3,11 +3,14 @@ module VMCManifests
3
3
  # parse a manifest and merge with its inherited manifests
4
4
  def build(file)
5
5
  manifest = YAML.load_file file
6
+ raise InvalidManifest.new(file) unless manifest
6
7
 
7
8
  Array(manifest["inherit"]).each do |path|
8
9
  manifest = merge_parent(path, manifest)
9
10
  end
10
11
 
12
+ manifest.delete("inherit")
13
+
11
14
  manifest
12
15
  end
13
16
 
@@ -1,3 +1,3 @@
1
1
  module VMCManifests
2
- VERSION = "0.6.2".freeze
2
+ VERSION = "0.6.3.rc1".freeze
3
3
  end
@@ -0,0 +1,29 @@
1
+ require "spec_helper"
2
+
3
+ require "manifests-vmc-plugin/errors"
4
+
5
+
6
+ describe VMCManifests::InvalidManifest do
7
+ let(:file) { "/path/to/file" }
8
+
9
+ subject { described_class.new(file) }
10
+
11
+ describe "#initialize" do
12
+ it "is initialized with a file" do
13
+ described_class.new(file)
14
+ end
15
+ end
16
+
17
+ describe "#to_s" do
18
+ it "says the file is malformed" do
19
+ expect(subject.to_s).to eq(
20
+ "Manifest file '#{file}' is malformed.")
21
+ end
22
+ end
23
+
24
+ describe "#file" do
25
+ it "returns the file it was initialized with" do
26
+ expect(subject.file).to eq(file)
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,84 @@
1
+ require "spec_helper"
2
+
3
+ require "manifests-vmc-plugin/loader"
4
+ require "manifests-vmc-plugin/errors"
5
+
6
+
7
+ describe VMCManifests::Builder do
8
+ subject { VMCManifests::Loader.new(nil, nil) }
9
+
10
+ describe "#build" do
11
+ let(:file) { "manifest.yml" }
12
+
13
+ before do
14
+ FakeFS.activate!
15
+
16
+ File.open(file, "w") do |io|
17
+ io.write manifest
18
+ end
19
+ end
20
+
21
+ after do
22
+ FakeFS.deactivate!
23
+ FakeFS::FileSystem.clear
24
+ end
25
+
26
+ context "with a simple manifest" do
27
+ let(:manifest) do
28
+ <<EOF
29
+ ---
30
+ foo: bar
31
+ EOF
32
+ end
33
+
34
+ it "loads the manifest YAML" do
35
+ expect(subject.build(file)).to eq("foo" => "bar")
36
+ end
37
+ end
38
+
39
+ context "with a manifest that inherits another" do
40
+ let(:manifest) do
41
+ <<EOF
42
+ ---
43
+ inherit: other-manifest.yml
44
+ foo:
45
+ baz: c
46
+ EOF
47
+ end
48
+
49
+ before do
50
+ FakeFS.activate!
51
+
52
+ File.open("other-manifest.yml", "w") do |io|
53
+ io.write <<OTHER
54
+ ---
55
+ foo:
56
+ bar: a
57
+ baz: b
58
+ OTHER
59
+ end
60
+ end
61
+
62
+ it "merges itself into the parent, by depth" do
63
+ manifest = subject.build(file)
64
+ expect(manifest).to include(
65
+ "foo" => { "bar" => "a", "baz" => "c" })
66
+ end
67
+
68
+ it "does not include the 'inherit' attribute" do
69
+ manifest = subject.build(file)
70
+ expect(manifest).to_not include("inherit")
71
+ end
72
+ end
73
+
74
+ context "with an invalid manifest" do
75
+ let(:manifest) { "" }
76
+
77
+ it "raises an error" do
78
+ expect {
79
+ subject.build(file)
80
+ }.to raise_error(VMCManifests::InvalidManifest)
81
+ end
82
+ end
83
+ end
84
+ end
@@ -53,6 +53,7 @@ describe VMCManifests do
53
53
  :memory => 2048,
54
54
  :total_instances => 2,
55
55
  :command => "ruby main.rb",
56
+ :buildpack => "git://example.com/foo.git",
56
57
  :routes => [
57
58
  fake(:route,
58
59
  :host => "some-app-name",
@@ -83,6 +84,7 @@ describe VMCManifests do
83
84
  its(["path"]) { should eq "some-path" }
84
85
  its(["url"]) { should eq "some-app-name.${target-base}" }
85
86
  its(["command"]) { should eq "ruby main.rb" }
87
+ its(["buildpack"]) { should eq "git://example.com/foo.git" }
86
88
 
87
89
  it "contains the service information" do
88
90
  expect(subject["services"]).to be_a Hash
data/spec/spec_helper.rb CHANGED
@@ -6,6 +6,7 @@ require "cfoundry"
6
6
  require "webmock"
7
7
  require "cfoundry/test_support"
8
8
  require "vmc/test_support"
9
+ require "fakefs/safe"
9
10
 
10
11
  WebMock.disable_net_connect!
11
12
 
@@ -13,4 +14,4 @@ RSpec.configure do |c|
13
14
  c.include Fake::FakeMethods
14
15
  c.include VMC::TestSupport::InteractHelper
15
16
  c.mock_with :rr
16
- end
17
+ end
metadata CHANGED
@@ -1,13 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: manifests-vmc-plugin
3
3
  version: !ruby/object:Gem::Version
4
- hash: 3
5
- prerelease:
4
+ hash: -2300990570
5
+ prerelease: 6
6
6
  segments:
7
7
  - 0
8
8
  - 6
9
- - 2
10
- version: 0.6.2
9
+ - 3
10
+ - rc
11
+ - 1
12
+ version: 0.6.3.rc1
11
13
  platform: ruby
12
14
  authors:
13
15
  - Alex Suraci
@@ -15,20 +17,29 @@ autorequire:
15
17
  bindir: bin
16
18
  cert_chain: []
17
19
 
18
- date: 2013-03-05 00:00:00 Z
20
+ date: 2013-03-12 00:00:00 Z
19
21
  dependencies:
20
22
  - !ruby/object:Gem::Dependency
21
23
  version_requirements: &id001 !ruby/object:Gem::Requirement
22
24
  none: false
23
25
  requirements:
24
- - - ~>
26
+ - - ">="
25
27
  - !ruby/object:Gem::Version
26
- hash: 15
28
+ hash: -2300990558
27
29
  segments:
28
30
  - 0
29
31
  - 5
30
- - 2
31
- version: 0.5.2
32
+ - 3
33
+ - rc
34
+ - 3
35
+ version: 0.5.3.rc3
36
+ - - <
37
+ - !ruby/object:Gem::Version
38
+ hash: 7
39
+ segments:
40
+ - 0
41
+ - 6
42
+ version: "0.6"
32
43
  prerelease: false
33
44
  type: :runtime
34
45
  name: cfoundry
@@ -112,8 +123,10 @@ files:
112
123
  - lib/manifests-vmc-plugin/plugin.rb
113
124
  - lib/manifests-vmc-plugin/version.rb
114
125
  - lib/manifests-vmc-plugin.rb
126
+ - spec/manifests-vmc-plugin/errors_spec.rb
127
+ - spec/manifests-vmc-plugin/loader/builder_spec.rb
115
128
  - spec/manifests-vmc-plugin/loader/normalizer_spec.rb
116
- - spec/manifests-vmc-plugin/loader/plugin_spec.rb
129
+ - spec/manifests-vmc-plugin/plugin_spec.rb
117
130
  - spec/manifests-vmc-plugin_spec.rb
118
131
  - spec/spec_helper.rb
119
132
  homepage: http://cloudfoundry.com/
@@ -136,12 +149,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
136
149
  required_rubygems_version: !ruby/object:Gem::Requirement
137
150
  none: false
138
151
  requirements:
139
- - - ">="
152
+ - - ">"
140
153
  - !ruby/object:Gem::Version
141
- hash: 3
154
+ hash: 25
142
155
  segments:
143
- - 0
144
- version: "0"
156
+ - 1
157
+ - 3
158
+ - 1
159
+ version: 1.3.1
145
160
  requirements: []
146
161
 
147
162
  rubyforge_project: manifests-vmc-plugin
@@ -150,7 +165,9 @@ signing_key:
150
165
  specification_version: 3
151
166
  summary: Cloud Foundry automation via manifest documents.
152
167
  test_files:
168
+ - spec/manifests-vmc-plugin/errors_spec.rb
169
+ - spec/manifests-vmc-plugin/loader/builder_spec.rb
153
170
  - spec/manifests-vmc-plugin/loader/normalizer_spec.rb
154
- - spec/manifests-vmc-plugin/loader/plugin_spec.rb
171
+ - spec/manifests-vmc-plugin/plugin_spec.rb
155
172
  - spec/manifests-vmc-plugin_spec.rb
156
173
  - spec/spec_helper.rb