fcrepo_wrapper 0.2.1 → 0.3.0

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: 27b5f9a48873be7d333a9a7e0046bbe6996aeb23
4
- data.tar.gz: 4026d1885222e7b1ce2e9d875b7bde905e81d8d9
3
+ metadata.gz: 32ab8e3c5f45580a33497d826bf7b1b709b51780
4
+ data.tar.gz: 40bf4c99f37dfb5dd1e0a3c669e656d4a7757831
5
5
  SHA512:
6
- metadata.gz: 31439fadf4af4ab257100f6f049d9428746928cffa0e91f85cb6b63e7dc4ed086aad442db88a6cf19fef87bf9919c5f5875e4ee36bcd2682323d7b48a7b6cb77
7
- data.tar.gz: e0fcc2b9177deffb03201ad694a45ce972512124ec414d7fcddd71a9afd3f817ff0dc4ebab2e57444aab3325f4acf93df2a2f0dfa1954dc9bbb3289cc7f24230
6
+ metadata.gz: 7bb4083970b80e8c68b3421d93b2af097d77d2629fcbcfa1ea655f0a537d42242705e347b83893550fdba64380f6c858c09ac5827c21b93b1a6ad68dc673e9f9
7
+ data.tar.gz: 4140735815d94087e4f7b93adbe981fdbb99e33ed7e7fe75720db8c173e64be028dd5927615d4badef76e5816207f204e1561c559a1b35fedffdaee34c6cc16c
data/.gitignore CHANGED
@@ -33,3 +33,5 @@ build/
33
33
 
34
34
  # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
35
35
  .rvmrc
36
+
37
+ /fcrepo4-data
data/README.md CHANGED
@@ -11,5 +11,5 @@ end
11
11
  ## Basic Options
12
12
 
13
13
  ```ruby
14
- FcrepoWrapper.wrap port: 8983, verbose: true, managed: true
14
+ FcrepoWrapper.wrap port: 8983, verbose: true, managed: true
15
15
  ```
data/exe/fcrepo_wrapper CHANGED
@@ -8,6 +8,10 @@ options = {}
8
8
  OptionParser.new do |opts|
9
9
  opts.banner = "Usage: fcrepo_wrapper [options]"
10
10
 
11
+ opts.on("--config", "Load configuration from a file") do |v|
12
+ options[:config] = v
13
+ end
14
+
11
15
  opts.on("-v", "--[no-]verbose", "Run verbosely") do |v|
12
16
  options[:verbose] = v
13
17
  end
@@ -20,7 +24,7 @@ OptionParser.new do |opts|
20
24
  options[:version] = v
21
25
  end
22
26
 
23
- opts.on("-pPORT", "--port PORT", "Specify the port fcrepo should run at (default: 8983)") do |p|
27
+ opts.on("-pPORT", "--port PORT", "Specify the port fcrepo should run at (default: 8080)") do |p|
24
28
  if p == 'random'
25
29
  options[:port] = nil
26
30
  else
@@ -1,4 +1,8 @@
1
1
  require 'fcrepo_wrapper/version'
2
+ require 'fcrepo_wrapper/configuration'
3
+ require 'fcrepo_wrapper/settings'
4
+ require 'fcrepo_wrapper/downloader'
5
+ require 'fcrepo_wrapper/md5'
2
6
  require 'fcrepo_wrapper/instance'
3
7
 
4
8
  module FcrepoWrapper
