Skip to content
This repository was archived by the owner on Jun 22, 2023. It is now read-only.

Commit 075a05c

Browse files
author
Florian Aßmann
committed
Fixed Superclass errors when running the complete testsuite and other errors/warnings during tests.
1 parent 261da55 commit 075a05c

File tree

4 files changed

+193
-191
lines changed

4 files changed

+193
-191
lines changed

lib/dav/storages/file_storage.rb

+6-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
require 'pathname'
22
require 'tmpdir'
33

4+
# TODO use chambermaid for a typed implementation
5+
46
module DAV
57
class FileStorage < Storage
68
include Addressable
@@ -15,9 +17,10 @@ def initialize(opts = {})
1517
@opts = opts
1618
@memory = Pathname File.expand_path(path)
1719

18-
# TODO Check if user can write, too.
19-
if @memory.exist? && !@memory.directory?
20-
raise "Cannot store data at #{ @memory }!"
20+
@memory.mkpath unless @memory.exist?
21+
22+
unless @memory.directory? or @memory.writable?
23+
raise "Cannot store data at #{ @memory }"
2124
end
2225
end
2326

test/unit/file_storage_test.rb

+69-67
Original file line numberDiff line numberDiff line change
@@ -1,98 +1,100 @@
11
require File.expand_path('../../teststrap', __FILE__)
22

3-
context "DAV::FileStorage" do
4-
URI = Addressable::URI
3+
module FileStorageTest
4+
context "DAV::FileStorage" do
5+
URI = Addressable::URI
56

6-
root = File.join Dir.tmpdir
7+
root = File.join Dir.tmpdir
78

8-
key = 'example.com/foo bar/baz'
9-
encoded_key = URI.encode_component key, URI::CharacterClasses::PATH
9+
key = 'example.com/foo bar/baz'
10+
encoded_key = URI.encode_component key, URI::CharacterClasses::PATH
1011

11-
path = File.join key.split('/')
12+
path = File.join key.split('/')
1213

13-
setup { DAV::FileStorage }
14+
setup { DAV::FileStorage }
1415

15-
context "without prefix" do
16-
setup { topic.new }
16+
context "without prefix" do
17+
setup { topic.new }
1718

18-
asserts 'get on non-existing key' do
19-
topic.get key
20-
end.nil
19+
asserts 'get on non-existing key' do
20+
topic.get key
21+
end.nil
2122

22-
asserts 'delete on non-existing key' do
23-
topic.delete key
24-
end.nil
23+
asserts 'delete on non-existing key' do
24+
topic.delete key
25+
end.nil
2526

26-
asserts '@memory' do
27-
topic.memory
28-
end.kind_of Pathname
27+
asserts '@memory' do
28+
topic.memory
29+
end.kind_of Pathname
2930

30-
asserts 'set on key' do
31-
topic.set key, 'value-1'
32-
end.equals 'value-1'
31+
asserts 'set on key' do
32+
topic.set key, 'value-1'
33+
end.equals 'value-1'
3334

34-
asserts 'stores values in files in tmp dir' do
35-
File.file? File.join(root, 'file_storage.rb', path)
36-
end
37-
38-
asserts 'get on existing key' do
39-
topic.set key, 'value-2'
40-
topic.get key
41-
end.equals 'value-2'
35+
asserts 'stores values in files in tmp dir' do
36+
File.file? File.join(root, 'file_storage.rb', path)
37+
end
4238

43-
asserts '#keys' do
44-
topic.keys
45-
end.equals [key]
39+
asserts 'get on existing key' do
40+
topic.set key, 'value-2'
41+
topic.get key
42+
end.equals 'value-2'
4643

47-
denies '#keys with pattern "/foo"' do
48-
topic.keys '/foo'
49-
end.any
50-
asserts '#keys with pattern "example.com/*"' do
51-
topic.keys 'example.com/*'
52-
end.equals [key]
44+
asserts '#keys' do
45+
topic.keys
46+
end.equals [key]
5347

54-
asserts 'delete on existing key' do
55-
topic.set key, 'value-3'
56-
topic.delete key
57-
end.equals 'value-3'
48+
asserts '#keys with pattern "/foo"' do
49+
topic.keys '/foo'
50+
end.empty
51+
asserts '#keys with pattern "example.com/*"' do
52+
topic.keys 'example.com/*'
53+
end.equals [key]
5854

59-
asserts 'get a nil value' do
60-
topic.set key, nil
61-
topic.get key
62-
end.nil
55+
asserts 'delete on existing key' do
56+
topic.set key, 'value-3'
57+
topic.delete key
58+
end.equals 'value-3'
6359

64-
asserts 'get on deleted key' do
65-
topic.get key
66-
end.nil
60+
asserts 'get a nil value' do
61+
topic.set key, nil
62+
topic.get key
63+
end.nil
6764

68-
end
65+
asserts 'get on deleted key' do
66+
topic.get key
67+
end.nil
6968

70-
context "with prefix" do
71-
setup do
72-
topic.new :prefix => 'DELETE-ME'
7369
end
7470

75-
asserts 'creates DELETE-ME dir in current working dir' do
76-
full_path = File.join Dir.tmpdir, 'DELETE-ME'
71+
context "with prefix" do
72+
setup do
73+
topic.new :prefix => 'DELETE-ME'
74+
end
75+
76+
asserts 'creates DELETE-ME dir in current working dir' do
77+
full_path = File.join Dir.tmpdir, 'DELETE-ME'
7778

