veslo 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -10,6 +10,8 @@ gem 'mixlib-cli'
10
10
  gem 'rest-client'
11
11
 
12
12
  group :development do
13
+ gem "rdoc"
14
+ gem "fakeweb"
13
15
  gem "rspec", "~> 2.3.0"
14
16
  gem "bundler", "~> 1.0.0"
15
17
  gem "jeweler", "~> 1.6.4"
data/Gemfile.lock CHANGED
@@ -2,6 +2,7 @@ GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
4
  diff-lcs (1.1.3)
5
+ fakeweb (1.3.0)
5
6
  git (1.2.5)
6
7
  jeweler (1.6.4)
7
8
  bundler (~> 1.0)
@@ -11,6 +12,7 @@ GEM
11
12
  mixlib-cli (1.2.2)
12
13
  rake (0.9.2.2)
13
14
  rcov (0.9.11)
15
+ rdoc (3.9.2)
14
16
  rest-client (1.6.7)
15
17
  mime-types (>= 1.16)
16
18
  rspec (2.3.0)
@@ -27,8 +29,10 @@ PLATFORMS
27
29
 
28
30
  DEPENDENCIES
29
31
  bundler (~> 1.0.0)
32
+ fakeweb
30
33
  jeweler (~> 1.6.4)
31
34
  mixlib-cli
32
35
  rcov
36
+ rdoc
33
37
  rest-client
34
38
  rspec (~> 2.3.0)
data/Rakefile CHANGED
@@ -39,8 +39,8 @@ end
39
39
 
40
40
  task :default => :spec
41
41
 
42
- require 'rake/rdoctask'
43
- Rake::RDocTask.new do |rdoc|
42
+ require 'rdoc/task'
43
+ RDoc::Task.new do |rdoc|
44
44
  version = File.exist?('VERSION') ? File.read('VERSION') : ""
45
45
 
46
46
  rdoc.rdoc_dir = 'rdoc'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.0.3
data/lib/veslo.rb CHANGED
@@ -17,7 +17,6 @@ class Veslo
17
17
  @server = RestClient::Resource.new(config[:server_url], :headers => {:accept => "application/octet"})
18
18
  parse_commands(argv)
19
19
  execute
20
- return 0
21
20
  end
22
21
 
23
22
  def parse_commands(commands)
@@ -34,7 +33,19 @@ class Veslo
34
33
  end
35
34
 
36
35
  def execute
37
- result = @server["#{@resource}/#{@name}"].get()
38
- puts result.to_str
36
+ begin
37
+ result = @server["#{@resource}/#{@name}"].get
38
+ $stdout.puts result.to_str
39
+ return 0
40
+ rescue RestClient::ExceptionWithResponse => e
41
+ case e.response.code
42
+ when 404
43
+ $stderr.puts("Requested resource not found")
44
+ return 1
45
+ else
46
+ $stderr.puts("Request failed with status: #{e.response.code}")
47
+ return 2
48
+ end
49
+ end
39
50
  end
40
51
  end
data/spec/veslo_spec.rb CHANGED
@@ -1,6 +1,20 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+ require 'fakeweb'
3
+ require 'stringio'
2
4
 
3
- describe "Veslo" do
5
+ def capture(*streams)
6
+ streams.map! { |stream| stream.to_s }
7
+ begin
8
+ result = StringIO.new
9
+ streams.each { |stream| eval "$#{stream} = result" }
10
+ yield
11
+ ensure
12
+ streams.each { |stream| eval("$#{stream} = #{stream.upcase}") }
13
+ end
14
+ result.string
15
+ end
16
+
17
+ describe "Veslo", "parsing arguments" do
4
18
  before :each do
5
19
  @veslo = Veslo.new
6
20
  end
@@ -25,3 +39,41 @@ describe "Veslo" do
25
39
  lambda{@veslo.parse_commands(["foobars", "get", "baz"])}.should raise_error(NotImplementedError)
26
40
  end
27
41
  end
42
+
43
+ describe "Veslo", "interacting with server" do
44
+ before :all do
45
+ @veslo = Veslo.new
46
+ @base_argv = ["-s", "http://example.com", "configurations"]
47
+ @get_existing_argv = @base_argv + ["get", "existing"]
48
+ @get_missing_argv = @base_argv + ["get", "missing"]
49
+ @get_error_argv = @base_argv + ["get", "error"]
50
+
51
+ FakeWeb.allow_net_connect = false
52
+ FakeWeb.register_uri(:get, "http://example.com/configurations/existing", :body => "Hello World!")
53
+ FakeWeb.register_uri(:get, "http://example.com/configurations/missing", :body => "Nothing to be found 'round here", :status => ["404", "Not Found"])
54
+ FakeWeb.register_uri(:get, "http://example.com/configurations/error", :body => "Internal Server Error", :status => ["500", "Internal Server Error"])
55
+
56
+ FakeWeb.register_uri(:put, "http://example.com/configurations/creating", :body => "Hello World!")
57
+ end
58
+
59
+ it "should get an existing configuration" do
60
+ @output = capture(:stdout) do
61
+ @veslo.run!(*@get_existing_argv)
62
+ end
63
+ @output.should == "Hello World!\n"
64
+ end
65
+
66
+ it "should tell if a configuration was not found" do
67
+ @output = capture(:stderr) do
68
+ @veslo.run!(*@get_missing_argv)
69
+ end
70
+ @output.should == "Requested resource not found\n"
71
+ end
72
+
73
+ it "should tell what happened in case of failure" do
74
+ @output = capture(:stderr) do
75
+ @veslo.run!(*@get_error_argv)
76
+ end
77
+ @output.should == "Request failed with status: 500\n"
78
+ end
79
+ end
data/veslo.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "veslo"
8
- s.version = "0.0.2"
8
+ s.version = "0.0.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Dimitri Krassovski"]
@@ -35,7 +35,7 @@ Gem::Specification.new do |s|
35
35
  s.homepage = "http://github.com/Wixpress/veslo"