@@ -0,0 +1,147 @@
1
+ module FcrepoWrapper
2
+ class Configuration
3
+ attr_reader :options
4
+ def initialize(options)
5
+ @options = read_config(options[:config], options[:verbose])
6
+ .merge options
7
+ end
8
+
9
+ def instance_dir
10
+ @instance_dir ||= options.fetch(:instance_dir, File.join(Dir.tmpdir, File.basename(download_url, ".jar")))
11
+ end
12
+
13
+ def download_url
14
+ @download_url ||= options.fetch(:url, default_download_url)
15
+ end
16
+
17
+ def default_download_path
18
+ File.join(download_dir, File.basename(download_url))
19
+ end
20
+
21
+ def download_path
22
+ @download_path ||= options.fetch(:download_path, default_download_path)
23
+ end
24
+
25
+ def md5sum_path
26
+ File.join(download_dir, File.basename(md5url))
27
+ end
28
+
29
+ def tmp_save_dir
30
+ @tmp_save_dir ||= Dir.mktmpdir
31
+ end
32
+
33
+ def version
34
+ @version ||= options.fetch(:version, FcrepoWrapper.default_fcrepo_version)
35
+ end
36
+
37
+ def version_file
38
+ options.fetch(:version_file, File.join(instance_dir, "VERSION"))
39
+ end
40
+
41
+ def binary_path
42
+ File.join(instance_dir, "fcrepo-webapp-#{version}-jetty-console.jar")
43
+ end
44
+
45
+ def md5url
46
+ "https://github.com/fcrepo4/fcrepo4/releases/download/fcrepo-#{version}/fcrepo-webapp-#{version}-jetty-console.jar.md5"
47
+ end
48
+
49
+ def fcrepo_options
50
+ options.fetch(:fcrepo_options, headless: nil)
51
+ end
52
+
53
+ def env
54
+ options.fetch(:env, {})
55
+ end
56
+
57
+ def verbose?
58
+ !!options.fetch(:verbose, false)
59
+ end
60
+
61
+ def managed?
62
+ File.exists?(instance_dir)
63
+ end
64
+
65
+ # @return a list of arguments to pass to the JVM
66
+ def java_options
67
+ options.fetch(:java_options, default_java_options) + ['-jar', binary_path]
68
+ end
69
+
70
+ def default_java_options
71
+ ['-Dfcrepo.log.http.api=WARN',
72
+ # To avoid "WARN: The namespace of predicate:
73
+ # info:fedora/fedora-system:def/relations-external#isPartOf
74
+ # was possibly misinterpreted as:
75
+ # info:fedora/fedora-system:def/relations-external#."
76
+ '-Dfcrepo.log.kernel=ERROR',
77
+ ("-Dfcrepo.home=#{fcrepo_home_dir}" if fcrepo_home_dir),
78
+ ("-Dfcrepo.spring.jms.configuration=#{spring_noop_file}" unless jms_enabled?),
79
+ '-Xmx512m'].compact
80
+ end
81
+
82
+ def fcrepo_home_dir
83
+ options[:fcrepo_home_dir]
84
+ end
85
+
86
+ def port
87
+ # Check if the port option has been explicitly set to nil.
88
+ # this means to start fcrepo_wrapper on a random open port
89
+ return nil if options.key?(:port) && !options[:port]
90
+ options[:port] || FcrepoWrapper.default_instance_options[:port]
91
+ end
92
+
93
+ private
94
+
95
+ def read_config(config_file, verbose)
96
+ default_configuration_paths.each do |p|
97
+ path = File.expand_path(p)
98
+ config_file ||= path if File.exist? path
99
+ end
100
+
101
+ unless config_file
102
+ $stdout.puts "No config specified" if verbose
103
+ return {}
104
+ end
105
+
106
+ $stdout.puts "Loading configuration from #{config_file}" if verbose
107
+ config = YAML.load(ERB.new(IO.read(config_file)).result(binding))
108
+ unless config
109
+ $stderr.puts "Unable to parse config #{config_file}" if verbose
110
+ return {}
111
+ end
112
+ config.each_with_object({}) { |(k, v), h| h[k.to_sym] = v.to_s }
113
+ end
114
+
115
+ def default_configuration_paths
116
+ ['.fcrepo_wrapper', '~/.fcrepo_wrapper']
117
+ end
118
+
119
+ def download_dir
120
+ @download_dir ||= options.fetch(:download_dir, Dir.tmpdir)
121
+ FileUtils.mkdir_p @download_dir
122
+ @download_dir
123
+ end
124
+
125
+ def default_download_url
126
+ @default_url ||= "https://github.com/fcrepo4/fcrepo4/releases/download/fcrepo-#{version}/fcrepo-webapp-#{version}-jetty-console.jar"
127
+ end
128
+
129
+ def random_open_port
130
+ socket = Socket.new(:INET, :STREAM, 0)
131
+ begin
132
+ socket.bind(Addrinfo.tcp('127.0.0.1', 0))
133
+ socket.local_address.ip_port
134
+ ensure
135
+ socket.close
136
+ end
137
+ end
138
+
139
+ def spring_noop_file
140
+ 'file://' + File.expand_path('../../../data/spring-noop.xml', __FILE__)
141
+ end
142
+
143
+ def jms_enabled?
144
+ options.fetch(:enable_jms, true)
145
+ end
146
+ end
147
+ end
@@ -0,0 +1,18 @@
1
+ module FcrepoWrapper
2
+ class Downloader
3
+ def self.fetch_with_progressbar(url, output)
4
+ pbar = ProgressBar.create(title: File.basename(url), total: nil, format: "%t: |%B| %p%% (%e )")
5
+ open(url, content_length_proc: lambda do|t|
6
+ if t && 0 < t
7
+ pbar.total = t
8
+ end
9
+ end,
10
+ progress_proc: lambda do|s|
11
+ pbar.progress = s
12
+ end) do |io|
13
+ IO.copy_stream(io, output)
14
+ end
15
+ end
16
+ end
17
+ end
18
+
@@ -11,7 +11,7 @@ require 'tmpdir'
11
11
 