78-
File.directory?(full_path).tap do |exist|
79-
FileUtils.rmtree full_path if exist
79+
File.directory?(full_path).tap do |exist|
80+
FileUtils.rmtree full_path if exist
81+
end
8082
end
81-
end
8283

83-
end
84+
end
8485

85-
context "with root" do
86-
setup { topic.new :root => File.join(root, 'DELETE-ME') }
86+
context "with root" do
87+
setup { topic.new :root => File.join(root, 'DELETE-ME') }
8788

88-
asserts 'creates DELETE-ME-TOO dir in root' do
89-
full_path = File.join root, 'DELETE-ME'
89+
asserts "creates DELETE-ME dir in #{root}" do
90+
full_path = File.join root, 'DELETE-ME'
9091

91-
File.directory?(full_path).tap do |exist|
92-
FileUtils.rmtree full_path if exist
92+
File.directory?(full_path).tap do |exist|
93+
FileUtils.rmtree full_path if exist
94+
end
9395
end
96+
9497
end
9598

9699
end
97-
98-
end
100+
end

test/unit/memory_storage_test.rb

+54-59
Original file line numberDiff line numberDiff line change
@@ -1,78 +1,73 @@
11
require File.expand_path('../../teststrap', __FILE__)
22

3-
class KeyMaster < Struct.new(:results)
4-
def [](key)
5-
results[:get] << key
6-
end
7-
def []=(key, value)
8-
results[:set] << key
9-
end
10-
def delete(key)
11-
results[:delete] << key
3+
module MemoryStorageTest
4+
class KeyMaster < Struct.new(:results)
5+
def [](ns)
6+
results[ns] ||= {}
7+
end
128
end
13-
end
149

15-
context "DAV::MemoryStorage" do
16-
setup { DAV::MemoryStorage }
10+
context "DAV::MemoryStorage" do
11+
setup { DAV::MemoryStorage }
1712

18-
context "without prefix" do
19-
setup { topic.new }
13+
context "without prefix" do
14+
setup { topic.new }
2015

21-
asserts 'get on non-existing key' do
22-
topic.get 'key'
23-
end.nil
16+
asserts 'get on non-existing key' do
17+
topic.get 'key'
18+
end.nil
2419

25-
asserts 'delete on non-existing key' do
26-
topic.delete 'key'
27-
end.nil
20+
asserts 'delete on non-existing key' do
21+
topic.delete 'key'
22+
end.nil
2823

29-
asserts 'set on key' do
30-
topic.set 'key', 'value-1'
31-
end.equals 'value-1'
24+
asserts 'set on key' do
25+
topic.set 'key', 'value-1'
26+
end.equals 'value-1'
3227

33-
asserts 'get on existing key' do
34-
topic.set 'key', 'value-2'
35-
topic.get 'key'
36-
end.equals 'value-2'
28+
asserts 'get on existing key' do
29+
topic.set 'key', 'value-2'
30+
topic.get 'key'
31+
end.equals 'value-2'
3732

38-
asserts 'get a nil value' do
39-
topic.set 'key', nil
40-
topic.get 'key'
41-
end.nil
33+
asserts 'get a nil value' do
34+
topic.set 'key', nil
35+
topic.get 'key'
36+
end.nil
4237

43-
asserts 'delete on existing key' do
44-
topic.set 'key', 'value-3'
45-
topic.delete 'key'
46-
end.equals 'value-3'
38+
asserts 'delete on existing key' do
39+
topic.set 'key', 'value-3'
40+
topic.delete 'key'
41+
end.equals 'value-3'
4742

48-
asserts 'get on deleted key' do
49-
topic.get 'key'
50-
end.nil
43+
asserts 'get on deleted key' do
44+
topic.get 'key'
45+
end.nil
5146

52-
end
53-
context "with prefix" do
54-
setup do
55-
topic.new(:prefix => 'PREFIX-').tap do |storage|
56-
@storage = Hash.new { |h, k| h[k] = [] }
57-
storage.memory = KeyMaster.new(@storage)
58-
end
5947
end
48+
context "with prefix" do
49+
setup do
50+
topic.new(:prefix => 'PREFIX-').tap do |storage|
51+
@storage = {}
52+
storage.memory = KeyMaster.new(@storage)
53+
end
54+
end
6055

61-
asserts 'get key-0' do
62-
topic.get 'key-0'
63-
@storage[:get].last
64-
end.equals 'PREFIX-key-0'
56+
asserts 'set key' do
57+
topic.set 'key', 'value'
58+
@storage['PREFIX-']['key']
59+
end.equals 'value'
6560

66-
asserts 'delete key-1' do
67-
topic.delete 'key-1'
68-
@storage[:delete].last
69-
end.equals 'PREFIX-key-1'
61+
asserts 'get key' do
62+
topic.get 'key'
63+
end.equals 'value'
7064

71-
asserts 'set key-2' do
72-
topic.set 'key-2', 'value-1'
73-
@storage[:set].last
74-
end.equals 'PREFIX-key-2'
65+
asserts 'delete key' do
66+
topic.delete 'key'
67+
@storage['PREFIX-']['key']
68+
end.nil
7569

76-
end
70+
end
7771

78-
end
72+
end
73+
end

0 commit comments

Comments
 (0)