gordon 0.0.11 → 0.0.12

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 (46) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +22 -7
  3. data/gordon.gemspec +0 -1
  4. data/lib/gordon/application/templates/java_web_app.rb +6 -4
  5. data/lib/gordon/application/templates/ruby_standalone_app.rb +4 -6
  6. data/lib/gordon/application/templates/ruby_web_app.rb +4 -6
  7. data/lib/gordon/application/types.rb +1 -1
  8. data/lib/gordon/cli.rb +15 -11
  9. data/lib/gordon/cooker.rb +4 -4
  10. data/lib/gordon/cookery/application_user.rb +1 -1
  11. data/lib/gordon/cookery/common.rb +7 -6
  12. data/lib/gordon/cookery/dependency_resolver.rb +8 -2
  13. data/lib/gordon/cookery/http_server.rb +3 -1
  14. data/lib/gordon/cookery/init.rb +5 -3
  15. data/lib/gordon/cookery/java/common.rb +0 -1
  16. data/lib/gordon/cookery/ruby/common.rb +0 -8
  17. data/lib/gordon/cookery/standalone.rb +3 -1
  18. data/lib/gordon/cookery/web_server.rb +3 -1
  19. data/lib/gordon/env_vars.rb +11 -8
  20. data/lib/gordon/exceptions.rb +10 -0
  21. data/lib/gordon/options.rb +3 -4
  22. data/lib/gordon/process.rb +5 -1
  23. data/lib/gordon/recipe.rb +1 -1
  24. data/lib/gordon/skeleton/types.rb +7 -0
  25. data/lib/gordon/version.rb +1 -1
  26. data/lib/gordon.rb +1 -0
  27. data/spec/gordon/application/types_spec.rb +48 -0
  28. data/spec/gordon/cli_spec.rb +63 -3
  29. data/spec/gordon/cooker_spec.rb +81 -4
  30. data/spec/gordon/cookery/application_user_spec.rb +59 -2
  31. data/spec/gordon/cookery/common_spec.rb +72 -5
  32. data/spec/gordon/cookery/dependency_resolver_spec.rb +58 -1
  33. data/spec/gordon/cookery/http_server_spec.rb +26 -1
  34. data/spec/gordon/cookery/init_spec.rb +52 -2
  35. data/spec/gordon/cookery/java/common_spec.rb +6 -2
  36. data/spec/gordon/cookery/java/web_app_spec.rb +33 -1
  37. data/spec/gordon/cookery/ruby/common_spec.rb +6 -2
  38. data/spec/gordon/cookery/standalone_spec.rb +25 -1
  39. data/spec/gordon/cookery/web_server_spec.rb +33 -0
  40. data/spec/gordon/env_vars_spec.rb +14 -11
  41. data/spec/gordon/factory_spec.rb +15 -1
  42. data/spec/gordon/options_spec.rb +1 -1
  43. data/spec/gordon/process_spec.rb +18 -1
  44. data/spec/gordon/recipe_spec.rb +13 -2
  45. data/spec/gordon/skeleton/types_spec.rb +147 -7
  46. metadata +8 -17
@@ -2,7 +2,21 @@ require 'spec_helper'
2
2
 
3
3
  describe Gordon::Factory do
4
4
  describe 'creating a instance of some object' do
5
- pending
5
+ it 'returns a new instance of a skeleton' do
6
+ namespace, object_type = "Skeleton::Types", "systemd"
7
+
8
+ result = described_class.create_instance(namespace, object_type)
9
+
10
+ expect(result).to be_instance_of(Gordon::Skeleton::Types::Systemd)
11
+ end
12
+
13
+ it 'returns a new instance of a application type' do
14
+ namespace, object_type = "Application::Types", "ruby_web_app"
15
+
16
+ result = described_class.create_instance(namespace, object_type)
17
+
18
+ expect(result).to be_instance_of(Gordon::Application::Types::RubyWebApp)
19
+ end
6
20
  end
7
21
  end
8
22
 
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Gordon::Options do
4
- describe 'debugging' do
4
+ describe 'mapping default accessors' do
5
5
  pending
6
6
  end
7
7
  end
@@ -1,8 +1,25 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Gordon::Process do
4
+ let(:command) { 'uname -a' }
5
+ let(:pid) { 3329 }
6
+
4
7
  describe 'running a command' do
5
- pending
8
+ before :each do
9
+ expect(Process).to receive(:spawn).with(command, out: $stdout, err: $stderr).and_return(pid)
10
+ end
11
+
12
+ it 'spawns and waits for execution' do
13
+ expect(Process).to receive(:wait2).with(pid).and_return([ pid, 0 ])
14
+
15
+ expect(described_class.run(command)).to be_truthy
16
+ end
17
+
18
+ it 'raises error if call returns one' do
19
+ expect(Process).to receive(:wait2).with(pid).and_return([ pid, 1 ])
20
+
21
+ expect{ described_class.run(command) }.to raise_error
22
+ end
6
23
  end