36
36
  s.licenses = ["MIT"]
37
37
  s.require_paths = ["lib"]
38
- s.rubygems_version = "1.8.12"
38
+ s.rubygems_version = "1.8.10"
39
39
  s.summary = "Command line Noah client"
40
40
 
41
41
  if s.respond_to? :specification_version then
@@ -44,6 +44,8 @@ Gem::Specification.new do |s|
44
44
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
45
45
  s.add_runtime_dependency(%q<mixlib-cli>, [">= 0"])
46
46
  s.add_runtime_dependency(%q<rest-client>, [">= 0"])
47
+ s.add_development_dependency(%q<rdoc>, [">= 0"])
48
+ s.add_development_dependency(%q<fakeweb>, [">= 0"])
47
49
  s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
48
50
  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
49
51
  s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
@@ -51,6 +53,8 @@ Gem::Specification.new do |s|
51
53
  else
52
54
  s.add_dependency(%q<mixlib-cli>, [">= 0"])
53
55
  s.add_dependency(%q<rest-client>, [">= 0"])
56
+ s.add_dependency(%q<rdoc>, [">= 0"])
57
+ s.add_dependency(%q<fakeweb>, [">= 0"])
54
58
  s.add_dependency(%q<rspec>, ["~> 2.3.0"])
55
59
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
56
60
  s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
@@ -59,6 +63,8 @@ Gem::Specification.new do |s|
59
63
  else
60
64
  s.add_dependency(%q<mixlib-cli>, [">= 0"])
61
65
  s.add_dependency(%q<rest-client>, [">= 0"])
66
+ s.add_dependency(%q<rdoc>, [">= 0"])
67
+ s.add_dependency(%q<fakeweb>, [">= 0"])
62
68
  s.add_dependency(%q<rspec>, ["~> 2.3.0"])
63
69
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
64
70
  s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
metadata CHANGED
@@ -1,91 +1,150 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: veslo
3
- version: !ruby/object:Gem::Version
4
- version: 0.0.2
3
+ version: !ruby/object:Gem::Version
4
+ hash: 25
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 3
10
+ version: 0.0.3
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Dimitri Krassovski
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2011-12-05 00:00:00.000000000Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
17
+
18
+ date: 2011-12-05 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ requirement: &id001 !ruby/object:Gem::Requirement
22
+ none: false
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ hash: 3
27
+ segments:
28
+ - 0
29
+ version: "0"
30
+ version_requirements: *id001
15
31
  name: mixlib-cli
16
- requirement: &70228438425380 !ruby/object:Gem::Requirement
32
+ prerelease: false
33
+ type: :runtime
34
+ - !ruby/object:Gem::Dependency
35
+ requirement: &id002 !ruby/object:Gem::Requirement
17
36
  none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '0'
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ hash: 3
41
+ segments:
42
+ - 0
43
+ version: "0"
44
+ version_requirements: *id002
45
+ name: rest-client
46
+ prerelease: false
22
47
  type: :runtime
48
+ - !ruby/object:Gem::Dependency
49
+ requirement: &id003 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ hash: 3
55
+ segments:
56
+ - 0
57
+ version: "0"
58
+ version_requirements: *id003
59
+ name: rdoc
23
60
  prerelease: false
24
- version_requirements: *70228438425380
25
- - !ruby/object:Gem::Dependency
26
- name: rest-client
27
- requirement: &70228438424800 !ruby/object:Gem::Requirement
61
+ type: :development
62
+ - !ruby/object:Gem::Dependency
63
+ requirement: &id004 !ruby/object:Gem::Requirement
28
64
  none: false
29
- requirements:
30
- - - ! '>='
31
- - !ruby/object:Gem::Version
32
- version: '0'
33
- type: :runtime
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ hash: 3
69
+ segments:
70
+ - 0
71
+ version: "0"
72
+ version_requirements: *id004
73
+ name: fakeweb
34
74
  prerelease: false
