cspec 0.2.2 → 0.2.5
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.
- checksums.yaml +4 -4
- data/Gemfile.lock +7 -1
- data/README.md +2 -2
- data/cspec.gemspec +1 -0
- data/examples/advance/Gemfile.lock +1 -1
- data/examples/basic/Gemfile.lock +1 -1
- data/examples/basic/myspec.rb +2 -2
- data/examples/basic/specs.csv +3 -12
- data/examples/class_methods/Gemfile.lock +1 -1
- data/lib/cspec/data_type.rb +13 -4
- data/lib/cspec/loader.rb +2 -2
- data/lib/cspec/result.rb +1 -1
- data/lib/cspec/runner.rb +11 -5
- data/lib/cspec/spec.rb +29 -1
- data/lib/cspec/validator.rb +5 -1
- data/lib/cspec/version.rb +1 -1
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e945a9ed7c6719e928f54888ed3f02daaf6bf5c28dc95af9beb2a2654299a430
|
4
|
+
data.tar.gz: a91fd779859320fd456701ddf76190b75f322f2cdca9b5cc793c559985566a14
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 21e1a98df561d385c1e44b284760f3c5e8b7abe61506197824d5e5a2513421aee4e8d3a74d39323aa606d55d5048980ab67688d7e3216a3d325ea41decc8f316
|
7
|
+
data.tar.gz: e07ae95020f5c8aa7674255f37f6ca02f6350e8bf0400907a45f185323438011fb024ca0fb9c985a5769d22a86db13547c4bc539ec60946205f2b785ac85fb1a
|
data/Gemfile.lock
CHANGED
@@ -1,13 +1,18 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
cspec (0.2.
|
4
|
+
cspec (0.2.3)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
|
+
coderay (1.1.3)
|
9
10
|
diff-lcs (1.5.0)
|
10
11
|
docile (1.4.0)
|
12
|
+
method_source (1.0.0)
|
13
|
+
pry (0.14.1)
|
14
|
+
coderay (~> 1.1)
|
15
|
+
method_source (~> 1.0)
|
11
16
|
rake (10.5.0)
|
12
17
|
rspec (3.11.0)
|
13
18
|
rspec-core (~> 3.11.0)
|
@@ -35,6 +40,7 @@ PLATFORMS
|
|
35
40
|
DEPENDENCIES
|
36
41
|
bundler (~> 1.17)
|
37
42
|
cspec!
|
43
|
+
pry
|
38
44
|
rake (~> 10.0)
|
39
45
|
rspec (~> 3.0)
|
40
46
|
simplecov
|
data/README.md
CHANGED
@@ -12,7 +12,7 @@ The goal of this project is to have a centralised location where all specs can b
|
|
12
12
|
```
|
13
13
|
* Create a CSV named `specs.csv` with the following spec
|
14
14
|
```csv
|
15
|
-
class,name,type,
|
15
|
+
class,name,type,initialization_arg_1,method,method_arg_1,expected
|
16
16
|
MyClass,my test,,hello,,world
|
17
17
|
```
|
18
18
|
* Create a file named `my_csv_specs.rb` to run the specs
|
@@ -31,4 +31,4 @@ result = CSpec::Runner.run!("#{Dir.pwd}/specs.csv")
|
|
31
31
|
puts "Success: #{result}"
|
32
32
|
```
|
33
33
|
|
34
|
-
* Run with `ruby my_csv_specs.rb`
|
34
|
+
* Run with `ruby my_csv_specs.rb`
|
data/cspec.gemspec
CHANGED
@@ -39,6 +39,7 @@ Gem::Specification.new do |spec|
|
|
39
39
|
spec.require_paths = ['lib']
|
40
40
|
|
41
41
|
spec.add_development_dependency 'bundler', '~> 1.17'
|
42
|
+
spec.add_development_dependency 'pry'
|
42
43
|
spec.add_development_dependency 'rake', '~> 10.0'
|
43
44
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
44
45
|
spec.add_development_dependency 'simplecov'
|
data/examples/basic/Gemfile.lock
CHANGED
data/examples/basic/myspec.rb
CHANGED
data/examples/basic/specs.csv
CHANGED
@@ -1,12 +1,3 @@
|
|
1
|
-
class,name,type,method,
|
2
|
-
MyClass,my test,instance,
|
3
|
-
MyClass,my test,instance,
|
4
|
-
MyClass,my test,instance,hello2,aaa,world2aaa
|
5
|
-
MyClass,my test,instance,hello,,world
|
6
|
-
MyClass,my test,instance,hello2,aaa,world2aaa
|
7
|
-
MyClass,my test,instance,hello,,world
|
8
|
-
MyClass,my test,instance,hello2,aaa,world2aaa
|
9
|
-
MyClass,my test,instance,hello,,world
|
10
|
-
MyClass,my test,instance,hello2,aaa,world2aaa
|
11
|
-
MyClass,my test,instance,hello,,world
|
12
|
-
|
1
|
+
class,name,type,method,expected
|
2
|
+
MyClass,my test,instance,hello,world
|
3
|
+
MyClass,my test,instance,ok?,true
|
data/lib/cspec/data_type.rb
CHANGED
@@ -2,6 +2,16 @@
|
|
2
2
|
|
3
3
|
module CSpec
|
4
4
|
module DataType
|
5
|
+
MATCHERS = [
|
6
|
+
{ condition: /^\d+\.\d+$/, proc: proc { |input| input.to_f } },
|
7
|
+
{ condition: /^\d+$/, proc: proc { |input| input.to_i } },
|
8
|
+
{ condition: /true/, proc: proc { true } },
|
9
|
+
{ condition: /^\[.*\]$/, proc: proc { |input| eval(input) } },
|
10
|
+
{ condition: /false/, proc: proc { false } },
|
11
|
+
{ condition: /nil/, proc: proc { nil } },
|
12
|
+
{ condition: /^$/, proc: proc { nil } }
|
13
|
+
].freeze
|
14
|
+
|
5
15
|
def self.convert_all(inputs)
|
6
16
|
return nil unless inputs
|
7
17
|
|
@@ -12,10 +22,9 @@ module CSpec
|
|
12
22
|
return input unless input.instance_of?(String)
|
13
23
|
|
14
24
|
input = input.strip
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
return nil if ['', nil, 'nil'].include?(input)
|
25
|
+
MATCHERS.each do |matcher|
|
26
|
+
return matcher[:proc].call(input) if input.match?(matcher[:condition])
|
27
|
+
end
|
19
28
|
|
20
29
|
input.to_s
|
21
30
|
end
|
data/lib/cspec/loader.rb
CHANGED
@@ -23,9 +23,9 @@ module CSpec
|
|
23
23
|
})
|
24
24
|
end
|
25
25
|
|
26
|
-
def self.
|
26
|
+
def self.validate_structure(filename)
|
27
27
|
headers = CSV.open(filename, &:readline)
|
28
|
-
::CSpec::Validator.
|
28
|
+
::CSpec::Validator.validate_structure(headers)
|
29
29
|
end
|
30
30
|
end
|
31
31
|
end
|
data/lib/cspec/result.rb
CHANGED
data/lib/cspec/runner.rb
CHANGED
@@ -3,16 +3,17 @@
|
|
3
3
|
module CSpec
|
4
4
|
module Runner
|
5
5
|
def self.run!(filepath)
|
6
|
-
|
7
|
-
|
8
|
-
puts errors
|
9
|
-
return false
|
10
|
-
end
|
6
|
+
return false if process_errors(Loader.validate_structure(filepath))
|
7
|
+
|
11
8
|
specs = Loader.load(filepath)
|
9
|
+
return false if process_errors(::CSpec::Validator.validate_specs(specs))
|
10
|
+
|
12
11
|
results = run(specs)
|
13
12
|
|
14
13
|
return true if CSpec::Result.success?(results)
|
15
14
|
|
15
|
+
puts results.inspect
|
16
|
+
puts '#######################'
|
16
17
|
ResultsOutputter.display(results)
|
17
18
|
false
|
18
19
|
end
|
@@ -27,5 +28,10 @@ module CSpec
|
|
27
28
|
Result.from_spec(spec, e.inspect)
|
28
29
|
end
|
29
30
|
end
|
31
|
+
|
32
|
+
def self.process_errors(errors)
|
33
|
+
puts errors unless errors.empty?
|
34
|
+
!errors.empty?
|
35
|
+
end
|
30
36
|
end
|
31
37
|
end
|
data/lib/cspec/spec.rb
CHANGED
@@ -29,8 +29,36 @@ module CSpec
|
|
29
29
|
initialization_args == other.initialization_args
|
30
30
|
end
|
31
31
|
|
32
|
+
def error
|
33
|
+
return ["#{self.class} does not exist"] unless Object.const_defined?(self.class)
|
34
|
+
|
35
|
+
errors = []
|
36
|
+
|
37
|
+
errors += send("#{type}_errors")
|
38
|
+
|
39
|
+
errors.size.positive? ? errors.flatten : nil
|
40
|
+
end
|
41
|
+
|
32
42
|
def to_s
|
33
|
-
"name: #{name}, class: #{self.class}, method: #{method},"
|
43
|
+
"name: #{name}, class: #{self.class}, method: #{method}, method_args: #{method_args}"
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
def class_errors
|
49
|
+
if Object.const_get(self.class).respond_to?(method.to_sym)
|
50
|
+
[]
|
51
|
+
else
|
52
|
+
["#{type} method: #{self.class}##{method} does not exist"]
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def instance_errors
|
57
|
+
if !Object.const_get(self.class)&.method_defined?(method.to_sym)
|
58
|
+
["#{type} method: #{self.class}##{method} does not exist"]
|
59
|
+
else
|
60
|
+
[]
|
61
|
+
end
|
34
62
|
end
|
35
63
|
end
|
36
64
|
end
|
data/lib/cspec/validator.rb
CHANGED
@@ -2,10 +2,14 @@
|
|
2
2
|
|
3
3
|
module CSpec
|
4
4
|
module Validator
|
5
|
-
def self.
|
5
|
+
def self.validate_structure(headers)
|
6
6
|
%w[class type name method expected].map do |required_header|
|
7
7
|
"Need header: #{required_header}" unless headers.include?(required_header)
|
8
8
|
end.reject(&:nil?)
|
9
9
|
end
|
10
|
+
|
11
|
+
def self.validate_specs(specs)
|
12
|
+
specs.map(&:error).reject(&:nil?).flatten
|
13
|
+
end
|
10
14
|
end
|
11
15
|
end
|
data/lib/cspec/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cspec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jarrod Folino
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-03-
|
11
|
+
date: 2022-03-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.17'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: pry
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: rake
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|