7
24
  end
8
25
 
@@ -1,8 +1,17 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Gordon::Recipe do
4
+ let(:options) { instance_double Gordon::Options, app_type: :ruby_web_app }
5
+ let(:app_type) { Gordon::Application::Types::RubyWebApp.new }
6
+
7
+ subject do
8
+ described_class.new(options)
9
+ end
10
+
4
11
  describe 'creating a new instance' do
5
- pending
12
+ it 'maps a new instance of application' do
13
+ expect(subject.application).to be_instance_of(app_type.class)
14
+ end
6
15
  end
7
16
 
8
17
  # TODO: check if is really needed
@@ -16,7 +25,9 @@ describe Gordon::Recipe do
16
25
  end
17
26
 
18
27
  describe 'getting application template path' do
19
- pending
28
+ it 'returns expected path based on app type' do
29
+ expect(subject.application_template_path).to eq(app_type.get_template_path)
30
+ end
20
31
  end
21
32
  end
22
33
 
@@ -1,29 +1,169 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Gordon::Skeleton::Types::Base do
4
- pending
4
+ subject do
5
+ class MyExample
6
+ include Gordon::Skeleton::Types::Base
7
+
8
+ def get_os_package_map ; { centos: :my_example, debian: :my_example } ; end
9
+
10
+ def get_default_path ; '/a/path' ; end
11
+ end
12
+
13
+ MyExample.new
14
+ end
15
+
16
+ describe 'getting path' do
17
+ it 'returns default path based on class' do
18
+ expect(subject.path).to eq('/a/path/')
19
+ end
20
+
21
+ it 'returns a custom path' do
22
+ expect(subject.path('customized')).to eq('/a/path/customized')
23
+ end
24
+ end
25
+
26
+ describe 'getting os package name' do
27
+ it 'returns value for mapped operational systems' do
28
+ %w(centos debian).each do |os|
29
+ expected = subject.get_os_package_map[os.to_sym]
30
+ expect(subject.get_os_package_name(os.to_sym)).to eq(expected)
31
+ end
32
+ end
33
+
34
+ it 'raises error if not found' do
35
+ expect { subject.get_os_package_name(:freebsd) }.to raise_exception(Gordon::Exceptions::OperationalSystemNotMapped)
36
+ end
37
+ end
38
+
39
+ describe 'checking if requires app name' do
40
+ it 'returns false' do
41
+ expect(subject.requires_app_name?).to be_falsey
42
+ end
43
+ end
5
44
  end
6
45
 
7
46
  describe Gordon::Skeleton::Types::Nginx do
8
- pending
47
+ describe 'getting os package map' do
48
+ it 'returns a map' do
49
+ map = { centos: :nginx, debian: :nginx }
50
+
51
+ expect(subject.get_os_package_map).to eq(map)
52
+ end
53
+ end
54
+
55
+ describe 'getting default path' do
56
+ it 'returns a path' do
57
+ expect(subject.get_default_path).to eq('/usr/share/nginx/html')
58
+ end
59
+ end
60
+
61
+ describe 'checking if requires app name' do
62
+ it 'returns false' do
63
+ expect(subject.requires_app_name?).to be_falsey
64
+ end
65
+ end
9
66
  end
10
67
 
11
68
  describe Gordon::Skeleton::Types::Apache do
12
- pending
69
+ describe 'getting os package map' do
70
+ it 'returns a map' do
71
+ map = { centos: :httpd, debian: :apache2 }
72
+
73
+ expect(subject.get_os_package_map).to eq(map)
74
+ end
75
+ end
76
+
77
+ describe 'getting default path' do
78
+ it 'returns a path' do
79
+ expect(subject.get_default_path).to eq('/var/www/html')
80
+ end
81
+ end
82
+
83
+ describe 'checking if requires app name' do
84
+ it 'returns false' do
85
+ expect(subject.requires_app_name?).to be_falsey
86
+ end
87
+ end
13
88
  end
14
89
 
15
90
  describe Gordon::Skeleton::Types::Tomcat do
16
- pending
91
+ describe 'getting os package map' do
92
+ it 'returns a map' do
93
+ map = { centos: :tomcat, debian: :tomcat7 }
94
+
95
+ expect(subject.get_os_package_map).to eq(map)
96
+ end
97
+ end
98
+
99
+ describe 'getting default path' do
100
+ it 'returns a path' do
101
+ expect(subject.get_default_path).to eq('/var/lib/tomcat/webapps')
102
+ end
103
+ end
104
+
105
+ describe 'checking if requires app name' do
106
+ it 'returns false' do
107
+ expect(subject.requires_app_name?).to be_falsey
108
+ end
109
+ end
17
110
  end
18
111
 
19
112
  describe Gordon::Skeleton::Types::Jetty do
