mspec 1.5.15 → 1.5.16
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +1 -1
- data/lib/mspec/helpers.rb +1 -0
- data/lib/mspec/helpers/fixture.rb +2 -1
- data/lib/mspec/helpers/fmode.rb +15 -0
- data/lib/mspec/matchers.rb +1 -0
- data/lib/mspec/matchers/have_data.rb +48 -0
- data/lib/mspec/version.rb +1 -1
- data/spec/helpers/fixture_spec.rb +5 -0
- data/spec/helpers/fmode_spec.rb +14 -0
- data/spec/matchers/have_data_spec.rb +51 -0
- metadata +6 -2
data/Rakefile
CHANGED
@@ -18,7 +18,7 @@ spec = Gem::Specification.new do |s|
|
|
18
18
|
|
19
19
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
20
20
|
s.authors = ["Brian Ford"]
|
21
|
-
s.date = %q{2010-02-
|
21
|
+
s.date = %q{2010-02-08}
|
22
22
|
s.email = %q{bford@engineyard.com}
|
23
23
|
s.has_rdoc = true
|
24
24
|
s.extra_rdoc_files = %w[ README LICENSE ]
|
data/lib/mspec/helpers.rb
CHANGED
@@ -7,6 +7,7 @@ require 'mspec/helpers/enumerator_class'
|
|
7
7
|
require 'mspec/helpers/environment'
|
8
8
|
require 'mspec/helpers/fixture'
|
9
9
|
require 'mspec/helpers/flunk'
|
10
|
+
require 'mspec/helpers/fmode'
|
10
11
|
require 'mspec/helpers/fs'
|
11
12
|
require 'mspec/helpers/hash'
|
12
13
|
require 'mspec/helpers/infinity'
|
@@ -15,6 +15,7 @@ class Object
|
|
15
15
|
def fixture(dir, *args)
|
16
16
|
path = File.dirname(dir)
|
17
17
|
path = path[0..-7] if path[-7..-1] == "/shared"
|
18
|
-
|
18
|
+
dir = path[-9..-1] == "/fixtures" ? "" : "fixtures"
|
19
|
+
File.expand_path(File.join(path, dir, args))
|
19
20
|
end
|
20
21
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'mspec/guards/feature'
|
2
|
+
|
3
|
+
class Object
|
4
|
+
# This helper simplifies passing file access modes regardless of
|
5
|
+
# whether the :encoding feature is enabled. Only the access specifier
|
6
|
+
# itself will be returned if :encoding is not enabled. Otherwise,
|
7
|
+
# the full mode string will be returned (i.e. the helper is a no-op).
|
8
|
+
def fmode(mode)
|
9
|
+
if FeatureGuard.enabled? :encoding
|
10
|
+
mode
|
11
|
+
else
|
12
|
+
mode.split(':').first
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/mspec/matchers.rb
CHANGED
@@ -14,6 +14,7 @@ require 'mspec/matchers/equal_element'
|
|
14
14
|
require 'mspec/matchers/equal_utf16'
|
15
15
|
require 'mspec/matchers/have_constant'
|
16
16
|
require 'mspec/matchers/have_class_variable'
|
17
|
+
require 'mspec/matchers/have_data'
|
17
18
|
require 'mspec/matchers/have_instance_method'
|
18
19
|
require 'mspec/matchers/have_instance_variable'
|
19
20
|
require 'mspec/matchers/have_method'
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'mspec/guards/feature'
|
2
|
+
require 'mspec/helpers/fmode'
|
3
|
+
|
4
|
+
class HaveDataMatcher
|
5
|
+
def initialize(data)
|
6
|
+
@data = data
|
7
|
+
end
|
8
|
+
|
9
|
+
def matches?(name)
|
10
|
+
@name = name
|
11
|
+
|
12
|
+
if FeatureGuard.enabled? :encoding
|
13
|
+
size = @data.bytesize
|
14
|
+
else
|
15
|
+
size = @data.size
|
16
|
+
end
|
17
|
+
|
18
|
+
File.open @name, fmode("rb:binary") do |f|
|
19
|
+
return f.read(size) == @data
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def failure_message
|
24
|
+
["Expected #{@name}",
|
25
|
+
"to have data #{@data.pretty_inspect}"]
|
26
|
+
end
|
27
|
+
|
28
|
+
def negative_failure_message
|
29
|
+
["Expected #{@name}",
|
30
|
+
"not to have data #{@data.pretty_inspect}"]
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
class Object
|
35
|
+
# Opens a file specified by the string the matcher is called on
|
36
|
+
# and compares the +data+ passed to the matcher with the contents
|
37
|
+
# of the file. Expects to match the first N bytes of the file
|
38
|
+
# with +data+. For example, suppose @name is the name of a file:
|
39
|
+
#
|
40
|
+
# @name.should have_data("123")
|
41
|
+
#
|
42
|
+
# passes if the file @name has "123" as the first 3 bytes. The
|
43
|
+
# file can contain more bytes than +data+. The extra bytes do not
|
44
|
+
# affect the result.
|
45
|
+
def have_data(data)
|
46
|
+
HaveDataMatcher.new(data)
|
47
|
+
end
|
48
|
+
end
|
data/lib/mspec/version.rb
CHANGED
@@ -15,4 +15,9 @@ describe Object, "#fixture" do
|
|
15
15
|
name = fixture("some/path/shared/file.rb", "dir", "file.txt")
|
16
16
|
name.should == "#{@dir}/some/path/fixtures/dir/file.txt"
|
17
17
|
end
|
18
|
+
|
19
|
+
it "does not append '/fixtures' if it is the suffix of the directory string" do
|
20
|
+
name = fixture("some/path/fixtures/file.rb", "dir", "file.txt")
|
21
|
+
name.should == "#{@dir}/some/path/fixtures/dir/file.txt"
|
22
|
+
end
|
18
23
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
require 'mspec/helpers/fmode'
|
3
|
+
|
4
|
+
describe Object, "#fmode" do
|
5
|
+
it "returns the argument unmodified if :encoding feature is enabled" do
|
6
|
+
FeatureGuard.should_receive(:enabled?).with(:encoding).and_return(true)
|
7
|
+
fmode("rb:binary:utf-8").should == "rb:binary:utf-8"
|
8
|
+
end
|
9
|
+
|
10
|
+
it "returns only the file access mode if :encoding feature is not enabled" do
|
11
|
+
FeatureGuard.should_receive(:enabled?).with(:encoding).and_return(false)
|
12
|
+
fmode("rb:binary:utf-8").should == "rb"
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
require 'mspec/expectations/expectations'
|
3
|
+
require 'mspec/matchers/have_data'
|
4
|
+
require 'mspec/helpers/tmp'
|
5
|
+
require 'mspec/helpers/fs'
|
6
|
+
|
7
|
+
describe HaveDataMatcher do
|
8
|
+
before :each do
|
9
|
+
@name = tmp "have_data_matcher"
|
10
|
+
touch(@name) { |f| f.puts "123abc" }
|
11
|
+
end
|
12
|
+
|
13
|
+
after :each do
|
14
|
+
rm_r @name
|
15
|
+
end
|
16
|
+
|
17
|
+
it "raises an IOError if the named file does not exist" do
|
18
|
+
lambda do
|
19
|
+
HaveDataMatcher.new("123").matches?("no_file.txt")
|
20
|
+
end.should raise_error(Errno::ENOENT)
|
21
|
+
end
|
22
|
+
|
23
|
+
it "matches when the named file begins with the same bytes as data" do
|
24
|
+
HaveDataMatcher.new("123a").matches?(@name).should be_true
|
25
|
+
end
|
26
|
+
|
27
|
+
it "does not match when the named file begins with fewer bytes than data" do
|
28
|
+
HaveDataMatcher.new("123abcPQR").matches?(@name).should be_false
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
it "does not match when the named file begins with different bytes than data" do
|
33
|
+
HaveDataMatcher.new("abc1").matches?(@name).should be_false
|
34
|
+
end
|
35
|
+
|
36
|
+
it "provides a useful failure message" do
|
37
|
+
matcher = HaveDataMatcher.new("abc1")
|
38
|
+
matcher.matches?(@name)
|
39
|
+
matcher.failure_message.should == [
|
40
|
+
"Expected #{@name}", "to have data \"abc1\"\n"
|
41
|
+
]
|
42
|
+
end
|
43
|
+
|
44
|
+
it "provides a useful negative failure message" do
|
45
|
+
matcher = HaveDataMatcher.new("123abc")
|
46
|
+
matcher.matches?(@name)
|
47
|
+
matcher.negative_failure_message.should == [
|
48
|
+
"Expected #{@name}", "not to have data \"123abc\"\n"
|
49
|
+
]
|
50
|
+
end
|
51
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mspec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.16
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Ford
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-02-
|
12
|
+
date: 2010-02-08 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -62,6 +62,7 @@ files:
|
|
62
62
|
- lib/mspec/helpers/environment.rb
|
63
63
|
- lib/mspec/helpers/fixture.rb
|
64
64
|
- lib/mspec/helpers/flunk.rb
|
65
|
+
- lib/mspec/helpers/fmode.rb
|
65
66
|
- lib/mspec/helpers/fs.rb
|
66
67
|
- lib/mspec/helpers/hash.rb
|
67
68
|
- lib/mspec/helpers/infinity.rb
|
@@ -90,6 +91,7 @@ files:
|
|
90
91
|
- lib/mspec/matchers/equal_utf16.rb
|
91
92
|
- lib/mspec/matchers/have_class_variable.rb
|
92
93
|
- lib/mspec/matchers/have_constant.rb
|
94
|
+
- lib/mspec/matchers/have_data.rb
|
93
95
|
- lib/mspec/matchers/have_instance_method.rb
|
94
96
|
- lib/mspec/matchers/have_instance_variable.rb
|
95
97
|
- lib/mspec/matchers/have_method.rb
|
@@ -192,6 +194,7 @@ files:
|
|
192
194
|
- spec/helpers/environment_spec.rb
|
193
195
|
- spec/helpers/fixture_spec.rb
|
194
196
|
- spec/helpers/flunk_spec.rb
|
197
|
+
- spec/helpers/fmode_spec.rb
|
195
198
|
- spec/helpers/fs_spec.rb
|
196
199
|
- spec/helpers/hash_spec.rb
|
197
200
|
- spec/helpers/infinity_spec.rb
|
@@ -218,6 +221,7 @@ files:
|
|
218
221
|
- spec/matchers/equal_utf16_spec.rb
|
219
222
|
- spec/matchers/have_class_variable_spec.rb
|
220
223
|
- spec/matchers/have_constant_spec.rb
|
224
|
+
- spec/matchers/have_data_spec.rb
|
221
225
|
- spec/matchers/have_instance_method_spec.rb
|
222
226
|
- spec/matchers/have_instance_variable_spec.rb
|
223
227
|
- spec/matchers/have_method_spec.rb
|