aktion_test 0.0.2 → 0.1.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.
- data/.rspec +2 -0
- data/.travis.yml +6 -0
- data/CHANGELOG.md +15 -0
- data/Gemfile +1 -0
- data/Rakefile +13 -0
- data/aktion_test.gemspec +3 -0
- data/lib/aktion_test/matchers/base.rb +13 -0
- data/lib/aktion_test/matchers/file_system/be_a_directory.rb +33 -0
- data/lib/aktion_test/matchers/file_system/be_a_file.rb +30 -0
- data/lib/aktion_test/matchers/file_system/directory_contains.rb +118 -0
- data/lib/aktion_test/matchers/integrations/rspec.rb +7 -0
- data/lib/aktion_test/version.rb +1 -1
- data/lib/aktion_test.rb +2 -3
- data/spec/matchers/be_a_directory_spec.rb +15 -0
- data/spec/matchers/be_a_file_spec.rb +15 -0
- data/spec/matchers/directory_contains_spec.rb +233 -0
- data/spec/spec_helper.rb +7 -0
- metadata +23 -6
data/.rspec
ADDED
data/.travis.yml
ADDED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
# v0.1.0
|
2
|
+
|
3
|
+
Addition of RSpec matchers
|
4
|
+
* Matcher to check for file existance
|
5
|
+
* Matcher to check for directory existance
|
6
|
+
* Matcher to check the contents of a directory tree
|
7
|
+
|
8
|
+
# v0.0.2
|
9
|
+
* bump gem versions
|
10
|
+
* remove cucumber
|
11
|
+
|
12
|
+
# v0.0.1
|
13
|
+
Initial Release
|
14
|
+
|
15
|
+
* Provides some basic testing gem dependencies
|
data/Gemfile
CHANGED
data/Rakefile
CHANGED
@@ -1,2 +1,15 @@
|
|
1
1
|
#!/usr/bin/env rake
|
2
2
|
require "bundler/gem_tasks"
|
3
|
+
require 'rspec/core/rake_task'
|
4
|
+
|
5
|
+
RSpec::Core::RakeTask.new do |t|
|
6
|
+
t.pattern = 'spec/**/*_spec.rb'
|
7
|
+
t.rspec_opts = '--color --format progress'
|
8
|
+
t.verbose = false
|
9
|
+
end
|
10
|
+
|
11
|
+
task :all do
|
12
|
+
exec('rake spec')
|
13
|
+
end
|
14
|
+
|
15
|
+
task :default => [:all]
|
data/aktion_test.gemspec
CHANGED
@@ -7,6 +7,7 @@ Gem::Specification.new do |gem|
|
|
7
7
|
gem.description = %q{Contains all required testing gems as well as some rake tasks and test helpers to make getting a test suite up and running easy and fast.}
|
8
8
|
gem.summary = %q{Gems, libs, helpers for test suites.}
|
9
9
|
gem.homepage = "http://aktionlab.com"
|
10
|
+
gem.license = 'MIT'
|
10
11
|
|
11
12
|
gem.files = `git ls-files`.split($\)
|
12
13
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
@@ -15,6 +16,8 @@ Gem::Specification.new do |gem|
|
|
15
16
|
gem.require_paths = ["lib"]
|
16
17
|
gem.version = AktionTest::VERSION
|
17
18
|
|
19
|
+
gem.required_ruby_version = '~> 1.9.2'
|
20
|
+
|
18
21
|
# Don't add anything to this list that depends on Rails or any
|
19
22
|
# other large frameworks/orms. This list should be suitable for
|
20
23
|
# even the simplest gem.
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module AktionTest
|
2
|
+
module Matchers
|
3
|
+
module FileSystem
|
4
|
+
def be_a_directory
|
5
|
+
DirectoryExistanceMatcher.new
|
6
|
+
end
|
7
|
+
|
8
|
+
class DirectoryExistanceMatcher < Matchers::Base
|
9
|
+
def initialize
|
10
|
+
end
|
11
|
+
|
12
|
+
def matches?(subject)
|
13
|
+
@subject = subject
|
14
|
+
directory_exists?
|
15
|
+
end
|
16
|
+
|
17
|
+
protected
|
18
|
+
|
19
|
+
def expectation
|
20
|
+
"#{@subject} to be a directory."
|
21
|
+
end
|
22
|
+
|
23
|
+
def problem
|
24
|
+
""
|
25
|
+
end
|
26
|
+
|
27
|
+
def directory_exists?
|
28
|
+
Dir.exists? @subject
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module AktionTest
|
2
|
+
module Matchers
|
3
|
+
module FileSystem
|
4
|
+
def be_a_file
|
5
|
+
FileExistanceMatcher.new
|
6
|
+
end
|
7
|
+
|
8
|
+
class FileExistanceMatcher < Matchers::Base
|
9
|
+
def initialize
|
10
|
+
end
|
11
|
+
|
12
|
+
def matches?(subject)
|
13
|
+
@subject = subject
|
14
|
+
File.exists? @subject
|
15
|
+
end
|
16
|
+
|
17
|
+
protected
|
18
|
+
|
19
|
+
def expectation
|
20
|
+
"#{@subject} to be a file"
|
21
|
+
end
|
22
|
+
|
23
|
+
def problem
|
24
|
+
""
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
@@ -0,0 +1,118 @@
|
|
1
|
+
module AktionTest
|
2
|
+
module Matchers
|
3
|
+
module FileSystem
|
4
|
+
def have_file(path)
|
5
|
+
# 'some_file' : ['some_file']
|
6
|
+
# 'some_dir/some_file' : [{'some_dir' => ['some_file']}]
|
7
|
+
# '*/some_file' : [{'*' => ['some_file']}]
|
8
|
+
# '**/some_file' : [{'**' => ['some_file']}]
|
9
|
+
# 'some_dir/*/some_file' :
|
10
|
+
segments = path.split('/')
|
11
|
+
file = segments.pop
|
12
|
+
tree = segments.reverse.reduce([file]) {|a,b| [{b => a}] }
|
13
|
+
have_tree(tree)
|
14
|
+
end
|
15
|
+
|
16
|
+
def have_files(files)
|
17
|
+
# have_tree([{'**' => files}])
|
18
|
+
DirectoryContentMatcher.new(files)
|
19
|
+
end
|
20
|
+
|
21
|
+
def have_directory(dir)
|
22
|
+
# have_tree([{'**' => [{dir => []}]}])
|
23
|
+
end
|
24
|
+
|
25
|
+
def have_directories(dirs)
|
26
|
+
# have_tree([{'**' => [Hash[a.zip(a.size.times.map{[]})]]}])
|
27
|
+
end
|
28
|
+
|
29
|
+
def have_tree(tree)
|
30
|
+
DirectoryContentMatcher.new(tree)
|
31
|
+
end
|
32
|
+
|
33
|
+
class DirectoryContentMatcher < Matchers::Base
|
34
|
+
def initialize(tree)
|
35
|
+
@tree = tree
|
36
|
+
end
|
37
|
+
|
38
|
+
def matches?(subject)
|
39
|
+
@subject = subject
|
40
|
+
directory_exists? && matches_tree?(@tree)
|
41
|
+
end
|
42
|
+
|
43
|
+
protected
|
44
|
+
|
45
|
+
def matches_tree?(tree, directory='')
|
46
|
+
tree.all? do |entry|
|
47
|
+
if entry.is_a? String
|
48
|
+
Dir[File.join(@subject, directory, entry)].any?
|
49
|
+
elsif entry.is_a? Hash
|
50
|
+
entry.to_a.all?{|dir,subtree| matches_tree?(subtree, File.join(directory, dir))}
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def directory_exists?
|
56
|
+
Dir.exists?(@subject)
|
57
|
+
end
|
58
|
+
|
59
|
+
def expectation
|
60
|
+
"#{@subject} to contain:\n#{print_tree}\n"
|
61
|
+
end
|
62
|
+
|
63
|
+
def flatten_tree(structure, directory='')
|
64
|
+
structure.map do |entry|
|
65
|
+
case entry
|
66
|
+
when Hash
|
67
|
+
entry.map{|dir,entries| flatten_tree(entries, "#{directory}#{dir}/")}
|
68
|
+
when String
|
69
|
+
"#{directory}#{entry}"
|
70
|
+
end
|
71
|
+
end.flatten
|
72
|
+
end
|
73
|
+
|
74
|
+
def problem
|
75
|
+
unless directory_exists?
|
76
|
+
if File.exists? @subject
|
77
|
+
"#{@subject} is not a directory."
|
78
|
+
else
|
79
|
+
"#{@subject} does not exist."
|
80
|
+
end
|
81
|
+
else
|
82
|
+
missing_files = flatten_tree(@tree).reject do |path|
|
83
|
+
Dir["#{@subject}/#{path}"].any?
|
84
|
+
end
|
85
|
+
if missing_files.any?
|
86
|
+
missing_files.map{|f| "#{f} was not found"}.join("\n")
|
87
|
+
else
|
88
|
+
"Unknown Problem"
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def print_tree(tree=nil, depth=1)
|
94
|
+
tree ||= @tree
|
95
|
+
tree.map do |entry|
|
96
|
+
case entry
|
97
|
+
when String then
|
98
|
+
print_file(entry, depth)
|
99
|
+
when Hash
|
100
|
+
entry.map do |k,v|
|
101
|
+
print_directory(k, depth) + "\n" +
|
102
|
+
print_tree(v, depth + 1)
|
103
|
+
end.join("\n")
|
104
|
+
end
|
105
|
+
end.join("\n")
|
106
|
+
end
|
107
|
+
|
108
|
+
def print_file(file, depth)
|
109
|
+
"#{" " * depth}#{file}"
|
110
|
+
end
|
111
|
+
|
112
|
+
def print_directory(directory, depth)
|
113
|
+
print_file(directory + '/', depth)
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
data/lib/aktion_test/version.rb
CHANGED
data/lib/aktion_test.rb
CHANGED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe AktionTest::Matchers::FileSystem::DirectoryExistanceMatcher do
|
4
|
+
it "accepts an existing directory" do
|
5
|
+
File.expand_path(File.join(__FILE__, '..')).should be_a_directory
|
6
|
+
end
|
7
|
+
|
8
|
+
it "does not accept a non-existant directory" do
|
9
|
+
File.expand_path(File.join(__FILE__, '..', 'foo')).should_not be_a_directory
|
10
|
+
end
|
11
|
+
|
12
|
+
it "does not accept a file" do
|
13
|
+
__FILE__.should_not be_a_directory
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe AktionTest::Matchers::FileSystem::FileExistanceMatcher do
|
4
|
+
it "should accept an existing file" do
|
5
|
+
__FILE__.should be_a_file
|
6
|
+
end
|
7
|
+
|
8
|
+
it "should not accept a non-existant file" do
|
9
|
+
File.join(__FILE__, '..', 'foo').should_not be_a_file
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should not accept a directory" do
|
13
|
+
File.join(__FILE__, '..').should_not be_a_file
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,233 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'active_support/core_ext/string'
|
3
|
+
|
4
|
+
describe AktionTest::Matchers::FileSystem::DirectoryContentMatcher do
|
5
|
+
let(:test_root) { File.expand_path(File.join(__FILE__, '..', '..', 'tmp')) }
|
6
|
+
|
7
|
+
before(:each) do
|
8
|
+
FileUtils.rm_rf(test_root) if Dir.exists?(test_root)
|
9
|
+
end
|
10
|
+
|
11
|
+
def build(structure, root=test_root)
|
12
|
+
FileUtils.mkdir(root) unless Dir.exists?(root)
|
13
|
+
|
14
|
+
structure.each do |entry|
|
15
|
+
case entry
|
16
|
+
when String
|
17
|
+
FileUtils.touch("#{root}/#{entry}")
|
18
|
+
when Hash
|
19
|
+
entry.each{|k,v| build(v, "#{root}/#{k}")}
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def matcher(*args)
|
25
|
+
@matcher ||= described_class.new(*args)
|
26
|
+
end
|
27
|
+
|
28
|
+
context "single file in the root" do
|
29
|
+
it "will accept if the file exists" do
|
30
|
+
build(['test_file'])
|
31
|
+
test_root.should have_tree(['test_file'])
|
32
|
+
end
|
33
|
+
|
34
|
+
it "will not accept if the file does not exist" do
|
35
|
+
test_root.should_not have_tree(['test_file'])
|
36
|
+
end
|
37
|
+
|
38
|
+
it "will not accept if the file is in a subdirectory" do
|
39
|
+
build([{'a' => ['test_file']}])
|
40
|
+
test_root.should_not have_tree(['test_file'])
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
context "single file in a specific directory" do
|
45
|
+
it "will accept if the file exists in the subdirectory" do
|
46
|
+
build([{'a' => ['test_file']}])
|
47
|
+
test_root.should have_tree([{'a' => ['test_file']}])
|
48
|
+
end
|
49
|
+
|
50
|
+
it "will not accept if the file does not exist" do
|
51
|
+
test_root.should_not have_tree([{'a' => ['test_file']}])
|
52
|
+
end
|
53
|
+
|
54
|
+
it "will not accept if the file exists in the root" do
|
55
|
+
build(['test_file'])
|
56
|
+
test_root.should_not have_tree([{'a' => ['test_file']}])
|
57
|
+
end
|
58
|
+
|
59
|
+
it "will not accept if the file exists in another directory" do
|
60
|
+
build([{'b' => ['test_file']}])
|
61
|
+
test_root.should_not have_tree([{'a' => ['test_file']}])
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
context "single file in a specific tree" do
|
66
|
+
let(:tree) { [{'a' => [{'b' => [{'c' => ['test_file']}]}]}] }
|
67
|
+
it "will accept if the file exists in the tree" do
|
68
|
+
build(tree)
|
69
|
+
test_root.should have_tree(tree)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
context "single file in any subdirectory" do
|
74
|
+
let(:tree) { [{'*' => ['test_file']}]}
|
75
|
+
|
76
|
+
it "will accept if the file exists in a subdirectory" do
|
77
|
+
build([{'a' => ['test_file']}])
|
78
|
+
test_root.should have_tree(tree)
|
79
|
+
end
|
80
|
+
|
81
|
+
it "will not accept if the file exists deeper in the tree" do
|
82
|
+
build([{'a' => [{'b' => ['test_file']}]}])
|
83
|
+
test_root.should_not have_tree(tree)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
context "single file in any tree" do
|
88
|
+
let(:tree) { [{'**' => ['test_file']}]}
|
89
|
+
|
90
|
+
it "will accept if the file exists in the tree" do
|
91
|
+
build([{'a' => [{'b' => [{'c' => ['test_file']}]}]}])
|
92
|
+
test_root.should have_tree(tree)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
context "single file with mixed specific and any directory" do
|
97
|
+
let(:tree) { [{'a' => [{'*' => [{'c' => ['test_file']}]}]}]}
|
98
|
+
|
99
|
+
it "will accept if the file exists in search path" do
|
100
|
+
build([{'a' => [{'b' => [{'c' => ['test_file']}]}]}])
|
101
|
+
test_root.should have_tree(tree)
|
102
|
+
end
|
103
|
+
|
104
|
+
it "will not accept if the file exists outside the search path" do
|
105
|
+
build([{
|
106
|
+
'a' => [{
|
107
|
+
'c' => ['test_file'],
|
108
|
+
'b' => [{
|
109
|
+
'd' => [{
|
110
|
+
'c' => ['test_file']
|
111
|
+
}]
|
112
|
+
}]
|
113
|
+
}]
|
114
|
+
}])
|
115
|
+
test_root.should_not have_tree(tree)
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
context "single file with mixed specific directories and any tree" do
|
120
|
+
let(:tree) { [{'a' => [{'**' => [{'d' => ['test_file']}]}]}]}
|
121
|
+
|
122
|
+
it "will accept if the file exists in the search path" do
|
123
|
+
build([{'a' => [{'b' => [{'c' => [{'d' => ['test_file']}]}]}]}])
|
124
|
+
test_root.should have_tree(tree)
|
125
|
+
end
|
126
|
+
|
127
|
+
it "will not accept if the file is outside the search path" do
|
128
|
+
build([{'a' => [{'b' => [{'c' => ['test_file']}]}]}])
|
129
|
+
test_root.should_not have_tree(tree)
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
context "multiple files in the root directory" do
|
134
|
+
let(:tree) { %w(test_file_a test_file_b) }
|
135
|
+
|
136
|
+
it "will accept if all of the files exist" do
|
137
|
+
build(%w(test_file_a test_file_b))
|
138
|
+
test_root.should have_tree(tree)
|
139
|
+
end
|
140
|
+
|
141
|
+
it "will not accept if not all of the files exist" do
|
142
|
+
build(['test_file_a'])
|
143
|
+
test_root.should_not have_tree(tree)
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
context "multiple files a subdirectory" do
|
148
|
+
let(:tree) { [{'a' => %w(test_file_a test_file_b)}]}
|
149
|
+
|
150
|
+
it "will accept if all of the files exist" do
|
151
|
+
build(tree)
|
152
|
+
test_root.should have_tree(tree)
|
153
|
+
end
|
154
|
+
|
155
|
+
it "will not accept if not all of the files exist" do
|
156
|
+
build([{'a' => %w(test_file_a)}])
|
157
|
+
test_root.should_not have_tree(tree)
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
context "multiple files in multiple subdirectories" do
|
162
|
+
let(:tree) { [{'a' => %w(test_file_a test_file_b), 'b' => %w(test_file_a test_file_b)}]}
|
163
|
+
|
164
|
+
it "will accept if all of the files exist" do
|
165
|
+
build(tree)
|
166
|
+
test_root.should have_tree(tree)
|
167
|
+
end
|
168
|
+
|
169
|
+
it "will not accept if not all of the files exist" do
|
170
|
+
build([{'a' => %w(test_file_a test_file_b), 'b' => %w(test_file_b)}])
|
171
|
+
test_root.should_not have_tree(tree)
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
175
|
+
context "when files do not exist" do
|
176
|
+
it "lists the missing files" do
|
177
|
+
#build([{'a' => ['test_file_a', {'b' => [{'c' => ['test_file_b', 'test_file_c']}]}]}])
|
178
|
+
build([{'a' => ['test_file_a']}])
|
179
|
+
matcher(['test_file', {'a' => ['test_file_a', {'b' => [{'c' => ['test_file_b', 'test_file_c']}]}]}]).matches?(test_root)
|
180
|
+
matcher.failure_message.should == <<-FAIL.strip_heredoc.strip
|
181
|
+
Expected #{test_root} to contain:
|
182
|
+
test_file
|
183
|
+
a/
|
184
|
+
test_file_a
|
185
|
+
b/
|
186
|
+
c/
|
187
|
+
test_file_b
|
188
|
+
test_file_c
|
189
|
+
|
190
|
+
test_file was not found
|
191
|
+
a/b/c/test_file_b was not found
|
192
|
+
a/b/c/test_file_c was not found
|
193
|
+
FAIL
|
194
|
+
end
|
195
|
+
end
|
196
|
+
|
197
|
+
context "when the subject does not exist" do
|
198
|
+
let(:nx_root) { File.join(test_root, 'a') }
|
199
|
+
|
200
|
+
it "will not be accepeted" do
|
201
|
+
nx_root.should_not have_file('some_file')
|
202
|
+
end
|
203
|
+
|
204
|
+
it "specifies the problem as the subject not existing" do
|
205
|
+
matcher(['some_file']).matches?(nx_root)
|
206
|
+
matcher.failure_message.should == <<-FAIL.strip_heredoc.strip
|
207
|
+
Expected #{nx_root} to contain:
|
208
|
+
some_file
|
209
|
+
|
210
|
+
#{nx_root} does not exist.
|
211
|
+
FAIL
|
212
|
+
end
|
213
|
+
end
|
214
|
+
|
215
|
+
context "when the subject is not a directory" do
|
216
|
+
before(:each) { build(['test_file']) }
|
217
|
+
|
218
|
+
it "will not be accepted" do
|
219
|
+
File.join(test_root, 'test_file').should_not have_file('some_file')
|
220
|
+
end
|
221
|
+
|
222
|
+
it "specifies the problem as the subject not being a directory" do
|
223
|
+
bad_root = File.join(test_root, 'test_file')
|
224
|
+
matcher(['some_file']).matches?(bad_root)
|
225
|
+
matcher.failure_message.should == <<-FAIL.strip_heredoc.strip
|
226
|
+
Expected #{bad_root} to contain:
|
227
|
+
some_file
|
228
|
+
|
229
|
+
#{bad_root} is not a directory.
|
230
|
+
FAIL
|
231
|
+
end
|
232
|
+
end
|
233
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aktion_test
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-11-
|
12
|
+
date: 2012-11-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -100,16 +100,29 @@ extensions: []
|
|
100
100
|
extra_rdoc_files: []
|
101
101
|
files:
|
102
102
|
- .gitignore
|
103
|
+
- .rspec
|
103
104
|
- .rvmrc
|
105
|
+
- .travis.yml
|
106
|
+
- CHANGELOG.md
|
104
107
|
- Gemfile
|
105
108
|
- LICENSE
|
106
109
|
- README.md
|
107
110
|
- Rakefile
|
108
111
|
- aktion_test.gemspec
|
109
112
|
- lib/aktion_test.rb
|
113
|
+
- lib/aktion_test/matchers/base.rb
|
114
|
+
- lib/aktion_test/matchers/file_system/be_a_directory.rb
|
115
|
+
- lib/aktion_test/matchers/file_system/be_a_file.rb
|
116
|
+
- lib/aktion_test/matchers/file_system/directory_contains.rb
|
117
|
+
- lib/aktion_test/matchers/integrations/rspec.rb
|
110
118
|
- lib/aktion_test/version.rb
|
119
|
+
- spec/matchers/be_a_directory_spec.rb
|
120
|
+
- spec/matchers/be_a_file_spec.rb
|
121
|
+
- spec/matchers/directory_contains_spec.rb
|
122
|
+
- spec/spec_helper.rb
|
111
123
|
homepage: http://aktionlab.com
|
112
|
-
licenses:
|
124
|
+
licenses:
|
125
|
+
- MIT
|
113
126
|
post_install_message:
|
114
127
|
rdoc_options: []
|
115
128
|
require_paths:
|
@@ -117,9 +130,9 @@ require_paths:
|
|
117
130
|
required_ruby_version: !ruby/object:Gem::Requirement
|
118
131
|
none: false
|
119
132
|
requirements:
|
120
|
-
- -
|
133
|
+
- - ~>
|
121
134
|
- !ruby/object:Gem::Version
|
122
|
-
version:
|
135
|
+
version: 1.9.2
|
123
136
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
124
137
|
none: false
|
125
138
|
requirements:
|
@@ -132,4 +145,8 @@ rubygems_version: 1.8.24
|
|
132
145
|
signing_key:
|
133
146
|
specification_version: 3
|
134
147
|
summary: Gems, libs, helpers for test suites.
|
135
|
-
test_files:
|
148
|
+
test_files:
|
149
|
+
- spec/matchers/be_a_directory_spec.rb
|
150
|
+
- spec/matchers/be_a_file_spec.rb
|
151
|
+
- spec/matchers/directory_contains_spec.rb
|
152
|
+
- spec/spec_helper.rb
|