20
- pending
113
+ describe 'getting os package map' do
114
+ it 'returns a map' do
115
+ map = { centos: :'jetty-server', debian: :jetty }
116
+
117
+ expect(subject.get_os_package_map).to eq(map)
118
+ end
119
+ end
120
+
121
+ describe 'getting default path' do
122
+ it 'returns a path' do
123
+ expect(subject.get_default_path).to eq('/var/lib/jetty/webapps')
124
+ end
125
+ end
126
+
127
+ describe 'checking if requires app name' do
128
+ it 'returns false' do
129
+ expect(subject.requires_app_name?).to be_falsey
130
+ end
131
+ end
21
132
  end
22
133
 
23
134
  describe Gordon::Skeleton::Types::Systemd do
24
- pending
135
+ describe 'getting os package map' do
136
+ it 'returns a map' do
137
+ map = { centos: :systemd, debian: :systemd }
138
+
139
+ expect(subject.get_os_package_map).to eq(map)
140
+ end
141
+ end
142
+
143
+ describe 'getting default path' do
144
+ it 'returns a path' do
145
+ expect(subject.get_default_path).to eq('/usr/lib/systemd/system')
146
+ end
147
+ end
148
+
149
+ describe 'checking if requires app name' do
150
+ it 'returns false' do
151
+ expect(subject.requires_app_name?).to be_falsey
152
+ end
153
+ end
25
154
  end
26
155
 
27
156
  describe Gordon::Skeleton::Types::Misc do
28
- pending
157
+ describe 'getting default path' do
158
+ it 'returns a path' do
159
+ expect(subject.get_default_path).to eq('/opt')
160
+ end
161
+ end
162
+
163
+ describe 'checking if requires app name' do
164
+ it 'returns true' do
165
+ expect(subject.requires_app_name?).to be_truthy
166
+ end
167
+ end
29
168
  end
169
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gordon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.11
4
+ version: 0.0.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcelo Pinheiro
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-20 00:00:00.000000000 Z
11
+ date: 2015-02-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -38,20 +38,6 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: bundler
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: fpm-cookery
57
43
  requirement: !ruby/object:Gem::Requirement
@@ -116,6 +102,7 @@ files:
116
102
  - lib/gordon/cookery/standalone.rb
117
103
  - lib/gordon/cookery/web_server.rb
118
104
  - lib/gordon/env_vars.rb
105
+ - lib/gordon/exceptions.rb
119
106
  - lib/gordon/factory.rb
120
107
  - lib/gordon/options.rb
121
108
  - lib/gordon/process.rb
@@ -126,6 +113,7 @@ files:
126
113
  - spec/gordon/application/templates/java_web_app_spec.rb
127
114
  - spec/gordon/application/templates/ruby_standalone_app_spec.rb
128
115
  - spec/gordon/application/templates/ruby_web_app_spec.rb
116
+ - spec/gordon/application/types_spec.rb
129
117
  - spec/gordon/cli_spec.rb
130
118
  - spec/gordon/cooker_spec.rb
131
119
  - spec/gordon/cookery/application_user_spec.rb
@@ -137,6 +125,7 @@ files:
137
125
  - spec/gordon/cookery/java/web_app_spec.rb
138
126
  - spec/gordon/cookery/ruby/common_spec.rb
139
127
  - spec/gordon/cookery/standalone_spec.rb
128
+ - spec/gordon/cookery/web_server_spec.rb
140
129
  - spec/gordon/env_vars_spec.rb
141
130
  - spec/gordon/factory_spec.rb
142
131
  - spec/gordon/options_spec.rb
@@ -164,7 +153,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
164
153
  version: '0'
165
154
  requirements: []
166
155
  rubyforge_project:
167
- rubygems_version: 2.4.5
156
+ rubygems_version: 2.4.6
168
157
  signing_key:
169
158
  specification_version: 4
170
159
  summary: A tool to create application OS packages
@@ -172,6 +161,7 @@ test_files:
172
161
  - spec/gordon/application/templates/java_web_app_spec.rb
173
162
  - spec/gordon/application/templates/ruby_standalone_app_spec.rb
174
163
  - spec/gordon/application/templates/ruby_web_app_spec.rb
164
+ - spec/gordon/application/types_spec.rb
175
165
  - spec/gordon/cli_spec.rb
176
166
  - spec/gordon/cooker_spec.rb
177
167
  - spec/gordon/cookery/application_user_spec.rb
@@ -183,6 +173,7 @@ test_files:
183
173
  - spec/gordon/cookery/java/web_app_spec.rb
184
174
  - spec/gordon/cookery/ruby/common_spec.rb
185
175
  - spec/gordon/cookery/standalone_spec.rb
176
+ - spec/gordon/cookery/web_server_spec.rb
186
177
  - spec/gordon/env_vars_spec.rb
187
178
  - spec/gordon/factory_spec.rb
188
179
  - spec/gordon/options_spec.rb