cspec 0.2.3 → 0.2.6

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: 33a7923727e5bed051ce65388598a0312fa182a1126d8918e4e1229209853642
4
- data.tar.gz: 203ff7ba672c258a6858a29d7f6ccdb5121708198ac91ac20eb8eea1bca14119
3
+ metadata.gz: 6585f0b209286fd400bb3a5b0060ee7fe4fddaa0c08f0f9414290fc5dd3caeb4
4
+ data.tar.gz: df2ad99481481d95c1dd725056f0081d36720ebb831677a28319b98b05bff620
5
5
  SHA512:
6
- metadata.gz: 0556b01b0fa012e11b77376c9746303927b4e595b8e9b236ac2134ee56a341c2d16ebd84f53c1665041dc1626b7a07c069b0b27c9cef28a1472ba7874e2f3437
7
- data.tar.gz: 57307e7c92ac8129f7c1309bc7eb3db87b6bfba6ff9a5e01cbf70510511121d36402bcc1b87f0fd3f22dc18d550e3d47a9cf193b10d1bd51daa684aaea08ac79
6
+ metadata.gz: c64fce21bf149f25e96ae6daa3149aeb240629004c5202375afa03d2194d45744b473e1e38b68cb3ae97bde4d853bc5f46099711ab2b3695da08cd05f2c9f7e8
7
+ data.tar.gz: 27e351c8aefd2bcc7e930e9c7073412bb8141c856dabe3eeed9568832efb93e66084f5e3cef5dab7154b72cacb231457ed229dbe8d858494724f3c37cf8d9ea5
data/Gemfile.lock CHANGED
@@ -1,13 +1,20 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cspec (0.2.2)
4
+ cspec (0.2.5)
5
+ colorize (~> 0.8.1)
5
6
 
6
7
  GEM
7
8
  remote: https://rubygems.org/
8
9
  specs:
10
+ coderay (1.1.3)
11
+ colorize (0.8.1)
9
12
  diff-lcs (1.5.0)
10
13
  docile (1.4.0)
14
+ method_source (1.0.0)
15
+ pry (0.14.1)
16
+ coderay (~> 1.1)
17
+ method_source (~> 1.0)
11
18
  rake (10.5.0)
12
19
  rspec (3.11.0)
13
20
  rspec-core (~> 3.11.0)
@@ -35,6 +42,7 @@ PLATFORMS
35
42
  DEPENDENCIES
36
43
  bundler (~> 1.17)
37
44
  cspec!
45
+ pry
38
46
  rake (~> 10.0)
39
47
  rspec (~> 3.0)
40
48
  simplecov
data/cspec.gemspec CHANGED
@@ -38,7 +38,9 @@ Gem::Specification.new do |spec|
38
38
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
39
39
  spec.require_paths = ['lib']
40
40
 
41
+ spec.add_dependency 'colorize', '~> 0.8.1'
41
42
  spec.add_development_dependency 'bundler', '~> 1.17'
43
+ spec.add_development_dependency 'pry'
42
44
  spec.add_development_dependency 'rake', '~> 10.0'
43
45
  spec.add_development_dependency 'rspec', '~> 3.0'
44
46
  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.5)
5
5
 
6
6
  PLATFORMS
7
7
  ruby
@@ -29,5 +29,5 @@ class Calculator
29
29
  end
30
30
 
31
31
  result = CSpec::Runner.run!("#{Dir.pwd}/specs.csv")
32
- puts "Success: #{result}"
32
+
33
33
  exit result ? 0 : 1
@@ -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.5)
5
5
 
6
6
  PLATFORMS
7
7
  ruby
@@ -1,4 +1,3 @@
1
1
  class,name,type,method,expected
2
2
  MyClass,my test,instance,hello,world
3
- MyClass,my test,instance,ok?,true
4
-
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.5)
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.5)
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,12 +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 true if input == 'true'
19
- return false if input == 'false'
20
- 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
21
28
 
22
29
  input.to_s
23
30
  end
@@ -3,9 +3,7 @@
3
3
  module CSpec
4
4
  module ResultsOutputter
5
5
  def self.display(results)
6
- results.each do |r|
7
- puts r
8
- end
6
+ results.map(&:to_s).join("\n")
9
7
  end
10
8
  end
11
9
  end
data/lib/cspec/runner.rb CHANGED
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'colorize'
4
+
3
5
  module CSpec
4
6
  module Runner
5
7
  def self.run!(filepath)
@@ -8,12 +10,20 @@ module CSpec
8
10
  specs = Loader.load(filepath)
9
11
  return false if process_errors(::CSpec::Validator.validate_specs(specs))
10
12
 
11
- results = run(specs)
13
+ success = CSpec::Result.success?(results = run(specs))
12
14
 
13
- return true if CSpec::Result.success?(results)
15
+ present_result(success, results)
16
+ end
14
17
 
15
- ResultsOutputter.display(results)
16
- false
18
+ def self.present_result(success, results)
19
+ if success
20
+ puts 'Success'.green
21
+ true
22
+ else
23
+ puts 'Failure'.red
24
+ puts ResultsOutputter.display(results).red
25
+ false
26
+ end
17
27
  end
18
28
 
19
29
  def self.run(specs)
data/lib/cspec/spec.rb CHANGED
@@ -30,15 +30,35 @@ module CSpec
30
30
  end
31
31
 
32
32
  def error
33
- return "#{self.class} does not exist" unless Object.const_defined?(self.class)
33
+ return ["#{self.class} does not exist"] unless Object.const_defined?(self.class)
34
34
 
35
- return "#{type} method: #{method} does not exist" unless Object.const_get(self.class).method_defined?(method)
35
+ errors = []
36
36
 
37
- nil
37
+ errors += send("#{type}_errors")
38
+
39
+ errors.size.positive? ? errors.flatten : nil
38
40
  end
39
41
 
40
42
  def to_s
41
43
  "name: #{name}, class: #{self.class}, method: #{method}, method_args: #{method_args}"
42
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
62
+ end
43
63
  end
44
64
  end
@@ -9,7 +9,7 @@ module CSpec
9
9
  end
10
10
 
11
11
  def self.validate_specs(specs)
12
- specs.map(&:error).reject(&:nil?)
12
+ specs.map(&:error).reject(&:nil?).flatten
13
13
  end
14
14
  end
15
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.3'
4
+ VERSION = '0.2.6'
5
5
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.6
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-15 00:00:00.000000000 Z
11
+ date: 2022-03-16 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: colorize
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.8.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.8.1
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -24,6 +38,20 @@ dependencies:
24
38
  - - "~>"
25
39
  - !ruby/object:Gem::Version
26
40
  version: '1.17'
41
+ - !ruby/object:Gem::Dependency
42
+ name: pry
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
27
55
  - !ruby/object:Gem::Dependency
28
56
  name: rake
29
57
  requirement: !ruby/object:Gem::Requirement