Checked 3.4.0 → 3.5.0
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.
- data/Checked.gemspec +2 -0
- data/lib/Checked.rb +1 -0
- data/lib/Checked/DSL.rb +14 -0
- data/lib/Checked/Spec.rb +63 -0
- data/lib/Checked/version.rb +1 -1
- data/spec/main.rb +18 -6
- data/spec/tests/DSL.rb +73 -0
- metadata +20 -8
data/Checked.gemspec
CHANGED
data/lib/Checked.rb
CHANGED
data/lib/Checked/DSL.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'term/ansicolor'
|
2
|
+
|
1
3
|
class Object
|
2
4
|
|
3
5
|
def Checked= val
|
@@ -43,6 +45,18 @@ class Checked
|
|
43
45
|
|
44
46
|
module Ruby
|
45
47
|
|
48
|
+
def spec val, msg
|
49
|
+
::Checked::SPECS.spec val, msg
|
50
|
+
end
|
51
|
+
|
52
|
+
def spec! val, msg
|
53
|
+
::Checked::SPECS.spec! val, msg
|
54
|
+
end
|
55
|
+
|
56
|
+
def dont_print_specs
|
57
|
+
::Checked::SPECS.dont_print
|
58
|
+
end
|
59
|
+
|
46
60
|
def demand val, bool, raw_msg
|
47
61
|
return val if bool
|
48
62
|
|
data/lib/Checked/Spec.rb
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
|
2
|
+
class Checked
|
3
|
+
|
4
|
+
class Spec
|
5
|
+
Fail = Class.new(RuntimeError)
|
6
|
+
end
|
7
|
+
|
8
|
+
class Specs
|
9
|
+
|
10
|
+
include Term::ANSIColor
|
11
|
+
|
12
|
+
def initialize
|
13
|
+
@specs = []
|
14
|
+
@print = true
|
15
|
+
end
|
16
|
+
|
17
|
+
def spec val, msg
|
18
|
+
if to_a.empty?
|
19
|
+
at_exit { ::Checked::SPECS.print if !$! && ::Checked::SPECS.print? }
|
20
|
+
end
|
21
|
+
@specs << [val, msg]
|
22
|
+
end
|
23
|
+
|
24
|
+
def spec! val, msg
|
25
|
+
if val
|
26
|
+
spec val, msg
|
27
|
+
else
|
28
|
+
print
|
29
|
+
dont_print
|
30
|
+
raise Checked::Spec::Fail, red(msg)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def to_a
|
35
|
+
@specs
|
36
|
+
end
|
37
|
+
|
38
|
+
def dont_print
|
39
|
+
@print = false
|
40
|
+
end
|
41
|
+
|
42
|
+
def print?
|
43
|
+
@print
|
44
|
+
end
|
45
|
+
|
46
|
+
def print
|
47
|
+
@specs.each { |pair|
|
48
|
+
|
49
|
+
val, msg = pair
|
50
|
+
|
51
|
+
if val
|
52
|
+
$stdout.print green(msg), "\n"
|
53
|
+
else
|
54
|
+
$stdout.print red(msg), "\n"
|
55
|
+
end
|
56
|
+
|
57
|
+
}
|
58
|
+
end
|
59
|
+
|
60
|
+
end # === class Specs
|
61
|
+
|
62
|
+
SPECS = Specs.new
|
63
|
+
end # === class Checked
|
data/lib/Checked/version.rb
CHANGED
data/spec/main.rb
CHANGED
@@ -14,11 +14,10 @@ end
|
|
14
14
|
|
15
15
|
|
16
16
|
FOLDER = ("/tmp/Checked_Test")
|
17
|
+
%x! rm -r #{FOLDER} ! if File.directory?(FOLDER)
|
17
18
|
%x! mkdir -p #{FOLDER}!
|
18
|
-
at_exit {
|
19
|
-
%x! rm -rf #{FOLDER} !
|
20
|
-
}
|
21
19
|
|
20
|
+
require 'open3'
|
22
21
|
def ruby_e cmd
|
23
22
|
file = "#{FOLDER}/delete_me_perf_#{rand(100000)}.rb"
|
24
23
|
begin
|
@@ -29,12 +28,25 @@ def ruby_e cmd
|
|
29
28
|
#{cmd}
|
30
29
|
~
|
31
30
|
}
|
32
|
-
%x[ bundle exec ruby #{file} 2>&1].strip
|
33
|
-
|
34
|
-
|
31
|
+
# %x[ bundle exec ruby #{file} 2>&1].strip
|
32
|
+
|
33
|
+
data = ''
|
34
|
+
Open3.popen3(" bundle exec ruby #{file}") { |i, o, e, t|
|
35
|
+
data << o.read
|
36
|
+
data << e.read
|
37
|
+
}
|
38
|
+
data.strip
|
35
39
|
end
|
36
40
|
end
|
37
41
|
|
42
|
+
def dsl_e cmd
|
43
|
+
ruby_e %~
|
44
|
+
require 'Checked'
|
45
|
+
extend Checked::DSL
|
46
|
+
#{cmd}
|
47
|
+
~
|
48
|
+
end
|
49
|
+
|
38
50
|
Dir.glob('spec/tests/*.rb').each { |file|
|
39
51
|
require File.expand_path(file.sub('.rb', '')) if File.file?(file)
|
40
52
|
}
|
data/spec/tests/DSL.rb
CHANGED
@@ -65,6 +65,79 @@ describe "Size!" do
|
|
65
65
|
|
66
66
|
end # === describe Sizes_0_1!
|
67
67
|
|
68
|
+
describe ":spec" do
|
69
|
+
|
70
|
+
before { extend Term::ANSIColor }
|
71
|
+
|
72
|
+
it 'outputs a green line if pass' do
|
73
|
+
dsl_e(%~
|
74
|
+
spec true, 'It passed.'
|
75
|
+
~).should == green("It passed.")
|
76
|
+
end
|
77
|
+
|
78
|
+
it 'outputs a red line if fail' do
|
79
|
+
dsl_e(%~
|
80
|
+
spec false, 'It failed.'
|
81
|
+
~).should == red("It failed.")
|
82
|
+
end
|
83
|
+
|
84
|
+
it 'prints message :at_exit' do
|
85
|
+
dsl_e(%~
|
86
|
+
spec true, 'It is true.'
|
87
|
+
puts "First output."
|
88
|
+
~).should == "First output.\n#{green 'It is true.'}"
|
89
|
+
end
|
90
|
+
|
91
|
+
it 'does not output message if there were any exceptions raised' do
|
92
|
+
dsl_e(%~
|
93
|
+
spec true, "Never gets printed."
|
94
|
+
raise "something"
|
95
|
+
~)
|
96
|
+
.should.match %r!\A/tmp/Checked_Test/[a-zA-Z\_\-\d]+.rb:\d+:in `<main>': something \(RuntimeError\)\Z!
|
97
|
+
end
|
98
|
+
|
99
|
+
end # === describe :spec
|
100
|
+
|
101
|
+
describe ":spec! bool, msg" do
|
102
|
+
|
103
|
+
it 'prints remaining specs, then raises Spec::Failed' do
|
104
|
+
start = "\e[32mThis is true.\e[0m\n\e[31mThis is false.\e[0m\n/home/#{`whoami`.strip}"
|
105
|
+
middle = ":in `spec!': \e[31mThis is error.\e[0m (Checked::Spec::Fail)\n\tfrom /"
|
106
|
+
ending = ":in `<main>'"
|
107
|
+
m = dsl_e(%~
|
108
|
+
spec true, "This is true."
|
109
|
+
spec false, "This is false."
|
110
|
+
spec! false, "This is error."
|
111
|
+
spec true, "This never gets printed."
|
112
|
+
~)
|
113
|
+
|
114
|
+
m.index(start).should == 0
|
115
|
+
m[middle].should == middle
|
116
|
+
m.should.match %r!#{Regexp.escape ending}\Z!
|
117
|
+
end
|
118
|
+
|
119
|
+
end # === describe :spec! bool, msg
|
120
|
+
|
121
|
+
describe ":dont_print_specs" do
|
122
|
+
|
123
|
+
it 'prevents specs from being printed' do
|
124
|
+
dsl_e(%~
|
125
|
+
puts 'No specs printed.'
|
126
|
+
spec true, "Never gets printed."
|
127
|
+
dont_print_specs
|
128
|
+
~).should == 'No specs printed.'
|
129
|
+
end
|
130
|
+
|
131
|
+
it 'sets SPECS.print? to false' do
|
132
|
+
dsl_e(%~
|
133
|
+
puts Checked::SPECS.print?.inspect
|
134
|
+
dont_print_specs
|
135
|
+
puts Checked::SPECS.print?.inspect
|
136
|
+
~).should == "true\nfalse"
|
137
|
+
end
|
138
|
+
|
139
|
+
end # === describe SPECS#dont_print
|
140
|
+
|
68
141
|
describe "string! " do
|
69
142
|
|
70
143
|
behaves_like :ruby_dsl
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: Checked
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.5.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-01-
|
12
|
+
date: 2012-01-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
16
|
-
requirement: &
|
16
|
+
requirement: &7925600 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *7925600
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: bacon
|
27
|
-
requirement: &
|
27
|
+
requirement: &7925100 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *7925100
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: Bacon_Colored
|
38
|
-
requirement: &
|
38
|
+
requirement: &7924600 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,7 +43,18 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *7924600
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: term-ansicolor
|
49
|
+
requirement: &7923980 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *7923980
|
47
58
|
description: ! "\n Various DSLs to clean, question (Ask), and validate (Demand)
|
48
59
|
your objects,\n their classes (data types), and their properties.\n "
|
49
60
|
email:
|
@@ -77,6 +88,7 @@ files:
|
|
77
88
|
- lib/Checked/Demand/Strings.rb
|
78
89
|
- lib/Checked/Demand/Symbols.rb
|
79
90
|
- lib/Checked/Demand/Vars.rb
|
91
|
+
- lib/Checked/Spec.rb
|
80
92
|
- lib/Checked/version.rb
|
81
93
|
- spec/helper.rb
|
82
94
|
- spec/main.rb
|