rspec-file-transfer-matchers 1.0.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.
Binary file
@@ -0,0 +1,5 @@
1
+ === 1.0.0 / 2009-04-06
2
+
3
+ * 1 major enhancement
4
+
5
+ * Birthday!
@@ -0,0 +1,8 @@
1
+ History.txt
2
+ Manifest.txt
3
+ README.rdoc
4
+ Rakefile
5
+ lib/file_transfer_matchers.rb
6
+ lib/file_transfer_matchers/file_transfer_matchers.rb
7
+ lib/file_transfer_matchers/file_transfer_matcher.rb
8
+ spec/file_transfer_matchers_spec.rb
@@ -0,0 +1,162 @@
1
+ = FileTransferMatchers
2
+
3
+ * Project: https://rubyforge.org/projects/aef/
4
+ * RDoc: http://aef.rubyforge.org/rspec-file-transfer-matchers/
5
+ * Github: http://github.com/aef/rspec-file-transfer-matchers/
6
+
7
+ == DESCRIPTION:
8
+
9
+ FileTransferMatchers are able to verify file movement, copying and deletion in
10
+ RSpec based automated tests.
11
+
12
+ == FEATURES/PROBLEMS:
13
+
14
+ * Tested and fully working on:
15
+ * Ubuntu Linux 8.10 i386_64 (Ruby 1.8.7 and 1.9.1p0)
16
+ * Debian GNU/Linux 4.0 i386 (Ruby 1.8.6)
17
+ * On Windows XP i386 (Ruby 1.8.6)
18
+
19
+ == SYNOPSIS:
20
+
21
+ Load the gem:
22
+
23
+ require 'file_transfer_matchers'
24
+
25
+ Include the matcher methods into the test case:
26
+
27
+ descripe Example do
28
+ include Aef::FileTransferMatchers
29
+ ...
30
+ end
31
+
32
+ Test file movement:
33
+
34
+ it "should move a file" do
35
+ source = 'abc'
36
+ target = 'def'
37
+
38
+ lamda {
39
+ FileUtils.mv(source, target)
40
+ }.should move(source, :to => target)
41
+ end
42
+
43
+ Test file copying:
44
+
45
+ it "should copy file" do
46
+ source = 'abc'
47
+ target = 'def'
48
+
49
+ lamda {
50
+ FileUtils.cp(source, target)
51
+ }.should copy(source, :to => target)
52
+ end
53
+
54
+ Test file deletion:
55
+
56
+ it "should delete file" do
57
+ file = 'abc'
58
+
59
+ lamda {
60
+ FileUtils.rm(file)
61
+ }.should delete(file)
62
+ end
63
+
64
+ If you want to ignore an already existing target for move or copy:
65
+
66
+ it "should move a file" do
67
+ source = 'abc'
68
+ target = 'def'
69
+
70
+ lamda {
71
+ FileUtils.mv(source, target)
72
+ }.should move(source, :to => target, :overwrite => true)
73
+ end
74
+
75
+ == REQUIREMENTS:
76
+
77
+ * rspec
78
+
79
+ === Additional for automated testing
80
+ * hoe
81
+
82
+ == INSTALL:
83
+
84
+ === Normal
85
+
86
+ gem install rspec-file-transfer-matchers
87
+
88
+ === High security (recommended)
89
+
90
+ There is a high security installation option available through rubygems. It is
91
+ highly recommended over the normal installation, although it may be a bit less
92
+ comfortable. To use the installation method, you will need my public key, which
93
+ I use for cryptographic signatures on all my gems. You can find the public key
94
+ and more detailed verification information in the aef-certificates section of my
95
+ rubyforge project[https://rubyforge.org/frs/?group_id=7890&release_id=31749]
96
+
97
+ Add the key to your rubygems' trusted certificates by the following command:
98
+
99
+ gem cert --add aef.pem
100
+
101
+ Now you can install the gem while automatically verifying it's signature by the
102
+ following command:
103
+
104
+ gem install rspec-file-transfer-matchers --ignore-dependencies -P HighSecurity
105
+
106
+ Please notice that you will need other keys for dependent libraries, so you may
107
+ have to install dependencies manually.
108
+
109
+ === Automated testing
110
+
111
+ You can test this package through rspec on your system. First find the path
112
+ where the gem was installed to:
113
+
114
+ gem which rspec-file-transfer-matchers
115
+
116
+ Go into the root directory of the installed gem and run the following command
117
+ to start the test runner:
118
+
119
+ rake spec
120
+
121
+ On Windows systems you have to run the following instead:
122
+
123
+ spec spec/**/*_spec.rb
124
+
125
+ If something goes wrong you should be noticed through failing examples.
126
+
127
+ == DEVELOPMENT:
128
+
129
+ This software is developed in the source code management system git hosted
130
+ at github.com. You can download the most recent sourcecode through the following
131
+ command:
132
+
133
+ git clone git://github.com/aef/rspec-file-transfer-matchers.git
134
+
135
+ Help on making this software better is always very appreciated. If you want your
136
+ changes to be included in the official release, please send me a patch through
137
+ the project's tracker[https://rubyforge.org/tracker/?group_id=7890] at
138
+ rubyforge.org. You can generate a patch-file by the following command:
139
+
140
+ git diff > patch.diff
141
+
142
+ Please make sure to write tests for your changes and notice that I can't promise
143
+ to include your changes before reviewing them.
144
+
145
+ == LICENSE:
146
+
147
+ Copyright 2009 Alexander E. Fischer <aef@raxys.net>
148
+
149
+ This file is part of FileTransferMatchers.
150
+
151
+ FileTransferMatchers is free software: you can redistribute it and/or modify
152
+ it under the terms of the GNU General Public License as published by
153
+ the Free Software Foundation, either version 3 of the License, or
154
+ (at your option) any later version.
155
+
156
+ This program is distributed in the hope that it will be useful,
157
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
158
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
159
+ GNU General Public License for more details.
160
+
161
+ You should have received a copy of the GNU General Public License
162
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
@@ -0,0 +1,19 @@
1
+ # -*- ruby -*-
2
+
3
+ require 'rubygems'
4
+ require 'hoe'
5
+ require './lib/file_transfer_matchers.rb'
6
+
7
+ Hoe.new('rspec-file-transfer-matchers', Aef::FileTransferMatchers::VERSION) do |p|
8
+ p.rubyforge_name = 'aef'
9
+ p.developer('Alexander E. Fischer', 'aef@raxys.net')
10
+ p.extra_deps = %w{rspec}
11
+ p.url = 'https://rubyforge.org/projects/aef/'
12
+ p.readme_file = 'README.rdoc'
13
+ p.extra_rdoc_files = %w{README.rdoc}
14
+ p.spec_extras = {
15
+ :rdoc_options => ['--main', 'README.rdoc', '--inline-source', '--line-numbers', '--title', 'FileTransferMatchers']
16
+ }
17
+ end
18
+
19
+ # vim: syntax=Ruby
@@ -0,0 +1,31 @@
1
+ # Copyright 2009 Alexander E. Fischer <aef@raxys.net>
2
+ #
3
+ # This file is part of FileTransferMatchers.
4
+ #
5
+ # FileTransferMatchers is free software: you can redistribute it and/or modify
6
+ # it under the terms of the GNU General Public License as published by
7
+ # the Free Software Foundation, either version 3 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # This program is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU General Public License
16
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+
18
+ # Namespace for projects of Alexander E. Fischer <aef@raxys.net>
19
+ #
20
+ # If you want to be able to simply type Example instead of Aef::Example to
21
+ # address classes in this namespace simply write the following before using the
22
+ # classes:
23
+ #
24
+ # include Aef
25
+ module Aef
26
+
27
+ end
28
+
29
+ libdir = File.dirname(__FILE__)
30
+ require File.join(libdir, 'file_transfer_matchers/file_transfer_matcher')
31
+ require File.join(libdir, 'file_transfer_matchers/file_transfer_matchers')
@@ -0,0 +1,100 @@
1
+ # Copyright 2009 Alexander E. Fischer <aef@raxys.net>
2
+ #
3
+ # This file is part of FileTransferMatchers.
4
+ #
5
+ # FileTransferMatchers is free software: you can redistribute it and/or modify
6
+ # it under the terms of the GNU General Public License as published by
7
+ # the Free Software Foundation, either version 3 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # This program is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU General Public License
16
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+
18
+ module Aef
19
+ class FileTransferMatcherError < StandardError; nil end
20
+ class SourceNotExistentError < FileTransferMatcherError; nil end
21
+ class TargetAlreadyExistentError < FileTransferMatcherError; nil end
22
+ class TargetNotExistentError < FileTransferMatcherError; nil end
23
+ class SourceStillExistentError < FileTransferMatcherError; nil end
24
+
25
+ class FileTransferMatcher
26
+ def initialize(from, options)
27
+ @from = from
28
+ @to = options[:to]
29
+ @copy_mode = options[:copy_mode]
30
+ @overwrite = options[:overwrite]
31
+
32
+ raise 'A target must be given in copy mode' if @copy_mode and not @to
33
+ end
34
+
35
+ def matches?(event_proc)
36
+ raise_block_syntax_error if block_given?
37
+
38
+ raise SourceNotExistentError unless File.exist?(@from)
39
+ raise TargetAlreadyExistentError if @to and File.exist?(@to) and not @overwrite
40
+
41
+ event_proc.call
42
+
43
+ raise TargetNotExistentError if @to and not File.exist?(@to)
44
+ raise SourceStillExistentError if not @copy_mode and File.exist?(@from)
45
+
46
+ true
47
+ rescue FileTransferMatcherError
48
+ @error = $!
49
+ false
50
+ end
51
+
52
+ def raise_block_syntax_error
53
+ raise MatcherError.new(<<-MESSAGE
54
+ block passed to should or should_not move/copy/delete must use {} instead of do/end
55
+ MESSAGE
56
+ )
57
+ end
58
+
59
+ def failure_message
60
+ case @error
61
+ when SourceNotExistentError
62
+ if @copy_mode
63
+ "File #{@from} could not be copied, as it does not exist"
64
+ elsif @to
65
+ "File #{@from} could not be moved, as it does not exist"
66
+ else
67
+ "File #{@from} could not be deleted, as it does not exist"
68
+ end
69
+ when TargetAlreadyExistentError
70
+ if @copy_mode
71
+ "File #{@from} could not be copied, as target #{@to} already exists"
72
+ else
73
+ "File #{@from} could not be moved, as target #{@to} already exists"
74
+ end
75
+ when TargetNotExistentError
76
+ if @copy_mode
77
+ "File #{@from} should have been copied to #{@to}, but target wasn't created"
78
+ else
79
+ "File #{@from} should have been moved to #{@to}, but target wasn't created"
80
+ end
81
+ when SourceStillExistentError
82
+ if @to
83
+ "File #{@from} should have been moved, but source file still exists"
84
+ else
85
+ "File #{@from} should have been deleted, but source file still exists"
86
+ end
87
+ end
88
+ end
89
+
90
+ def negative_failure_message
91
+ if @copy_mode
92
+ "File #{@from} was copied to #{@to}"
93
+ elsif @to
94
+ "File #{@from} was moved to #{@to}"
95
+ else
96
+ "File #{@from} was deleted"
97
+ end
98
+ end
99
+ end
100
+ end
@@ -0,0 +1,34 @@
1
+ # Copyright 2009 Alexander E. Fischer <aef@raxys.net>
2
+ #
3
+ # This file is part of FileTransferMatchers.
4
+ #
5
+ # FileTransferMatchers is free software: you can redistribute it and/or modify
6
+ # it under the terms of the GNU General Public License as published by
7
+ # the Free Software Foundation, either version 3 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # This program is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU General Public License
16
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+
18
+ module Aef::FileTransferMatchers
19
+ VERSION = '1.0.0'
20
+
21
+ def move(from, options = {}, &block)
22
+ options[:copy_mode] = false
23
+ Aef::FileTransferMatcher.new(from, options, &block)
24
+ end
25
+
26
+ def copy(from, options = {}, &block)
27
+ options[:copy_mode] = true
28
+ Aef::FileTransferMatcher.new(from, options, &block)
29
+ end
30
+
31
+ def delete(file, &block)
32
+ Aef::FileTransferMatcher.new(file, :copy_mode => false, &block)
33
+ end
34
+ end
@@ -0,0 +1,247 @@
1
+ # Copyright 2009 Alexander E. Fischer <aef@raxys.net>
2
+ #
3
+ # This file is part of FileTransferMatchers.
4
+ #
5
+ # FileTransferMatchers is free software: you can redistribute it and/or modify
6
+ # it under the terms of the GNU General Public License as published by
7
+ # the Free Software Foundation, either version 3 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # This program is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU General Public License
16
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+
18
+ require 'fileutils'
19
+ require 'tmpdir'
20
+
21
+ require 'lib/file_transfer_matchers'
22
+
23
+ describe Aef::FileTransferMatchers do
24
+ include Aef::FileTransferMatchers
25
+
26
+ before(:each) do
27
+ # Before ruby 1.8.7, the tmpdir standard library had no method to create
28
+ # a temporary directory (mktmpdir).
29
+ if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('1.8.7')
30
+ @folder_path = File.join(Dir.tmpdir, 'file_transfer_matcher_spec')
31
+ Dir.mkdir(@folder_path)
32
+ else
33
+ @folder_path = Dir.mktmpdir('file_transfer_matcher_spec')
34
+ end
35
+ end
36
+
37
+ after(:each) do
38
+ FileUtils.rm_rf(@folder_path)
39
+ end
40
+
41
+ it "should positively recognize a file deletion" do
42
+ file = File.join(@folder_path, 'toDelete')
43
+
44
+ FileUtils.touch(file)
45
+
46
+ action = lambda {
47
+ FileUtils.rm(file)
48
+ }
49
+
50
+ matcher = delete(file)
51
+ matcher.matches?(action).should be_true
52
+ matcher.negative_failure_message.should eql(
53
+ "File #{file} was deleted")
54
+
55
+ end
56
+
57
+ it "should positively recognize a file movement" do
58
+ file = File.join(@folder_path, 'toMove')
59
+ target = file + '.bak'
60
+
61
+ FileUtils.touch(file)
62
+
63
+ action = lambda {
64
+ FileUtils.mv(file, target)
65
+ }
66
+
67
+ matcher = move(file, :to => target)
68
+ matcher.matches?(action).should be_true
69
+ matcher.negative_failure_message.should eql(
70
+ "File #{file} was moved to #{target}")
71
+ end
72
+
73
+ it "should positively recognize a file copying" do
74
+ file = File.join(@folder_path, 'toCopy')
75
+ target = file + '.bak'
76
+
77
+ FileUtils.touch(file)
78
+
79
+ action = lambda {
80
+ FileUtils.cp(file, target)
81
+ }
82
+
83
+ matcher = copy(file, :to => target)
84
+ matcher.matches?(action).should be_true
85
+ matcher.negative_failure_message.should eql(
86
+ "File #{file} was copied to #{target}")
87
+ end
88
+
89
+ it "should negatively recognize a failed file deletion" do
90
+ file = File.join(@folder_path, 'toDelete')
91
+
92
+ action = lambda {}
93
+
94
+ matcher = delete(file)
95
+ matcher.matches?(action).should be_false
96
+ matcher.failure_message.should eql(
97
+ "File #{file} could not be deleted, as it does not exist")
98
+ end
99
+
100
+ it "should negatively recognize if a move source is not existent" do
101
+ file = File.join(@folder_path, 'toMove')
102
+ target = file + '.bak'
103
+
104
+ action = lambda {}
105
+
106
+ matcher = move(file, :to => target)
107
+ matcher.matches?(action).should be_false
108
+ matcher.failure_message.should eql(
109
+ "File #{file} could not be moved, as it does not exist")
110
+ end
111
+
112
+ it "should negatively recognize if a copy source is not existent" do
113
+ file = File.join(@folder_path, 'toCopy')
114
+ target = file + '.bak'
115
+
116
+ action = lambda {}
117
+
118
+ matcher = copy(file, :to => target)
119
+ matcher.matches?(action).should be_false
120
+ matcher.failure_message.should eql(
121
+ "File #{file} could not be copied, as it does not exist")
122
+ end
123
+
124
+ it "should negativly recognize if a move target already exists" do
125
+ file = File.join(@folder_path, 'toMove')
126
+ target = file + '.bak'
127
+
128
+ FileUtils.touch(file)
129
+ FileUtils.touch(target)
130
+
131
+ action = lambda {
132
+ FileUtils.mv(file, target)
133
+ }
134
+
135
+ matcher = move(file, :to => target)
136
+ matcher.matches?(action).should be_false
137
+ matcher.failure_message.should eql(
138
+ "File #{file} could not be moved, as target #{target} already exists")
139
+ end
140
+
141
+ it "should positively recognize if a move target already exists but overwrite is active" do
142
+ file = File.join(@folder_path, 'toMove')
143
+ target = file + '.bak'
144
+
145
+ FileUtils.touch(file)
146
+ FileUtils.touch(target)
147
+
148
+ action = lambda {
149
+ FileUtils.mv(file, target)
150
+ }
151
+
152
+ matcher = move(file, :to => target, :overwrite => true)
153
+ matcher.matches?(action).should be_true
154
+ end
155
+
156
+ it "should negativly recognize if a copy target already exists" do
157
+ file = File.join(@folder_path, 'toCopy')
158
+ target = file + '.bak'
159
+
160
+ FileUtils.touch(file)
161
+ FileUtils.touch(target)
162
+
163
+ action = lambda {
164
+ FileUtils.cp(file, target)
165
+ }
166
+
167
+ matcher = copy(file, :to => target)
168
+ matcher.matches?(action).should be_false
169
+ matcher.failure_message.should eql(
170
+ "File #{file} could not be copied, as target #{target} already exists")
171
+ end
172
+
173
+ it "should positively recognize if a copy target already exists but overwrite is active" do
174
+ file = File.join(@folder_path, 'toCopy')
175
+ target = file + '.bak'
176
+
177
+ FileUtils.touch(file)
178
+ FileUtils.touch(target)
179
+
180
+ action = lambda {
181
+ FileUtils.cp(file, target)
182
+ }
183
+
184
+ matcher = copy(file, :to => target, :overwrite => true)
185
+ matcher.matches?(action).should be_true
186
+ end
187
+
188
+ it "should negatively recognize if a move target doesn't get created" do
189
+ file = File.join(@folder_path, 'toMove')
190
+ target = file + '.bak'
191
+
192
+ FileUtils.touch(file)
193
+
194
+ action = lambda {}
195
+
196
+ matcher = move(file, :to => target)
197
+ matcher.matches?(action).should be_false
198
+ matcher.failure_message.should eql(
199
+ "File #{file} should have been moved to #{target}, but target wasn't created")
200
+ end
201
+
202
+ it "should negatively recognize if a copy target doesn't get created" do
203
+ file = File.join(@folder_path, 'toCopy')
204
+ target = file + '.bak'
205
+
206
+ FileUtils.touch(file)
207
+
208
+ action = lambda {}
209
+
210
+ matcher = copy(file, :to => target)
211
+ matcher.matches?(action).should be_false
212
+ matcher.failure_message.should eql(
213
+ "File #{file} should have been copied to #{target}, but target wasn't created")
214
+ end
215
+
216
+ it "should negatively recognize if a move source doesn't get deleted" do
217
+ file = File.join(@folder_path, 'toCopy')
218
+ target = file + '.bak'
219
+
220
+ FileUtils.touch(file)
221
+
222
+ action = lambda {
223
+ FileUtils.cp(file, target)
224
+ }
225
+
226
+ matcher = move(file, :to => target)
227
+ matcher.matches?(action).should be_false
228
+ matcher.failure_message.should eql(
229
+ "File #{file} should have been moved, but source file still exists")
230
+ end
231
+
232
+ it "should negatively recognize if a file doesn't get deleted" do
233
+ file = File.join(@folder_path, 'toCopy')
234
+ target = file + '.bak'
235
+
236
+ FileUtils.touch(file)
237
+
238
+ action = lambda {
239
+ FileUtils.cp(file, target)
240
+ }
241
+
242
+ matcher = delete(file)
243
+ matcher.matches?(action).should be_false
244
+ matcher.failure_message.should eql(
245
+ "File #{file} should have been deleted, but source file still exists")
246
+ end
247
+ end
metadata ADDED
@@ -0,0 +1,107 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rspec-file-transfer-matchers
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Alexander E. Fischer
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDKDCCAhCgAwIBAgIBADANBgkqhkiG9w0BAQUFADA6MQwwCgYDVQQDDANhZWYx
14
+ FTATBgoJkiaJk/IsZAEZFgVyYXh5czETMBEGCgmSJomT8ixkARkWA25ldDAeFw0w
15
+ OTAyMjUyMDM5MDhaFw0xMDAyMjUyMDM5MDhaMDoxDDAKBgNVBAMMA2FlZjEVMBMG
16
+ CgmSJomT8ixkARkWBXJheHlzMRMwEQYKCZImiZPyLGQBGRYDbmV0MIIBIjANBgkq
17
+ hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoYtj0qad5/MpbdttITzBH0h1SNe6eO7R
18
+ 7qVeqNYu6qDQAQ0rYc0JhubJCWYrZEJorHEBhUFU6cdQgQOs78wiJaDgkeU7YfXB
19
+ q2l125kJ8aHkA1ukrK2/DRzp2AHEmzxHIYpXV5/63h+NWjCP+uKvTELYsotS2MKt
20
+ 3d43E0QajsPZu2ZuNFwkroqeue872gMHUldGOVy5WtSd9ajw2xI/CociY6746dL+
21
+ pYriV3QaYtR/ezeaLpKBLsc5T1UQ07t7Xs7mI281tdmRvpLdP5dQhjzInfio0CJv
22
+ 1Pf5bZUjGG0K9RW2Gb/tGPSYEETiLMubjH61OwBooXKiWR5cs4/1BQIDAQABozkw
23
+ NzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUSYvjhG2EWnR5kx5l
24
+ DAewXCkJOVEwDQYJKoZIhvcNAQEFBQADggEBAB2ryDbU4bQtnunKv/AXq4CuO3LS
25
+ kik9Xhye8E/5dTcsgitCZJXAqx0rHcK0u2EHnjA5CDcdF5JB7XgSvRrQkFWoW/9K
26
+ lCB4ih+sB2AI2IUiYBeoCGctXdBQ020prqop/oTQEudzFk/gyQ686lp06HdLRt+O
27
+ HoQjTIab8vmfgIubjPdIRzokMfHbelvhLi+mQfWVghRhs2jpEfdXbL0w5nNw+trp
28
+ rO70Dw59hduDUOpgpxew+PLbs4vP1tb1QKPG+39C+PZtosbbf1fai0hqYV1txMCx
29
+ 55akF+N8NbO6tpVDy6TMagqa10LfEpiQH6dvDHe/xdAqYOCrXKpmqzwu2PI=
30
+ -----END CERTIFICATE-----
31
+
32
+ date: 2009-04-09 00:00:00 +02:00
33
+ default_executable:
34
+ dependencies:
35
+ - !ruby/object:Gem::Dependency
36
+ name: rspec
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: "0"
44
+ version:
45
+ - !ruby/object:Gem::Dependency
46
+ name: hoe
47
+ type: :development
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 1.12.1
54
+ version:
55
+ description: FileTransferMatchers are able to verify file movement, copying and deletion in RSpec based automated tests.
56
+ email:
57
+ - aef@raxys.net
58
+ executables: []
59
+
60
+ extensions: []
61
+
62
+ extra_rdoc_files:
63
+ - History.txt
64
+ - Manifest.txt
65
+ - README.rdoc
66
+ files:
67
+ - History.txt
68
+ - Manifest.txt
69
+ - README.rdoc
70
+ - Rakefile
71
+ - lib/file_transfer_matchers.rb
72
+ - lib/file_transfer_matchers/file_transfer_matchers.rb
73
+ - lib/file_transfer_matchers/file_transfer_matcher.rb
74
+ - spec/file_transfer_matchers_spec.rb
75
+ has_rdoc: true
76
+ homepage: https://rubyforge.org/projects/aef/
77
+ post_install_message:
78
+ rdoc_options:
79
+ - --main
80
+ - README.rdoc
81
+ - --inline-source
82
+ - --line-numbers
83
+ - --title
84
+ - FileTransferMatchers
85
+ require_paths:
86
+ - lib
87
+ required_ruby_version: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: "0"
92
+ version:
93
+ required_rubygems_version: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: "0"
98
+ version:
99
+ requirements: []
100
+
101
+ rubyforge_project: aef
102
+ rubygems_version: 1.3.1
103
+ signing_key:
104
+ specification_version: 2
105
+ summary: FileTransferMatchers are able to verify file movement, copying and deletion in RSpec based automated tests.
106
+ test_files: []
107
+
Binary file