12
12
  module FcrepoWrapper
13
13
  class Instance
14
- attr_reader :options, :pid
14
+ attr_reader :config, :pid
15
15
 
16
16
  ##
17
17
  # @param [Hash] options
@@ -29,7 +29,11 @@ module FcrepoWrapper
29
29
  # @option options [Hash] :fcrepo_options
30
30
  # @option options [Hash] :env
31
31
  def initialize(options = {})
32
- @options = options
32
+ @config = Settings.new(Configuration.new(options))
33
+ end
34
+
35
+ def md5
36
+ @md5 ||= MD5.new(config)
33
37
  end
34
38
 
35
39
  def wrap(&_block)
@@ -40,30 +44,9 @@ module FcrepoWrapper
40
44
  stop
41
45
  end
42
46
 
43
- # @return a list of arguments to pass to the JVM
44
- def java_options
45
- options.fetch(:java_options, default_java_options) + ['-jar', binary_path]
46
- end
47
-
48
- def default_java_options
49
- ['-Dfcrepo.log.http.api=WARN',
50
- # To avoid "WARN: The namespace of predicate:
51
- # info:fedora/fedora-system:def/relations-external#isPartOf
52
- # was possibly misinterpreted as:
53
- # info:fedora/fedora-system:def/relations-external#."
54
- '-Dfcrepo.log.kernel=ERROR',
55
- ("-Dfcrepo.home=#{fcrepo_home_dir}" if fcrepo_home_dir),
56
- ("-Dfcrepo.spring.jms.configuration=#{spring_noop_file}" unless jms_enabled?),
57
- '-Xmx512m'].compact
58
- end
59
-
60
- def fcrepo_home_dir
61
- options[:fcrepo_home_dir]
62
- end
63
-
64
47
  def process_arguments
65
- ["java"] + java_options +
66
- fcrepo_options.merge(port: port)
48
+ ["java"] + config.java_options +
49
+ config.fcrepo_options.merge(port: port)
67
50
  .map { |k, v| ["--#{k}", "#{v}"].reject(&:empty?) }.flatten
68
51
  end
69
52
 
@@ -71,8 +54,8 @@ module FcrepoWrapper
71
54
  # Start fcrepo and wait for it to become available
72
55
  def start
73
56
  extract_and_configure
74
- if managed?
75
- @pid = spawn(env, *process_arguments)
57
+ if config.managed?
58
+ @pid = spawn(config.env, *process_arguments)
76
59
 
77
60
  # Wait for fcrepo to start
78
61
  while !status
@@ -84,7 +67,7 @@ module FcrepoWrapper
84
67
  ##
85
68
  # Stop fcrepo and wait for it to finish exiting
86
69
  def stop
