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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d04fe4315cc0239fbba40d3b9161a2a611ba9e5199530020dd3111904969a063
4
- data.tar.gz: f79b42125b163718b31b525c7dbaab2358e774b46ab4ac40f1bf82fe575ee252
3
+ metadata.gz: e945a9ed7c6719e928f54888ed3f02daaf6bf5c28dc95af9beb2a2654299a430
4
+ data.tar.gz: a91fd779859320fd456701ddf76190b75f322f2cdca9b5cc793c559985566a14
5
5
  SHA512:
6
- metadata.gz: 3427855f23bc9f089a938454ec8c21c2220f6ea27fbcce4707930fa2c40674cf5df7a1277dc7ed574687bbe7d70b53d8b05a732236c85581b2077dd8e9fbc785
7
- data.tar.gz: 5e50f436086bf34ad3e0de488e231f87ec2fe07b8cb8f8eaa79c89b28a3333b4f74afbe0dcd6cf034b593d8907f9b24d58086db37341e8bc6b6023b343e04c8d
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.1)
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,initialize_params_1,method,method_args_1,expected
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'
@@ -1,7 +1,7 @@
1
1
  GEM
2
2
  remote: https://rubygems.org/
3
3
  specs:
4
- cspec (0.2.1)
4
+ cspec (0.2.4)
5
5
 
6
6
  PLATFORMS
7
7
  ruby
@@ -1,7 +1,7 @@
1
1
  GEM
2
2
  remote: https://rubygems.org/
3
3
  specs:
4
- cspec (0.2.1)
4
+ cspec (0.2.3)
5
5
 
6
6
  PLATFORMS
7
7
  ruby
@@ -7,8 +7,8 @@ class MyClass
7
7
  'world'
8
8
  end
9
9
 
10
- def hello2(param1)
11
- "world2#{param1}"
10
+ def ok?
11
+ true
12
12
  end
13
13
  end
14
14
 
@@ -1,12 +1,3 @@
1
- class,name,type,method,method_arg_1,expected
2
- MyClass,my test,instance,hello2,aaa,world2aaa
3
- MyClass,my test,instance,hello,,world
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
@@ -1,7 +1,7 @@
1
1
  GEM
2
2
  remote: https://rubygems.org/
3
3
  specs:
4
- cspec (0.2.1)
4
+ cspec (0.2.3)
5
5
 
6
6
  PLATFORMS
7
7
  ruby
@@ -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
- return input.to_f if input =~ /^\d+\.\d+$/
16
- return input.to_i if input =~ /^\d+$/
17
- return eval(input) if input =~ /^\[.*\]$/
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.validate(filename)
26
+ def self.validate_structure(filename)
27
27
  headers = CSV.open(filename, &:readline)
28
- ::CSpec::Validator.validate(headers)
28
+ ::CSpec::Validator.validate_structure(headers)
29
29
  end
30
30
  end
31
31
  end
data/lib/cspec/result.rb CHANGED
@@ -23,7 +23,7 @@ module CSpec
23
23
  end
24
24
 
25
25
  def to_s
26
- "spec: #{spec}\n" \
26
+ "#{spec}, " \
27
27
  "error: #{error}"
28
28
  end
29
29
  end
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
- errors = Loader.validate(filepath)
7
- unless errors.empty?
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
@@ -2,10 +2,14 @@
2
2
 
3
3
  module CSpec
4
4
  module Validator
5
- def self.validate(headers)
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CSpec
4
- VERSION = '0.2.2'
4
+ VERSION = '0.2.5'
5
5
  end
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.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-07 00:00:00.000000000 Z
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