pidgin_spec 0.0.0 → 0.0.1
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/lib/pidgin_spec.rb +13 -10
- data/lib/pidgin_spec/example.rb +19 -0
- data/lib/pidgin_spec/example_group.rb +12 -0
- data/lib/pidgin_spec/expect.rb +48 -0
- data/lib/pidgin_spec/matchers.rb +13 -0
- data/lib/pidgin_spec/matchers/base_matcher.rb +7 -0
- data/lib/pidgin_spec/matchers/be.rb +16 -0
- data/lib/pidgin_spec/matchers/dey_equal_to.rb +17 -0
- data/lib/pidgin_spec/matchers/end_with.rb +30 -0
- metadata +64 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5ad2761700b44a2bf96a151cd4e31074a755b5a617b0fe18c22da22aa2f20ea3
|
4
|
+
data.tar.gz: ce3db04594eaf80b923025b71bebd4a20071a1f46150a26a31a18f5a87cefb4d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7011a4b2a1f48ef58d4eeafdc51c2ea35dc78b07924d083bcbde7c0d2d9c548c25c52510c1a1aeeefc6a811fcaa4c924acf75d78dd08a114c4040574a5e470db
|
7
|
+
data.tar.gz: c8245cf3363e3c362ba158fc9a35d0a718174fb3c69296029b39b5bd2edd5ebb3d32cdd2612c105a9e20f4c834577897ad67e3107d1a858c00010dbda6b26aab
|
data/lib/pidgin_spec.rb
CHANGED
@@ -1,11 +1,3 @@
|
|
1
|
-
$LOAD_PATH << '.'
|
2
|
-
require "colorize"
|
3
|
-
require 'require_all'
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
require_all 'pidgin_spec'
|
8
|
-
|
9
1
|
class PidginSpec
|
10
2
|
def self.describe(desc = nil, &block)
|
11
3
|
puts desc
|
@@ -21,12 +13,23 @@ class PidginSpec
|
|
21
13
|
instance_eval(&block)
|
22
14
|
puts "\n#{@spec_count} tests run, #{@fail_count} fail#{"\n\nFailures:\n" if fail_count.nonzero?}".send(@fail_count.zero? ? 'green' : 'red')
|
23
15
|
@failure_messages.each_with_index {|m, index|
|
24
|
-
puts "#{index + 1}. #{m[:description]}"
|
25
|
-
puts m[:message].red
|
16
|
+
puts "#{index + 1}. #{m[:description]}\n#{"Wetin make am fail".red}: #{format(m[:failed_code])} \n #{m[:message].red}\n#{m[:failed_code_path].magenta}\n\n"
|
26
17
|
}
|
27
18
|
end
|
28
19
|
|
29
20
|
def describe(des_statement, &block)
|
30
21
|
ExampleGroup.new(des_statement, self, &block)
|
31
22
|
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def format(str)
|
27
|
+
lexer = Rouge::Lexers::Ruby.new.lex(str)
|
28
|
+
Rouge::Formatters::Terminal256.new.format(lexer)
|
29
|
+
end
|
32
30
|
end
|
31
|
+
|
32
|
+
require "colorize"
|
33
|
+
require "rouge"
|
34
|
+
require 'require_all'
|
35
|
+
require_rel './pidgin_spec'
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require_relative './matchers'
|
2
|
+
|
3
|
+
class Example
|
4
|
+
include Matchers
|
5
|
+
attr_accessor :passed
|
6
|
+
def initialize(des_statement, spec_statement, klass, &block)
|
7
|
+
@passed = true
|
8
|
+
@spec_statement = spec_statement
|
9
|
+
@des_statement = des_statement
|
10
|
+
klass.spec_count += 1
|
11
|
+
@klass = klass
|
12
|
+
@self_klass = self
|
13
|
+
instance_eval(&block)
|
14
|
+
print '.'.send(@passed ? 'green' : 'red')
|
15
|
+
end
|
16
|
+
def expect_say(value)
|
17
|
+
Expect.new(value, @klass, @self_klass, @spec_statement, @des_statement)
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class ExampleGroup
|
2
|
+
def initialize(des_statement, klass, &block)
|
3
|
+
@des_statement = des_statement
|
4
|
+
@klass = klass
|
5
|
+
instance_eval(&block)
|
6
|
+
end
|
7
|
+
def e_go(spec_statement, &block)
|
8
|
+
Example.new(@des_statement, spec_statement, @klass, &block)
|
9
|
+
@spec_statement = spec_statement
|
10
|
+
end
|
11
|
+
alias_method :e_dey, :e_go
|
12
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
class Expect
|
2
|
+
class NoMatcherError < StandardError
|
3
|
+
end
|
4
|
+
|
5
|
+
def initialize(value, klass, self_klass, spec_statement, des_statement)
|
6
|
+
@klass = klass
|
7
|
+
@value = value
|
8
|
+
@des_statement = des_statement
|
9
|
+
@spec_statement = spec_statement
|
10
|
+
@self_klass = self_klass
|
11
|
+
end
|
12
|
+
|
13
|
+
def go(matcher)
|
14
|
+
|
15
|
+
if matcher.matches?(@value)
|
16
|
+
@klass.pass_count += 1
|
17
|
+
else
|
18
|
+
@klass.fail_count += 1
|
19
|
+
@klass.failure_messages << {
|
20
|
+
description: "#{@des_statement} #{@spec_statement}",
|
21
|
+
message: matcher.failure_message,
|
22
|
+
failed_code: failed_code(caller_locations[0]),
|
23
|
+
failed_code_path: "#{caller_locations[0].path.to_s}:#{caller_locations[0].lineno.to_s}"
|
24
|
+
}
|
25
|
+
@self_klass.passed = false
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def no_go(matcher)
|
30
|
+
if !matcher.matches?(@value)
|
31
|
+
@klass.pass_count += 1
|
32
|
+
else
|
33
|
+
@klass.fail_count += 1
|
34
|
+
@klass.failure_messages << {
|
35
|
+
description: "#{@des_statement} #{@spec_statement}",
|
36
|
+
message: matcher.failure_message_when_negated,
|
37
|
+
failed_code: failed_code(caller_locations[0]),
|
38
|
+
failed_code_path: "#{caller_locations[0].path.to_s}:#{caller_locations[0].lineno.to_s}"
|
39
|
+
}
|
40
|
+
@self_klass.passed = false
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
private
|
45
|
+
def failed_code(caller_trace)
|
46
|
+
File.readlines(caller_trace.absolute_path)[caller_trace.lineno - 1].strip
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Matchers
|
2
|
+
class Be < BaseMatcher
|
3
|
+
def matches?(value)
|
4
|
+
@value = value
|
5
|
+
@value.is_a? @expected
|
6
|
+
end
|
7
|
+
|
8
|
+
def failure_message_when_negated
|
9
|
+
"I bin dey expect say #{@value} no go be #{@expected}, but e con be #{@expected}"
|
10
|
+
end
|
11
|
+
|
12
|
+
def failure_message
|
13
|
+
"I bin dey expect #{value} go be #{@expected} but e no be am at all"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Matchers
|
2
|
+
class DeyEqualTo < BaseMatcher
|
3
|
+
|
4
|
+
def matches?(value)
|
5
|
+
@value = value
|
6
|
+
@expected == value
|
7
|
+
end
|
8
|
+
|
9
|
+
def failure_message_when_negated
|
10
|
+
"You bin dey expect say #{@value} no go equal #{@expected}, but e con equal"
|
11
|
+
end
|
12
|
+
|
13
|
+
def failure_message
|
14
|
+
"You bin dey expect #{@expected} but na #{@value} dey hia o"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Matchers
|
2
|
+
class EndWith < BaseMatcher
|
3
|
+
def initialize(expected)
|
4
|
+
@expected = expected.length == 1 ? expected.first : expected
|
5
|
+
end
|
6
|
+
|
7
|
+
def matches?(value)
|
8
|
+
@value = value
|
9
|
+
if @expected.is_a?(String) || @expected.is_a?(Array)
|
10
|
+
@value[-@expected.length, @expected.length] == @expected
|
11
|
+
else
|
12
|
+
@value.last == @expected
|
13
|
+
end
|
14
|
+
# if value.is_a?(String) && @expected.is_a?(String)
|
15
|
+
# @value[-@expected[0].length, @expected[0].length] == @expected[0]
|
16
|
+
# elsif value.is_a? Array
|
17
|
+
# array_len = @expected.length
|
18
|
+
# @value.last(array_len) == @expected
|
19
|
+
# end
|
20
|
+
end
|
21
|
+
|
22
|
+
def failure_message_when_negated
|
23
|
+
"You bin dey expect say #{@value} no go end with #{@expected}, but e con end with am"
|
24
|
+
end
|
25
|
+
|
26
|
+
def failure_message
|
27
|
+
"You bin dey expect make #{@value} end with #{@expected}, but e no con end with am"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pidgin_spec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ezenwa ogbonna
|
@@ -9,7 +9,61 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
date: 2019-11-19 00:00:00.000000000 Z
|
12
|
-
dependencies:
|
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'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 0.8.1
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0.8'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.8.1
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: rouge
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: 3.13.0
|
40
|
+
- - "~>"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '3.13'
|
43
|
+
type: :runtime
|
44
|
+
prerelease: false
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - ">="
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: 3.13.0
|
50
|
+
- - "~>"
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '3.13'
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: require_all
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - "~>"
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '3.00'
|
60
|
+
type: :runtime
|
61
|
+
prerelease: false
|
62
|
+
version_requirements: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - "~>"
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '3.00'
|
13
67
|
description: A simple DSL for writing unit tests in Nigerian pidgin language. Pidgin
|
14
68
|
is a grammatically simplified form of communication in Nigeria and other West african
|
15
69
|
countries
|
@@ -19,6 +73,14 @@ extensions: []
|
|
19
73
|
extra_rdoc_files: []
|
20
74
|
files:
|
21
75
|
- lib/pidgin_spec.rb
|
76
|
+
- lib/pidgin_spec/example.rb
|
77
|
+
- lib/pidgin_spec/example_group.rb
|
78
|
+
- lib/pidgin_spec/expect.rb
|
79
|
+
- lib/pidgin_spec/matchers.rb
|
80
|
+
- lib/pidgin_spec/matchers/base_matcher.rb
|
81
|
+
- lib/pidgin_spec/matchers/be.rb
|
82
|
+
- lib/pidgin_spec/matchers/dey_equal_to.rb
|
83
|
+
- lib/pidgin_spec/matchers/end_with.rb
|
22
84
|
homepage: https://rubygems.org/gems/pidgin_spec
|
23
85
|
licenses:
|
24
86
|
- MIT
|