structured-acceptance-test 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/lib/JSONable.rb +13 -1
- data/lib/category.rb +10 -0
- data/lib/detail.rb +21 -0
- data/lib/duplicate_element_exception.rb +2 -0
- data/lib/finding.rb +75 -0
- data/lib/fix.rb +20 -0
- data/lib/index_out_of_bound_exception.rb +2 -0
- data/lib/location.rb +44 -0
- data/lib/process.rb +61 -0
- data/lib/repeatability.rb +5 -0
- data/lib/{stat.rb → structured-acceptance-test.rb} +35 -0
- data/lib/type_exception.rb +2 -0
- metadata +9 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 7eb89a8fd641e832bc16239d0d22c2e95e0614f04eafb5052ebf75ab73838eee
|
4
|
+
data.tar.gz: c75f33f0763a6be1bfa4c81d62e97438dcc94702fe1d745b619b4c6de9ebd9bd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cefb90c13ab6e0e616df7e5b520032798cd98b3833b2f61901044a47da7b5517155cf067d6019775bfbccbb6b26ebf24c4a9d776ddd13f43d8f4f231060781e5
|
7
|
+
data.tar.gz: 4040066d402612c070542ee6e3ccfd79f5db6810ce9984c7e4c58d719fe95dd0eff445cb4ad290c6e4788ca9f39704aa9a94b1ae82054cd1926b00897489eb7f
|
data/lib/JSONable.rb
CHANGED
@@ -9,6 +9,11 @@ module StatModule
|
|
9
9
|
FORMATTING_BALL = '⚫'
|
10
10
|
FORMATTING_WARNING = '⚠'
|
11
11
|
|
12
|
+
##
|
13
|
+
# Initialize object extending JSONable
|
14
|
+
#
|
15
|
+
# Params:
|
16
|
+
# +hash+:: Hash
|
12
17
|
def initialize(hash)
|
13
18
|
if hash.is_a? Hash
|
14
19
|
hash.each do |k, v|
|
@@ -46,6 +51,11 @@ module StatModule
|
|
46
51
|
end
|
47
52
|
end
|
48
53
|
|
54
|
+
##
|
55
|
+
# Get object in pretty json format
|
56
|
+
#
|
57
|
+
# Params:
|
58
|
+
# +excluded_fields+:: array of String - attributes to exclude
|
49
59
|
def to_json(excluded_fields = [])
|
50
60
|
hash = {}
|
51
61
|
self.instance_variables.each do |var|
|
@@ -54,7 +64,9 @@ module StatModule
|
|
54
64
|
JSON.pretty_generate(hash)
|
55
65
|
end
|
56
66
|
|
57
|
-
|
67
|
+
##
|
68
|
+
# Generate Hash from json string
|
69
|
+
def self.from_json!(string)
|
58
70
|
JSON.load(string).each do |var, val|
|
59
71
|
self.instance_variable_set '@' + var, val
|
60
72
|
end
|
data/lib/category.rb
CHANGED
@@ -1,6 +1,16 @@
|
|
1
1
|
module StatModule
|
2
2
|
require 'enum'
|
3
3
|
|
4
|
+
##
|
5
|
+
# Category can be:
|
6
|
+
# * Bug Risk — the meaning is likely to not be what the author intended
|
7
|
+
# * Clarity — the meaning is unclear
|
8
|
+
# * Compatibility — the meaning has changed and is no longer valid
|
9
|
+
# * Complexity — the meaning should be broken into smaller pieces
|
10
|
+
# * Duplication — unnecessary duplication was found
|
11
|
+
# * Performance — an inefficient approach was used
|
12
|
+
# * Security — a situation may allow access to something that should be allowed
|
13
|
+
# * Style — the style could be improved
|
4
14
|
class Category < Enum::Base
|
5
15
|
values 'Bug Risk', 'Clarity', 'Associative', 'Compatibility', 'Complexity', 'Duplication', 'Performance', 'Security', 'Style'
|
6
16
|
end
|
data/lib/detail.rb
CHANGED
@@ -3,24 +3,43 @@ module StatModule
|
|
3
3
|
|
4
4
|
class Detail < JSONable
|
5
5
|
|
6
|
+
##
|
7
|
+
# Initialize new Detail object
|
8
|
+
#
|
9
|
+
# Params:
|
10
|
+
# +body+:: String, required
|
11
|
+
# +hash+:: Hash, can be null
|
6
12
|
def initialize(body, hash = nil)
|
7
13
|
if hash.is_a? Hash
|
8
14
|
super(hash)
|
9
15
|
return
|
10
16
|
end
|
11
17
|
|
18
|
+
raise TypeException unless body.is_a?(String)
|
12
19
|
@body = body
|
13
20
|
end
|
14
21
|
|
22
|
+
##
|
23
|
+
# Set body
|
24
|
+
#
|
25
|
+
# Params:
|
26
|
+
# +body+:: String
|
15
27
|
def body=(body)
|
16
28
|
raise TypeException unless body.is_a?(String)
|
17
29
|
@body = body
|
18
30
|
end
|
19
31
|
|
32
|
+
##
|
33
|
+
# Get body
|
20
34
|
def body
|
21
35
|
@body
|
22
36
|
end
|
23
37
|
|
38
|
+
##
|
39
|
+
# Set trace
|
40
|
+
#
|
41
|
+
# Params:
|
42
|
+
# +trace+:: array of StatModule::Location objects
|
24
43
|
def trace=(trace)
|
25
44
|
raise TypeException unless trace.is_a?(Array)
|
26
45
|
trace.each { |item|
|
@@ -30,6 +49,8 @@ module StatModule
|
|
30
49
|
}
|
31
50
|
end
|
32
51
|
|
52
|
+
##
|
53
|
+
# Get trace
|
33
54
|
def trace
|
34
55
|
@trace
|
35
56
|
end
|
data/lib/finding.rb
CHANGED
@@ -3,6 +3,14 @@ module StatModule
|
|
3
3
|
|
4
4
|
class Finding < JSONable
|
5
5
|
|
6
|
+
##
|
7
|
+
# Initialize new Finding object
|
8
|
+
#
|
9
|
+
# Params:
|
10
|
+
# +failure+:: boolean, required
|
11
|
+
# +rule+:: String, required
|
12
|
+
# +description+:: String, required
|
13
|
+
# +hash+:: Hash, can be null
|
6
14
|
def initialize(failure, rule, description, hash = nil)
|
7
15
|
if hash.is_a? Hash
|
8
16
|
super(hash)
|
@@ -15,32 +23,58 @@ module StatModule
|
|
15
23
|
@description = description
|
16
24
|
end
|
17
25
|
|
26
|
+
##
|
27
|
+
# Set failure
|
28
|
+
#
|
29
|
+
# Params:
|
30
|
+
# +failure+:: boolean
|
18
31
|
def failure=(failure)
|
19
32
|
@failure = failure
|
20
33
|
end
|
21
34
|
|
35
|
+
##
|
36
|
+
# Get failure
|
22
37
|
def failure
|
23
38
|
@failure
|
24
39
|
end
|
25
40
|
|
41
|
+
##
|
42
|
+
# Set rule
|
43
|
+
#
|
44
|
+
# Params:
|
45
|
+
# +rule+:: String
|
26
46
|
def rule=(rule)
|
27
47
|
raise TypeException unless rule.is_a?(String)
|
28
48
|
@rule = rule
|
29
49
|
end
|
30
50
|
|
51
|
+
##
|
52
|
+
# Get rule
|
31
53
|
def rule
|
32
54
|
@rule
|
33
55
|
end
|
34
56
|
|
57
|
+
##
|
58
|
+
# Set description
|
59
|
+
#
|
60
|
+
# Params:
|
61
|
+
# +description+:: String
|
35
62
|
def description=(description)
|
36
63
|
raise TypeException unless description.is_a?(String)
|
37
64
|
@description = description
|
38
65
|
end
|
39
66
|
|
67
|
+
##
|
68
|
+
# Get description
|
40
69
|
def description
|
41
70
|
@description
|
42
71
|
end
|
43
72
|
|
73
|
+
##
|
74
|
+
# Set detail
|
75
|
+
#
|
76
|
+
# Params:
|
77
|
+
# +detail+:: StatModule::Detail
|
44
78
|
def detail=(detail)
|
45
79
|
raise TypeException unless detail.is_a?(StatModule::Detail)
|
46
80
|
@detail = detail
|
@@ -50,6 +84,11 @@ module StatModule
|
|
50
84
|
@detail
|
51
85
|
end
|
52
86
|
|
87
|
+
##
|
88
|
+
# Set array of categories
|
89
|
+
#
|
90
|
+
# Params:
|
91
|
+
# +categories+:: array of StatModule::Category
|
53
92
|
def categories=(categories)
|
54
93
|
raise TypeException unless categories.is_a?(Array)
|
55
94
|
categories.each { |item|
|
@@ -59,37 +98,65 @@ module StatModule
|
|
59
98
|
}
|
60
99
|
end
|
61
100
|
|
101
|
+
##
|
102
|
+
# Get array of StatModule::Category objects
|
62
103
|
def categories
|
63
104
|
@categories
|
64
105
|
end
|
65
106
|
|
107
|
+
##
|
108
|
+
# Set location
|
109
|
+
#
|
110
|
+
# Params:
|
111
|
+
# +location+:: StatModule::Location
|
66
112
|
def location=(location)
|
67
113
|
raise TypeException unless location.is_a?(Location)
|
68
114
|
@location = location
|
69
115
|
end
|
70
116
|
|
117
|
+
##
|
118
|
+
# Get location
|
71
119
|
def location
|
72
120
|
@location
|
73
121
|
end
|
74
122
|
|
123
|
+
##
|
124
|
+
# Set time to fix
|
125
|
+
#
|
126
|
+
# Params:
|
127
|
+
# +time_to_fix+:: Integer
|
75
128
|
def time_to_fix=(time_to_fix)
|
76
129
|
raise TypeException unless time_to_fix.is_a?(Integer)
|
77
130
|
@timeToFix = time_to_fix
|
78
131
|
end
|
79
132
|
|
133
|
+
##
|
134
|
+
# Get time to fix
|
80
135
|
def time_to_fix
|
81
136
|
@timeToFix
|
82
137
|
end
|
83
138
|
|
139
|
+
##
|
140
|
+
# Set recommendation
|
141
|
+
#
|
142
|
+
# Params:
|
143
|
+
# +recommendation+:: String
|
84
144
|
def recommendation=(recommendation)
|
85
145
|
raise TypeException unless recommendation.is_a?(String)
|
86
146
|
@recommendation = recommendation
|
87
147
|
end
|
88
148
|
|
149
|
+
##
|
150
|
+
# Get recommendation
|
89
151
|
def recommendation
|
90
152
|
@recommendation
|
91
153
|
end
|
92
154
|
|
155
|
+
##
|
156
|
+
# Set fixes
|
157
|
+
#
|
158
|
+
# Params:
|
159
|
+
# +fixes+:: array of StatModule::Fix
|
93
160
|
def fixes=(fixes)
|
94
161
|
raise TypeException unless fixes.is_a?(Array)
|
95
162
|
fixes.each { |item|
|
@@ -99,10 +166,18 @@ module StatModule
|
|
99
166
|
}
|
100
167
|
end
|
101
168
|
|
169
|
+
##
|
170
|
+
# Get array of StatModule::Fix objects
|
102
171
|
def fixes
|
103
172
|
@fixes
|
104
173
|
end
|
105
174
|
|
175
|
+
##
|
176
|
+
# Get formatted information about findings
|
177
|
+
#
|
178
|
+
# Params:
|
179
|
+
#
|
180
|
+
# +formatted+:: indicate weather print boring or pretty colorful finding
|
106
181
|
def print(formatted = false)
|
107
182
|
result = "#{rule}, #{description}"
|
108
183
|
if formatted
|
data/lib/fix.rb
CHANGED
@@ -3,6 +3,12 @@ module StatModule
|
|
3
3
|
|
4
4
|
class Fix < JSONable
|
5
5
|
|
6
|
+
##
|
7
|
+
# Initialize new Fix object
|
8
|
+
#
|
9
|
+
# Params:
|
10
|
+
# +location+:: StatModule::Location, required
|
11
|
+
# +hash+:: Hash, can be null
|
6
12
|
def initialize(location, hash = nil)
|
7
13
|
if hash.is_a? Hash
|
8
14
|
super(hash)
|
@@ -11,20 +17,34 @@ module StatModule
|
|
11
17
|
@location = location
|
12
18
|
end
|
13
19
|
|
20
|
+
##
|
21
|
+
# Set location
|
22
|
+
#
|
23
|
+
# Params:
|
24
|
+
# +location+:: StatModule::Location
|
14
25
|
def location=(location)
|
15
26
|
raise TypeException unless location.is_a?(StatModule::Location)
|
16
27
|
@location = location
|
17
28
|
end
|
18
29
|
|
30
|
+
##
|
31
|
+
# Get location
|
19
32
|
def location
|
20
33
|
@location
|
21
34
|
end
|
22
35
|
|
36
|
+
##
|
37
|
+
# Set new text
|
38
|
+
#
|
39
|
+
# Params:
|
40
|
+
# +new_text+:: String
|
23
41
|
def new_text=(new_text)
|
24
42
|
raise TypeException unless new_text.is_a?(String)
|
25
43
|
@newText = new_text
|
26
44
|
end
|
27
45
|
|
46
|
+
##
|
47
|
+
# Get new text
|
28
48
|
def new_text
|
29
49
|
@newText
|
30
50
|
end
|
data/lib/location.rb
CHANGED
@@ -3,59 +3,103 @@ module StatModule
|
|
3
3
|
|
4
4
|
class Location < JSONable
|
5
5
|
|
6
|
+
##
|
7
|
+
# Initialize new Location object
|
8
|
+
#
|
9
|
+
# Params:
|
10
|
+
# +process+:: String, required
|
11
|
+
# +hash+:: Hash, can be null
|
6
12
|
def initialize(path, hash = nil)
|
7
13
|
if hash.is_a? Hash
|
8
14
|
super(hash)
|
9
15
|
return
|
10
16
|
end
|
17
|
+
raise TypeException unless path.is_a?(String)
|
11
18
|
@path = path
|
12
19
|
end
|
13
20
|
|
21
|
+
##
|
22
|
+
# Set path
|
23
|
+
#
|
24
|
+
# Params:
|
25
|
+
# +path+:: String
|
14
26
|
def path=(path)
|
15
27
|
raise TypeException unless path.is_a?(String)
|
16
28
|
@path = path
|
17
29
|
end
|
18
30
|
|
31
|
+
##
|
32
|
+
# Get path
|
19
33
|
def path
|
20
34
|
@path
|
21
35
|
end
|
22
36
|
|
37
|
+
##
|
38
|
+
# Set begin line
|
39
|
+
#
|
40
|
+
# Params:
|
41
|
+
# +begin_line+:: Integer
|
23
42
|
def begin_line=(begin_line)
|
24
43
|
raise TypeException unless begin_line.is_a?(Integer)
|
25
44
|
@beginLine = begin_line
|
26
45
|
end
|
27
46
|
|
47
|
+
##
|
48
|
+
# Get begin line number
|
28
49
|
def begin_line
|
29
50
|
@beginLine
|
30
51
|
end
|
31
52
|
|
53
|
+
##
|
54
|
+
# Set begin column
|
55
|
+
#
|
56
|
+
# Params:
|
57
|
+
# +begin_column+:: Integer
|
32
58
|
def begin_column=(begin_column)
|
33
59
|
raise TypeException unless begin_column.is_a?(Integer)
|
34
60
|
@beginColumn = begin_column
|
35
61
|
end
|
36
62
|
|
63
|
+
##
|
64
|
+
# Get begin column number
|
37
65
|
def begin_column
|
38
66
|
@beginColumn
|
39
67
|
end
|
40
68
|
|
69
|
+
##
|
70
|
+
# Set end line
|
71
|
+
#
|
72
|
+
# Params:
|
73
|
+
# +end_line+:: Integer
|
41
74
|
def end_line=(end_line)
|
42
75
|
raise TypeException unless end_line.is_a?(Integer)
|
43
76
|
@endLine = end_line
|
44
77
|
end
|
45
78
|
|
79
|
+
##
|
80
|
+
# Get end line number
|
46
81
|
def end_line
|
47
82
|
@endLine
|
48
83
|
end
|
49
84
|
|
85
|
+
##
|
86
|
+
# Set end column
|
87
|
+
#
|
88
|
+
# Params:
|
89
|
+
# +end_column+:: Integer
|
50
90
|
def end_column=(end_column)
|
51
91
|
raise TypeException unless end_column.is_a?(Integer)
|
52
92
|
@endColumn = end_column
|
53
93
|
end
|
54
94
|
|
95
|
+
##
|
96
|
+
# Get end column number
|
55
97
|
def end_column
|
56
98
|
@endColumn
|
57
99
|
end
|
58
100
|
|
101
|
+
##
|
102
|
+
# Get formatted information about location
|
59
103
|
def print
|
60
104
|
result = "in #{path}"
|
61
105
|
if !begin_line.nil? && !end_line.nil?
|
data/lib/process.rb
CHANGED
@@ -4,6 +4,12 @@ module StatModule
|
|
4
4
|
|
5
5
|
class Process < JSONable
|
6
6
|
|
7
|
+
##
|
8
|
+
# Initialize new Process object
|
9
|
+
#
|
10
|
+
# Params:
|
11
|
+
# +name+:: String, name of the process, required
|
12
|
+
# +hash+:: Hash, can be null
|
7
13
|
def initialize(name, hash = nil)
|
8
14
|
if hash.is_a? Hash
|
9
15
|
super(hash)
|
@@ -14,69 +20,124 @@ module StatModule
|
|
14
20
|
@name = name
|
15
21
|
end
|
16
22
|
|
23
|
+
##
|
24
|
+
# Set name of the process
|
25
|
+
#
|
26
|
+
# Params:
|
27
|
+
# +name+:: String, name of the process, required
|
17
28
|
def name=(name)
|
18
29
|
raise TypeException unless name.is_a?(String)
|
19
30
|
@name = name
|
20
31
|
end
|
21
32
|
|
33
|
+
##
|
34
|
+
# Get name of the process
|
22
35
|
def name
|
23
36
|
@name
|
24
37
|
end
|
25
38
|
|
39
|
+
##
|
40
|
+
# Set version
|
41
|
+
#
|
42
|
+
# Params:
|
43
|
+
# +version+:: String
|
26
44
|
def version=(version)
|
27
45
|
raise TypeException unless version.is_a?(String)
|
28
46
|
@version = version
|
29
47
|
end
|
30
48
|
|
49
|
+
##
|
50
|
+
# Get version of the process
|
31
51
|
def version
|
32
52
|
@version
|
33
53
|
end
|
34
54
|
|
55
|
+
##
|
56
|
+
# Set description
|
57
|
+
#
|
58
|
+
# Params:
|
59
|
+
# +description+:: String
|
35
60
|
def description=(description)
|
36
61
|
raise TypeException unless description.is_a?(String)
|
37
62
|
@description = description
|
38
63
|
end
|
39
64
|
|
65
|
+
##
|
66
|
+
# Get description
|
40
67
|
def description
|
41
68
|
@description
|
42
69
|
end
|
43
70
|
|
71
|
+
##
|
72
|
+
# Set maintainer
|
73
|
+
#
|
74
|
+
# Params:
|
75
|
+
# +maintainer+:: String
|
44
76
|
def maintainer=(maintainer)
|
45
77
|
raise TypeException unless maintainer.is_a?(String)
|
46
78
|
@maintainer = maintainer
|
47
79
|
end
|
48
80
|
|
81
|
+
##
|
82
|
+
# Get maintainer
|
49
83
|
def maintainer
|
50
84
|
@maintainer
|
51
85
|
end
|
52
86
|
|
87
|
+
##
|
88
|
+
# Set email
|
89
|
+
#
|
90
|
+
# Params:
|
91
|
+
# +email+:: String
|
53
92
|
def email=(email)
|
54
93
|
raise TypeException unless email.is_a?(String)
|
55
94
|
@email = email
|
56
95
|
end
|
57
96
|
|
97
|
+
##
|
98
|
+
# Get email
|
58
99
|
def email
|
59
100
|
@email
|
60
101
|
end
|
61
102
|
|
103
|
+
##
|
104
|
+
# Set website
|
105
|
+
#
|
106
|
+
# Params:
|
107
|
+
# +website+:: String
|
62
108
|
def website=(website)
|
63
109
|
raise TypeException unless website.is_a?(String)
|
64
110
|
@website = website
|
65
111
|
end
|
66
112
|
|
113
|
+
##
|
114
|
+
# Get website
|
67
115
|
def website
|
68
116
|
@website
|
69
117
|
end
|
70
118
|
|
119
|
+
##
|
120
|
+
# Set repeatability
|
121
|
+
#
|
122
|
+
# Params:
|
123
|
+
# +repeatability+:: String
|
71
124
|
def repeatability=(repeatability)
|
72
125
|
raise TypeException unless Repeatability.all.include?(repeatability)
|
73
126
|
@repeatability = repeatability
|
74
127
|
end
|
75
128
|
|
129
|
+
##
|
130
|
+
# Get repeatability
|
76
131
|
def repeatability
|
77
132
|
@repeatability
|
78
133
|
end
|
79
134
|
|
135
|
+
##
|
136
|
+
# Get formatted information about process
|
137
|
+
#
|
138
|
+
# Params:
|
139
|
+
#
|
140
|
+
# +formatted+:: indicate weather print boring or pretty colorful process
|
80
141
|
def print(formatted = nil)
|
81
142
|
result = name
|
82
143
|
unless version.nil?
|
data/lib/repeatability.rb
CHANGED
@@ -1,6 +1,11 @@
|
|
1
1
|
module StatModule
|
2
2
|
require 'enum'
|
3
3
|
|
4
|
+
##
|
5
|
+
# Repeatability can be:
|
6
|
+
# * Volatile — findings MAY change when repeating validation on the identical targets
|
7
|
+
# * Repeatable — Findings MUST be identical if the program is run again with the same inputs
|
8
|
+
# * Associative — Findings for targets [a, b] MUST equal the union of findings for [a] and [b] -- in other words, if only one file is changed, only that file need be tested
|
4
9
|
class Repeatability < Enum::Base
|
5
10
|
values 'Volatile', 'Repeatable', 'Associative'
|
6
11
|
end
|
@@ -15,6 +15,12 @@ module StatModule
|
|
15
15
|
class Stat < JSONable
|
16
16
|
attr_reader :statVersion
|
17
17
|
|
18
|
+
##
|
19
|
+
# Initialize new Stat object
|
20
|
+
#
|
21
|
+
# Params:
|
22
|
+
# +process+:: StatModule::Process, required
|
23
|
+
# +hash+:: Hash, can be null
|
18
24
|
def initialize(process, hash = nil)
|
19
25
|
@finding_print_index = 0
|
20
26
|
@findings = []
|
@@ -29,6 +35,11 @@ module StatModule
|
|
29
35
|
@process = process
|
30
36
|
end
|
31
37
|
|
38
|
+
##
|
39
|
+
# Set array of findings
|
40
|
+
#
|
41
|
+
# Params:
|
42
|
+
# +findings+:: Array of StatModule::Finding
|
32
43
|
def findings=(findings)
|
33
44
|
raise TypeException unless findings.is_a?(Array)
|
34
45
|
findings.each { |item|
|
@@ -38,19 +49,31 @@ module StatModule
|
|
38
49
|
}
|
39
50
|
end
|
40
51
|
|
52
|
+
##
|
53
|
+
# Get array of findings
|
41
54
|
def findings
|
42
55
|
@findings
|
43
56
|
end
|
44
57
|
|
58
|
+
##
|
59
|
+
# Set process
|
60
|
+
#
|
61
|
+
# Params:
|
62
|
+
# +process+:: instance of StatModule::Process
|
45
63
|
def process=(process)
|
46
64
|
raise TypeException unless process.is_a?(StatModule::Process)
|
47
65
|
@process = process
|
48
66
|
end
|
49
67
|
|
68
|
+
##
|
69
|
+
# Get process
|
50
70
|
def process
|
51
71
|
@process
|
52
72
|
end
|
53
73
|
|
74
|
+
##
|
75
|
+
# Prints header of STAT object in json format
|
76
|
+
# Header contains statVersion, process and optional array of findings
|
54
77
|
def print_header
|
55
78
|
@finding_print_index = 0
|
56
79
|
hash = {}
|
@@ -64,6 +87,8 @@ module StatModule
|
|
64
87
|
$stdout.flush
|
65
88
|
end
|
66
89
|
|
90
|
+
##
|
91
|
+
# Prints one finding in json format.
|
67
92
|
def print_finding
|
68
93
|
if @finding_print_index < @findings.length
|
69
94
|
result = @findings[@finding_print_index].to_json
|
@@ -77,6 +102,8 @@ module StatModule
|
|
77
102
|
end
|
78
103
|
end
|
79
104
|
|
105
|
+
##
|
106
|
+
# Prints footer of STAT object in json format
|
80
107
|
def print_footer
|
81
108
|
@finding_print_index = 0
|
82
109
|
puts ']}'
|
@@ -84,10 +111,18 @@ module StatModule
|
|
84
111
|
$stdout.flush
|
85
112
|
end
|
86
113
|
|
114
|
+
##
|
115
|
+
# Get STAT object in json format
|
87
116
|
def to_json(options = {})
|
88
117
|
super(['finding_print_index'])
|
89
118
|
end
|
90
119
|
|
120
|
+
##
|
121
|
+
# Get statistic information about findings
|
122
|
+
#
|
123
|
+
# Params:
|
124
|
+
#
|
125
|
+
# +formatted+:: indicate weather print boring or pretty colorful statistic
|
91
126
|
def summary_print(formatted = false)
|
92
127
|
errors = 0
|
93
128
|
warnings = 0
|
data/lib/type_exception.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: structured-acceptance-test
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- William Entriken
|
8
8
|
- Ilia Grabko
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2022-12-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: safe-enum
|
@@ -37,20 +37,14 @@ dependencies:
|
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
41
|
-
- - ">="
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version: 2.8.0
|
40
|
+
version: '3.0'
|
44
41
|
type: :runtime
|
45
42
|
prerelease: false
|
46
43
|
version_requirements: !ruby/object:Gem::Requirement
|
47
44
|
requirements:
|
48
45
|
- - "~>"
|
49
46
|
- !ruby/object:Gem::Version
|
50
|
-
version: '
|
51
|
-
- - ">="
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: 2.8.0
|
47
|
+
version: '3.0'
|
54
48
|
- !ruby/object:Gem::Dependency
|
55
49
|
name: colorize
|
56
50
|
requirement: !ruby/object:Gem::Requirement
|
@@ -87,13 +81,13 @@ files:
|
|
87
81
|
- lib/location.rb
|
88
82
|
- lib/process.rb
|
89
83
|
- lib/repeatability.rb
|
90
|
-
- lib/
|
84
|
+
- lib/structured-acceptance-test.rb
|
91
85
|
- lib/type_exception.rb
|
92
86
|
homepage: https://github.com/fulldecent/structured-acceptance-test
|
93
87
|
licenses:
|
94
88
|
- MIT
|
95
89
|
metadata: {}
|
96
|
-
post_install_message:
|
90
|
+
post_install_message:
|
97
91
|
rdoc_options: []
|
98
92
|
require_paths:
|
99
93
|
- lib
|
@@ -108,9 +102,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
108
102
|
- !ruby/object:Gem::Version
|
109
103
|
version: '0'
|
110
104
|
requirements: []
|
111
|
-
|
112
|
-
|
113
|
-
signing_key:
|
105
|
+
rubygems_version: 3.3.11
|
106
|
+
signing_key:
|
114
107
|
specification_version: 4
|
115
108
|
summary: Structured acceptance test
|
116
109
|
test_files: []
|