87
- if managed? && started?
70
+ if config.managed? && started?
88
71
  Process.kill 'HUP', pid
89
72
 
90
73
  # Wait for fcrepo to stop
@@ -101,7 +84,7 @@ module FcrepoWrapper
101
84
  ##
102
85
  # Stop fcrepo and wait for it to finish exiting
103
86
  def restart
104
- if managed? && started?
87
+ if config.managed? && started?
105
88
  stop
106
89
  start
107
90
  end
@@ -110,12 +93,16 @@ module FcrepoWrapper
110
93
  ##
111
94
  # Check the status of a managed fcrepo service
112
95
  def status
113
- return true unless managed?
96
+ return true unless config.managed?
114
97
  return false if pid.nil?
115
98
 
116
99
  begin
117
100
  Process.getpgid(pid)
101
+ rescue Errno::ESRCH
102
+ return false
103
+ end
118
104
 
105
+ begin
119
106
  TCPSocket.new(host, port).close
120
107
 
121
108
  Net::HTTP.start(host, port) do |http|
@@ -123,7 +110,7 @@ module FcrepoWrapper
123
110
  end
124
111
 
125
112
  true
126
- rescue Errno::ESRCH, Errno::ECONNREFUSED
113
+ rescue Errno::ECONNREFUSED, Errno::EINVAL
127
114
  false
128
115
  end
129
116
  end
@@ -140,11 +127,18 @@ module FcrepoWrapper
140
127
  '127.0.0.1'
141
128
  end
142
129
 
143
- ##
144
- # Get the port this fcrepo instance is running at
145
130
  def port
146
- @port ||= options[:port]
147
- @port ||= random_open_port.to_s
131
+ config.port
132
+ end
133
+
134
+ ##
135
+ # Get a (likely) URL to the fcrepo instance
136
+ def url
137
+ "http://#{host}:#{port}/"
138
+ end
139
+
140
+ def version
141
+ config.version
148
142
  end
149
143
 
150
144
  ##
@@ -152,32 +146,22 @@ module FcrepoWrapper
152
146
  def clean!
153
147
  stop
154
148
  remove_instance_dir!
155
- FileUtils.remove_entry(download_path) if File.exists?(download_path)
156
- FileUtils.remove_entry(tmp_save_dir, true) if File.exists? tmp_save_dir
157
- FileUtils.remove_entry(md5sum_path) if File.exists? md5sum_path
158
- FileUtils.remove_entry(version_file) if File.exists? version_file
149
+ FileUtils.remove_entry(config.download_path) if File.exists?(config.download_path)
150
+ FileUtils.remove_entry(config.tmp_save_dir, true) if File.exists? config.tmp_save_dir
151
+ md5.clean!
152
+ FileUtils.remove_entry(config.version_file) if File.exists? config.version_file
159
153
  end
160
154
 
161
155
  ##
162
156
  # Clean up any files in the fcrepo instance dir
163
157
  def remove_instance_dir!
164
- FileUtils.remove_entry(instance_dir, true) if File.exists? instance_dir
165
- end
166
-
167
- ##
168
- # Get a (likely) URL to the fcrepo instance
169
- def url
170
- "http://#{host}:#{port}/"
158
+ FileUtils.remove_entry(config.instance_dir, true) if File.exists? config.instance_dir
171
159
  end
172
160
 
173
161
  def configure
174
162
  raise_error_unless_extracted
175
163
  end
176
164
 
177
- def instance_dir
178
- @instance_dir ||= options.fetch(:instance_dir, File.join(Dir.tmpdir, File.basename(download_url, ".jar")))
179
- end
180
-
181
165
  def extract_and_configure
182
166
  instance_dir = extract
183
167
  configure
@@ -188,164 +172,46 @@ module FcrepoWrapper
188
172
  # Does noting if fcrepo already exists at instance_dir
189
173
  # @return [String] instance_dir Directory where fcrepo has been installed
190
174
  def extract
191
- return instance_dir if extracted?
175
+ return config.instance_dir if extracted?
192
176
 
193
177
  jar_file = download
194
178
 