35
- version_requirements: *70228438424800
36
- - !ruby/object:Gem::Dependency
37
- name: rspec
38
- requirement: &70228438424060 !ruby/object:Gem::Requirement
75
+ type: :development
76
+ - !ruby/object:Gem::Dependency
77
+ requirement: &id005 !ruby/object:Gem::Requirement
39
78
  none: false
40
- requirements:
79
+ requirements:
41
80
  - - ~>
42
- - !ruby/object:Gem::Version
81
+ - !ruby/object:Gem::Version
82
+ hash: 3
83
+ segments:
84
+ - 2
85
+ - 3
86
+ - 0
43
87
  version: 2.3.0
44
- type: :development
88
+ version_requirements: *id005
89
+ name: rspec
45
90
  prerelease: false
46
- version_requirements: *70228438424060
47
- - !ruby/object:Gem::Dependency
48
- name: bundler
49
- requirement: &70228438423480 !ruby/object:Gem::Requirement
91
+ type: :development
92
+ - !ruby/object:Gem::Dependency
93
+ requirement: &id006 !ruby/object:Gem::Requirement
50
94
  none: false
51
- requirements:
95
+ requirements:
52
96
  - - ~>
53
- - !ruby/object:Gem::Version
97
+ - !ruby/object:Gem::Version
98
+ hash: 23
99
+ segments:
100
+ - 1
101
+ - 0
102
+ - 0
54
103
  version: 1.0.0
55
- type: :development
104
+ version_requirements: *id006
105
+ name: bundler
56
106
  prerelease: false
57
- version_requirements: *70228438423480
58
- - !ruby/object:Gem::Dependency
59
- name: jeweler
60
- requirement: &70228438422880 !ruby/object:Gem::Requirement
107
+ type: :development
108
+ - !ruby/object:Gem::Dependency
109
+ requirement: &id007 !ruby/object:Gem::Requirement
61
110
  none: false
62
- requirements:
111
+ requirements:
63
112
  - - ~>
64
- - !ruby/object:Gem::Version
113
+ - !ruby/object:Gem::Version
114
+ hash: 7
115
+ segments:
116
+ - 1
117
+ - 6
118
+ - 4
65
119
  version: 1.6.4
66
- type: :development
120
+ version_requirements: *id007
121
+ name: jeweler
67
122
  prerelease: false
68
- version_requirements: *70228438422880
69
- - !ruby/object:Gem::Dependency
70
- name: rcov
71
- requirement: &70228438422020 !ruby/object:Gem::Requirement
72
- none: false
73
- requirements:
74
- - - ! '>='
75
- - !ruby/object:Gem::Version
76
- version: '0'
77
123
  type: :development
124
+ - !ruby/object:Gem::Dependency
125
+ requirement: &id008 !ruby/object:Gem::Requirement
126
+ none: false
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ hash: 3
131
+ segments:
132
+ - 0
133
+ version: "0"
134
+ version_requirements: *id008
135
+ name: rcov
78
136
  prerelease: false
79
- version_requirements: *70228438422020
137
+ type: :development
80
138
  description: Command line utility to manage Noah configurations
81
139
  email: dimitri@wix.com
82
- executables:
140
+ executables:
83
141
  - veslo
84
142
  extensions: []
85
- extra_rdoc_files:
143
+
144
+ extra_rdoc_files:
86
145
  - LICENSE.txt
87
146
  - README.rdoc
88
- files:
147
+ files:
89
148
  - .document
90
149
  - .rspec
91
150
  - Gemfile
@@ -100,31 +159,37 @@ files:
100
159
  - spec/veslo_spec.rb
101
160
  - veslo.gemspec
102
161
  homepage: http://github.com/Wixpress/veslo
103
- licenses:
162
+ licenses:
104
163
  - MIT
105
164
  post_install_message:
106
165
  rdoc_options: []
107
- require_paths:
166
+
167
+ require_paths:
108
168
  - lib
109
- required_ruby_version: !ruby/object:Gem::Requirement
169
+ required_ruby_version: !ruby/object:Gem::Requirement
110
170
  none: false
111
- requirements:
112
- - - ! '>='
113
- - !ruby/object:Gem::Version
114
- version: '0'
115
- segments:
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ hash: 3
175
+ segments:
116
176
  - 0
117
- hash: -469394592728239512
118
- required_rubygems_version: !ruby/object:Gem::Requirement
177
+ version: "0"
178
+ required_rubygems_version: !ruby/object:Gem::Requirement
119
179
  none: false
120
- requirements:
121
- - - ! '>='
122
- - !ruby/object:Gem::Version
123
- version: '0'
180
+ requirements:
181
+ - - ">="
182
+ - !ruby/object:Gem::Version
183
+ hash: 3
184
+ segments:
185
+ - 0
186
+ version: "0"
124
187
  requirements: []
188
+
125
189
  rubyforge_project:
126
- rubygems_version: 1.8.12
190
+ rubygems_version: 1.8.10
127
191
  signing_key:
128
192
  specification_version: 3
129
193
  summary: Command line Noah client
130
194
  test_files: []
195
+