webspicy 0.2.3 → 0.3.0.pre.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/examples/restful/Gemfile.lock +2 -2
- data/examples/restful/Rakefile +3 -7
- data/lib/webspicy/configuration.rb +28 -10
- data/lib/webspicy/scope.rb +10 -5
- data/lib/webspicy/version.rb +2 -2
- data/spec/unit/scope/test_each_resource.rb +16 -7
- data/spec/unit/scope/test_each_service.rb +2 -4
- data/spec/unit/spec_helper.rb +5 -1
- data/spec/unit/test_configuration.rb +29 -6
- data/tasks/test.rake +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 397c21900711f78462183be1dab9cba93caf6cdf
|
4
|
+
data.tar.gz: 12b2b0e27ee8171922e1d032fae95b0980d21ff2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2e68c059d88816ecdabf5737784aae341cd65f7891ce1db3264ac4dfbdaf6c75744b49645e94eb84597159ce241273808481d58d80e17bc0f41d42101ec838e8
|
7
|
+
data.tar.gz: 36477950cfb806330fff4ee261485960e87f696d575a2d55945a10b685090832be6b452eea0b25186a23d55288197c9837c18be20816ba19b8b75b346d3ed4fc
|
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ../..
|
3
3
|
specs:
|
4
|
-
webspicy (0.2.
|
4
|
+
webspicy (0.2.3)
|
5
5
|
finitio (~> 0.5.2)
|
6
6
|
http (~> 2)
|
7
7
|
path (~> 1.3)
|
@@ -19,7 +19,7 @@ GEM
|
|
19
19
|
unf (>= 0.0.5, < 1.0.0)
|
20
20
|
finitio (0.5.2)
|
21
21
|
citrus (>= 2.4, < 4.0)
|
22
|
-
http (2.2.
|
22
|
+
http (2.2.1)
|
23
23
|
addressable (~> 2.3)
|
24
24
|
http-cookie (~> 1.0)
|
25
25
|
http-form_data (~> 1.0.1)
|
data/examples/restful/Rakefile
CHANGED
@@ -4,17 +4,14 @@ require 'webspicy'
|
|
4
4
|
|
5
5
|
desc "Checks all .yml definition files"
|
6
6
|
task :check do
|
7
|
-
config = Webspicy::Configuration.new
|
8
|
-
c.add_folder Path.dir/"webspicy"
|
9
|
-
end
|
7
|
+
config = Webspicy::Configuration.new(Path.dir/"webspicy")
|
10
8
|
Webspicy::Checker.new(config).call
|
11
9
|
end
|
12
10
|
|
13
11
|
namespace :test do
|
14
12
|
desc "Run all tests directly on Sinatra application using rack/test"
|
15
13
|
task :rack do
|
16
|
-
config = Webspicy::Configuration.new do |c|
|
17
|
-
c.add_folder Path.dir/"webspicy"
|
14
|
+
config = Webspicy::Configuration.new(Path.dir/"webspicy") do |c|
|
18
15
|
c.client = Webspicy::RackTestClient.for(::Sinatra::Application)
|
19
16
|
c.before_each do |_,_,_,client|
|
20
17
|
client.api.post "/reset"
|
@@ -25,9 +22,8 @@ namespace :test do
|
|
25
22
|
|
26
23
|
desc "Runs all tests on the real web server (must be launched previously)"
|
27
24
|
task :real do
|
28
|
-
config = Webspicy::Configuration.new do |c|
|
25
|
+
config = Webspicy::Configuration.new(Path.dir/"webspicy") do |c|
|
29
26
|
c.host = "http://127.0.0.1:4567"
|
30
|
-
c.add_folder Path.dir/"webspicy"
|
31
27
|
c.client = Webspicy::HttpClient
|
32
28
|
c.before_each do |_,_,_,client|
|
33
29
|
client.api.post "http://127.0.0.1:4567/reset"
|
@@ -1,8 +1,9 @@
|
|
1
1
|
module Webspicy
|
2
2
|
class Configuration
|
3
3
|
|
4
|
-
def initialize
|
5
|
-
@
|
4
|
+
def initialize(folder = Path.pwd)
|
5
|
+
@folder = folder
|
6
|
+
@children = []
|
6
7
|
@before_listeners = []
|
7
8
|
@rspec_options = default_rspec_options
|
8
9
|
@run_counterexamples = default_run_counterexamples
|
@@ -11,16 +12,33 @@ module Webspicy
|
|
11
12
|
@client = HttpClient
|
12
13
|
yield(self) if block_given?
|
13
14
|
end
|
15
|
+
attr_accessor :folder
|
16
|
+
protected :folder=
|
14
17
|
|
15
18
|
# Adds a folder to the list of folders where test case definitions are
|
16
19
|
# to be found.
|
17
|
-
def
|
18
|
-
|
19
|
-
|
20
|
-
|
20
|
+
def folder(folder = nil, &bl)
|
21
|
+
if folder.nil?
|
22
|
+
@folder
|
23
|
+
else
|
24
|
+
folder = folder.is_a?(String) ? @folder/folder : Path(folder)
|
25
|
+
raise "Folder `#{folder}` does not exists" unless folder.exists? && folder.directory?
|
26
|
+
raise "Folder must be a descendant" unless folder.inside?(@folder)
|
27
|
+
child = dup do |c|
|
28
|
+
c.folder = folder
|
29
|
+
end
|
30
|
+
yield(child) if block_given?
|
31
|
+
@children << child
|
32
|
+
child
|
33
|
+
end
|
34
|
+
end
|
35
|
+
attr_accessor :children
|
36
|
+
protected :children=
|
37
|
+
|
38
|
+
# Returns whether this configuration has children configurations or not
|
39
|
+
def has_children?
|
40
|
+
!children.empty?
|
21
41
|
end
|
22
|
-
attr_accessor :folders
|
23
|
-
protected :folders=
|
24
42
|
|
25
43
|
# Sets whether counter examples have to be ran or not.
|
26
44
|
def run_counterexamples=(run_counterexamples)
|
@@ -35,7 +53,7 @@ module Webspicy
|
|
35
53
|
|
36
54
|
# Returns the defaut value for run_counterexamples
|
37
55
|
def default_run_counterexamples
|
38
|
-
ENV['ROBUST'].nil? || ENV['ROBUST'] != 'no'
|
56
|
+
ENV['ROBUST'].nil? || (ENV['ROBUST'] != 'no')
|
39
57
|
end
|
40
58
|
private :default_run_counterexamples
|
41
59
|
|
@@ -176,7 +194,7 @@ module Webspicy
|
|
176
194
|
# original.
|
177
195
|
def dup(&bl)
|
178
196
|
super.tap do |d|
|
179
|
-
d.
|
197
|
+
d.children = self.children.dup
|
180
198
|
d.rspec_options = self.rspec_options.dup
|
181
199
|
d.before_listeners = self.before_listeners.dup
|
182
200
|
yield d if block_given?
|
data/lib/webspicy/scope.rb
CHANGED
@@ -13,14 +13,19 @@ module Webspicy
|
|
13
13
|
# Yields each resource file in the current scope
|
14
14
|
def each_resource_file(&bl)
|
15
15
|
return enum_for(:each_resource_file) unless block_given?
|
16
|
-
config.
|
17
|
-
|
16
|
+
if config.has_children?
|
17
|
+
config.children.each do |child|
|
18
|
+
_each_resource_file(child, &bl)
|
19
|
+
end
|
20
|
+
else
|
21
|
+
_each_resource_file(config, &bl)
|
18
22
|
end
|
19
23
|
end
|
20
24
|
|
21
25
|
# Recursive implementation of `each_resource_file` for each
|
22
26
|
# folder in the configuration.
|
23
|
-
def _each_resource_file(
|
27
|
+
def _each_resource_file(config)
|
28
|
+
folder = config.folder
|
24
29
|
folder.glob("**/*.yml").select(&to_filter_proc(config.file_filter)).each do |file|
|
25
30
|
yield file, folder
|
26
31
|
end
|
@@ -61,8 +66,8 @@ module Webspicy
|
|
61
66
|
# Returns the Data system to use for parsing schemas
|
62
67
|
def data_system
|
63
68
|
@data_system ||= begin
|
64
|
-
|
65
|
-
|
69
|
+
schema = config.folder/"schema.fio"
|
70
|
+
schema.file? ? Finitio::DEFAULT_SYSTEM.parse(schema.read) : Finitio::DEFAULT_SYSTEM
|
66
71
|
end
|
67
72
|
end
|
68
73
|
|
data/lib/webspicy/version.rb
CHANGED
@@ -15,9 +15,7 @@ module Webspicy
|
|
15
15
|
context 'without any filter' do
|
16
16
|
|
17
17
|
let(:configuration) {
|
18
|
-
Configuration.new
|
19
|
-
c.add_folder restful_folder
|
20
|
-
}
|
18
|
+
Configuration.new(restful_folder)
|
21
19
|
}
|
22
20
|
|
23
21
|
it 'returns all files' do
|
@@ -28,8 +26,7 @@ module Webspicy
|
|
28
26
|
context 'with a file filter as a proc' do
|
29
27
|
|
30
28
|
let(:configuration) {
|
31
|
-
Configuration.new{|c|
|
32
|
-
c.add_folder restful_folder
|
29
|
+
Configuration.new(restful_folder){|c|
|
33
30
|
c.file_filter = ->(f) {
|
34
31
|
f.basename.to_s == "getTodo.yml"
|
35
32
|
}
|
@@ -44,8 +41,7 @@ module Webspicy
|
|
44
41
|
context 'with a file filter as a Regex' do
|
45
42
|
|
46
43
|
let(:configuration) {
|
47
|
-
Configuration.new{|c|
|
48
|
-
c.add_folder restful_folder
|
44
|
+
Configuration.new(restful_folder){|c|
|
49
45
|
c.file_filter = /getTodo.yml/
|
50
46
|
}
|
51
47
|
}
|
@@ -55,5 +51,18 @@ module Webspicy
|
|
55
51
|
end
|
56
52
|
end
|
57
53
|
|
54
|
+
context 'when having children folders' do
|
55
|
+
|
56
|
+
let(:configuration) {
|
57
|
+
Configuration.new(restful_folder) do |c|
|
58
|
+
c.folder 'todo'
|
59
|
+
end
|
60
|
+
}
|
61
|
+
|
62
|
+
it 'returns all files' do
|
63
|
+
expect(subject.size).to eql(restful_folder.glob('**/*.yml').size)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
58
67
|
end
|
59
68
|
end
|
@@ -19,8 +19,7 @@ module Webspicy
|
|
19
19
|
context 'without any filter' do
|
20
20
|
|
21
21
|
let(:configuration) {
|
22
|
-
Configuration.new{|c|
|
23
|
-
c.add_folder restful_folder
|
22
|
+
Configuration.new(restful_folder){|c|
|
24
23
|
c.file_filter = /getTodo.yml/
|
25
24
|
}
|
26
25
|
}
|
@@ -33,8 +32,7 @@ module Webspicy
|
|
33
32
|
context 'with a service filter as a proc' do
|
34
33
|
|
35
34
|
let(:configuration) {
|
36
|
-
Configuration.new{|c|
|
37
|
-
c.add_folder restful_folder
|
35
|
+
Configuration.new(restful_folder){|c|
|
38
36
|
c.file_filter = /getTodo.yml/
|
39
37
|
c.service_filter = ->(s) {
|
40
38
|
s.method == "POST"
|
data/spec/unit/spec_helper.rb
CHANGED
@@ -10,6 +10,33 @@ module Webspicy
|
|
10
10
|
expect(seen).to be_a(Configuration)
|
11
11
|
end
|
12
12
|
|
13
|
+
describe 'folder' do
|
14
|
+
|
15
|
+
it 'returns the main folder without arg' do
|
16
|
+
config = Configuration.new(Path.dir)
|
17
|
+
expect(config.folder).to eql(Path.dir)
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'creates a child when adding a folder' do
|
21
|
+
Configuration.new(Path.dir) do |c|
|
22
|
+
child = c.folder 'resource'
|
23
|
+
expect(child).to be_a(Configuration)
|
24
|
+
expect(child.folder).to eql(Path.dir/'resource')
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'yield the child to the block if any given' do
|
29
|
+
Configuration.new(Path.dir) do |c|
|
30
|
+
seen = nil
|
31
|
+
c.folder 'resource' do |child|
|
32
|
+
seen = child
|
33
|
+
end
|
34
|
+
expect(seen).to be_a(Configuration)
|
35
|
+
expect(seen.folder).to eql(Path.dir/'resource')
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
13
40
|
describe 'run_counterexamples' do
|
14
41
|
|
15
42
|
it 'is true by default' do
|
@@ -83,8 +110,7 @@ module Webspicy
|
|
83
110
|
describe 'dup' do
|
84
111
|
|
85
112
|
let(:original) do
|
86
|
-
Configuration.new do |c|
|
87
|
-
c.add_folder Path.dir/'resource'
|
113
|
+
Configuration.new(Path.dir/'resource') do |c|
|
88
114
|
c.host = "http://127.0.0.1"
|
89
115
|
end
|
90
116
|
end
|
@@ -93,19 +119,16 @@ module Webspicy
|
|
93
119
|
duped = original.dup do |d|
|
94
120
|
d.host = "http://127.0.0.1:4567"
|
95
121
|
end
|
122
|
+
expect(duped.folder).to eql(Path.dir/'resource')
|
96
123
|
expect(duped.host).to eql("http://127.0.0.1:4567")
|
97
124
|
expect(original.host).to eql("http://127.0.0.1")
|
98
125
|
end
|
99
126
|
|
100
127
|
it 'duplicates the internal arrays to' do
|
101
128
|
duped = original.dup do |d|
|
102
|
-
d.add_folder Path.dir/'scope'
|
103
129
|
d.rspec_options << "--hello"
|
104
130
|
d.before_each do end
|
105
131
|
end
|
106
|
-
expect(duped.folders.size).to eql(2)
|
107
|
-
expect(original.folders.size).to eql(1)
|
108
|
-
|
109
132
|
expect(duped.rspec_options.last).to eq("--hello")
|
110
133
|
expect(original.rspec_options.last).not_to eq("--hello")
|
111
134
|
|
data/tasks/test.rake
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: webspicy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0.pre.rc1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bernard Lambeau
|
@@ -169,9 +169,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
169
169
|
version: '0'
|
170
170
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
171
171
|
requirements:
|
172
|
-
- - "
|
172
|
+
- - ">"
|
173
173
|
- !ruby/object:Gem::Version
|
174
|
-
version:
|
174
|
+
version: 1.3.1
|
175
175
|
requirements: []
|
176
176
|
rubyforge_project:
|
177
177
|
rubygems_version: 2.5.1
|