195
- FileUtils.mkdir_p instance_dir
196
- FileUtils.cp jar_file, binary_path
197
- self.extracted_version = version
179
+ FileUtils.mkdir_p config.instance_dir
180
+ FileUtils.cp jar_file, config.binary_path
181
+ self.extracted_version = config.version
198
182
 
199
- instance_dir
183
+ config.instance_dir
200
184
  end
201
185
  # rubocop:enable Lint/RescueException
202
186
 
203
- def version
204
- @version ||= options.fetch(:version, FcrepoWrapper.default_fcrepo_version)
205
- end
206
-
207
187
  protected
208
188
 
209
189
  def extracted?
210
- File.exists?(binary_path) && extracted_version == version
190
+ File.exists?(config.binary_path) && extracted_version == config.version
211
191
  end
212
192
 
213
193
  def download
214
- unless File.exists?(download_path) && validate?(download_path)
215
- fetch_with_progressbar download_url, download_path
216
- validate! download_path
217
- end
218
- download_path
219
- end
220
-
221
- def validate?(file)
222
- return true if options[:validate] == false
223
-
224
- Digest::MD5.file(file).hexdigest == expected_md5sum
225
- end
226
-
227
- def validate!(file)
228
- unless validate? file
229
- raise "MD5 mismatch" unless options[:ignore_md5sum]
194
+ unless File.exists?(config.download_path) && validate?(config.download_path)
195
+ Downloader.fetch_with_progressbar config.download_url, config.download_path
196
+ validate! config.download_path
230
197
  end
198
+ config.download_path
231
199
  end
232
200
 
233
201
  private
234
202
 
235
- def download_url
236
- @download_url ||= options.fetch(:url, default_download_url)
237
- end
238
-
239
- def default_download_url
240
- @default_url ||= "https://github.com/fcrepo4/fcrepo4/releases/download/fcrepo-#{version}/fcrepo-webapp-#{version}-jetty-console.jar"
241
- end
242
-
243
- def md5url
244
- "https://github.com/fcrepo4/fcrepo4/releases/download/fcrepo-#{version}/fcrepo-webapp-#{version}-jetty-console.jar.md5"
245
- end
246
-
247
- def fcrepo_options
248
- options.fetch(:fcrepo_options, headless: nil)
249
- end
250
-
251
- def env
252
- options.fetch(:env, {})
253
- end
254
-
255
- def download_path
256
- @download_path ||= options.fetch(:download_path, default_download_path)
257
- end
258
-
259
- def default_download_path
260
- File.join(download_dir, File.basename(download_url))
261
- end
262
-
263
- def download_dir
264
- @download_dir ||= options.fetch(:download_dir, Dir.tmpdir)
265
- FileUtils.mkdir_p @download_dir
266
- @download_dir
267
- end
268
-
269
- def verbose?
270
- !!options.fetch(:verbose, false)
271
- end
272
-
273
- def managed?
274
- File.exists?(instance_dir)
275
- end
276
-
277
- def version_file
278
- options.fetch(:version_file, File.join(instance_dir, "VERSION"))
279
- end
280
-
281
- def expected_md5sum
282
- @md5sum ||= options.fetch(:md5sum, open(md5file).read.split(" ").first)
283
- end
284
-
285
- def binary_path
286
- File.join(instance_dir, "fcrepo-webapp-#{version}-jetty-console.jar")
287
- end
288
-
289
- def md5sum_path
290
- File.join(download_dir, File.basename(md5url))
291
- end
292
-
293
- def tmp_save_dir
294
- @tmp_save_dir ||= Dir.mktmpdir
295
- end
296
-
297
- def fetch_with_progressbar(url, output)
298
- pbar = ProgressBar.create(title: File.basename(url), total: nil, format: "%t: |%B| %p%% (%e )")
299
- open(url, content_length_proc: lambda do|t|
300
- if t && 0 < t
301
- pbar.total = t
302
- end
303
- end,
304
- progress_proc: lambda do|s|
305
- pbar.progress = s
306
- end) do |io|
307
- IO.copy_stream(io, output)
308
- end
309
- end
310
-
311
- def md5file
312
- unless File.exists? md5sum_path
313
- fetch_with_progressbar md5url, md5sum_path
314
- end
315
-
316
- md5sum_path
317
- end
318
-
319
203
  def extracted_version
320
- File.read(version_file).strip if File.exists? version_file
204
+ File.read(config.version_file).strip if File.exists? config.version_file
321
205
  end
322
206
 
323
207
  def extracted_version=(version)
324
- File.open(version_file, "w") do |f|
208
+ File.open(config.version_file, "w") do |f|
325
209
  f.puts version
326
210
  end
327
211
  end
328
212
 
329
- def random_open_port
330
- socket = Socket.new(:INET, :STREAM, 0)
331
- begin
332
- socket.bind(Addrinfo.tcp('127.0.0.1', 0))
333
- socket.local_address.ip_port
334
- ensure
335
- socket.close
336
- end
337
- end
338
-
339
213
  def raise_error_unless_extracted
340
- raise RuntimeError, "there is no fcrepo instance at #{instance_dir}. Run FcrepoWrapper.extract first." unless extracted?
341
- end
342
-
343
- def spring_noop_file
344
- 'file://' + File.expand_path('../../../data/spring-noop.xml', __FILE__)
345
- end
346
-
347
- def jms_enabled?
348
- options.fetch(:enable_jms, true)
214
+ raise RuntimeError, "there is no fcrepo instance at #{config.instance_dir}. Run FcrepoWrapper.extract first." unless extracted?
349
215
  end
350
216
  end
351
217
  end
@@ -0,0 +1,44 @@
1
+ module FcrepoWrapper
2
+ class MD5
3
+ attr_reader :config
4
+ def initialize(config)
5
+ @config = config
6
+ end
7
+
8
+ def clean!
9
+ FileUtils.remove_entry(config.md5sum_path) if File.exists? config.md5sum_path
10
+ end
11
+
12
+ def validate?(file)
13
+ return true if config.validate == false
14
+
15
+ Digest::MD5.file(file).hexdigest == expected_sum
16
+ end
17
+
18
+ def validate!(file)
19
+ unless validate? file
20
+ raise "MD5 mismatch" unless config.ignore_md5sum
21
+ end
22
+ end
23
+
24
+ private
25
+
26
+ def expected_sum
27
+ @md5sum ||= config.md5sum
28
+ @md5sum ||= read_file
29
+ end
30
+
31
+ def read_file
32
+ open(md5file).read.split(" ").first
33
+ end
34
+
35
+ def md5file
36
+ unless File.exists? config.md5sum_path
37
+ Downloader.fetch_with_progressbar config.md5url, config.md5sum_path
38
+ end
39
+
40
+ config.md5sum_path
41
+ end
42
+ end
43
+ end
44
+
@@ -0,0 +1,39 @@
1
+ module FcrepoWrapper
2
+ # Configuraton that comes from static and dynamic sources.
3
+ class Settings < Delegator
4
+ def __getobj__
5
+ @static_config # return object we are delegating to, required
6
+ end
7
+
8
+ alias static_config __getobj__
9
+
10
+ def __setobj__(obj)
11
+ @static_config = obj
12
+ end
13
+
14
+ def initialize(static_config)
15
+ super
16
+ @static_config = static_config
17
+ end
18
+
19
+ ##
20
+ # Get the port this fcrepo instance is running at
21
+ def port
22
+ @port ||= static_config.port
23
+ @port ||= random_open_port.to_s
24
+ end
25
+
26
+ private
27
+
28
+ def random_open_port
29
+ socket = Socket.new(:INET, :STREAM, 0)
30
+ begin
31
+ socket.bind(Addrinfo.tcp('127.0.0.1', 0))
32
+ socket.local_address.ip_port
33
+ ensure
34
+ socket.close
35
+ end
36
+ end
37
+ end
38
+ end
39
+
@@ -1,3 +1,3 @@
1
1
  module FcrepoWrapper
2
- VERSION = '0.2.1'.freeze
2
+ VERSION = '0.3.0'.freeze
3
3
  end
@@ -0,0 +1 @@
1
+ port: 9999
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+
3
+ describe FcrepoWrapper::Configuration do
4
+ let(:config) { described_class.new options }
5
+
6
+ describe "#port" do
7
+ subject { config.port }
8
+
9
+ context "when port is set to nil" do
10
+ let(:options) { { port: nil } }
11
+ it { is_expected.to eq nil }
12
+ end
13
+
14
+ context "when port is not set" do
15
+ let(:options) { {} }
16
+ it { is_expected.to eq '8080' }
17
+ end
18
+
19
+ context "when a port is provided" do
20
+ let(:options) { { port: '8888' } }
21
+ it { is_expected.to eq '8888' }
22
+ end
23
+ end
24
+
25
+ describe "#read_config" do
26
+ before do
27
+ allow(config).to receive(:default_configuration_paths).and_return([])
28
+ end
29
+ let(:options) { { config: 'spec/fixtures/sample_config.yml' } }
30
+ it "uses values from the config file" do
31
+ expect(config.port).to eq '9999'
32
+ end
33
+
34
+ end
35
+ end
36
+
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ describe FcrepoWrapper::Instance do
4
+ let(:wrapper) { described_class.new }
5
+
6
+ describe "#host" do
7
+ subject { wrapper.host }
8
+ it { is_expected.to eq '127.0.0.1' }
9
+ end
10
+
11
+ describe "#port" do
12
+ subject { wrapper.port }
13
+ it { is_expected.to eq '8080' }
14
+ end
15
+
16
+ describe "#url" do
17
+ subject { wrapper.url }
18
+ it { is_expected.to eq 'http://127.0.0.1:8080/' }
19
+ end
20
+
21
+ describe "#version" do
22
+ subject { wrapper.version }
23
+ it { is_expected.to eq '4.5.0' }
24
+ end
25
+
26
+ describe "#md5" do
27
+ subject { wrapper.md5 }
28
+ it { is_expected.to be_instance_of FcrepoWrapper::MD5 }
29
+ end
30
+ end
31
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fcrepo_wrapper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Beer
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-02-05 00:00:00.000000000 Z
11
+ date: 2016-03-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ruby-progressbar
@@ -116,10 +116,17 @@ files:
116
116
  - exe/fcrepo_wrapper
117
117
  - fcrepo_wrapper.gemspec
118
118
  - lib/fcrepo_wrapper.rb
119
+ - lib/fcrepo_wrapper/configuration.rb
120
+ - lib/fcrepo_wrapper/downloader.rb
119
121
  - lib/fcrepo_wrapper/instance.rb
122
+ - lib/fcrepo_wrapper/md5.rb
120
123
  - lib/fcrepo_wrapper/rake_task.rb
124
+ - lib/fcrepo_wrapper/settings.rb
121
125
  - lib/fcrepo_wrapper/tasks/fcrepo_wrapper.rake
122
126
  - lib/fcrepo_wrapper/version.rb
127
+ - spec/fixtures/sample_config.yml
128
+ - spec/lib/fcrepo_wrapper/configuration_spec.rb
129
+ - spec/lib/fcrepo_wrapper/instance_spec.rb
123
130
  - spec/lib/fcrepo_wrapper_spec.rb
124
131
  - spec/spec_helper.rb
125
132
  homepage: https://github.com/cbeer/fcrepo_wrapper
@@ -142,10 +149,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
142
149
  version: '0'
143
150
  requirements: []
144
151
  rubyforge_project:
145
- rubygems_version: 2.4.5.1
152
+ rubygems_version: 2.5.1
146
153
  signing_key:
147
154
  specification_version: 4
148
155
  summary: Solr 5 service wrapper
149
156
  test_files:
157
+ - spec/fixtures/sample_config.yml
158
+ - spec/lib/fcrepo_wrapper/configuration_spec.rb
159
+ - spec/lib/fcrepo_wrapper/instance_spec.rb
150
160
  - spec/lib/fcrepo_wrapper_spec.rb
151
161
  - spec/spec_helper.rb
162
+ has_rdoc: