Class: Clash::Tests
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods included from Helpers
#boldit, #colorize, #expand_list_of_numbers, #expand_range, #get_number, #greenit, #pout, #print_fail, #print_pass, #read_test_line_numbers, #redit, #strip_tasks, #system, #test_at_line_number, #yellowit
Constructor Details
#initialize(options = {}) ⇒ Tests
Returns a new instance of Tests.
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
# File 'lib/clash/tests.rb', line 7
def initialize(options={})
@options = options
ENV['JEKYLL_ENV'] = 'test'
if @options[:trace]
ENV['TRACE'] = 'true'
end
@results = []
@passed = []
@failed = []
@tasks = {}
@options[:only] ||= []
@options[:exit] ||= true
@options[:dir] ||= '.'
@options[:file] ||= '_clash.yml'
@clashfile = read_config
@tests = read_tests
end
|
Instance Attribute Details
#tests ⇒ Object
Returns the value of attribute tests.
5
6
7
|
# File 'lib/clash/tests.rb', line 5
def tests
@tests
end
|
Instance Method Details
#accept ⇒ Object
58
59
60
61
62
63
64
65
66
67
|
# File 'lib/clash/tests.rb', line 58
def accept
Dir.chdir(@options[:dir]) do
@tests.each_with_index do |options, index|
next if options.nil?
Test.new(options).accept
end
end
end
|
#config_path(file = nil) ⇒ Object
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
|
# File 'lib/clash/tests.rb', line 128
def config_path(file=nil)
file ||= @options[:file]
path = File.join('./', @options[:dir])
paths = []
default_path = "test/_clash.yml"
(path.count('/') + 1).times do
paths << File.join(path, file)
path.sub!(/\/[^\/]+$/, '')
end
path = paths.find {|p| File.file?(p) }
if !path && File.file?(default_path)
@options[:dir] = File.dirname(default_path)
path = default_path
end
path
end
|
#list ⇒ Object
30
31
32
33
34
35
36
37
|
# File 'lib/clash/tests.rb', line 30
def list
@tests.each_with_index do |options, index|
next if options.nil?
list_test(options, index)
end
end
|
#list_test(options, index) ⇒ Object
39
40
41
42
43
|
# File 'lib/clash/tests.rb', line 39
def list_test(options, index)
number = boldit((index + 1).to_s.rjust(3))
title = options['title'] || "Untitled test"
puts "#{number}) #{title}"
end
|
#list_tests(tests) ⇒ Object
169
170
171
172
173
174
175
|
# File 'lib/clash/tests.rb', line 169
def list_tests(tests)
if tests.empty?
''
else
"- Tests: #{tests.join(',')}"
end
end
|
#print_results ⇒ Object
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
|
# File 'lib/clash/tests.rb', line 153
def print_results
puts boldit("\n\nFailures:") unless @results.empty?
@results.each do |results|
puts "\n#{results.join('')}"
end
puts boldit("\n\nTest summary:")
puts yellowit(" Tests run: #{@passed.dup.concat(@failed).size}")
puts "#{greenit(" Passed #{@passed.size}")} #{list_tests(@passed)}"
puts "#{redit(" Failed #{@failed.size}")} #{list_tests(@failed)}"
exit 1 if @options[:exit] && !@results.empty?
end
|
#read_config ⇒ Object
114
115
116
117
118
119
120
121
122
123
124
125
126
|
# File 'lib/clash/tests.rb', line 114
def read_config
if path = config_path || config_path('.clash.yml')
read_test_line_numbers(path)
config = SafeYAML.load_file(path)
config = [config] unless config.is_a?(Array)
config
else
raise "Config file #{@options[:file]} not found."
end
end
|
#read_tests ⇒ Object
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
# File 'lib/clash/tests.rb', line 86
def read_tests
index = 0
delete_tests = []
@options[:only] = expand_list_of_numbers(@options[:only])
tests = @clashfile.map do |test|
if !test['tasks'].nil?
@tasks.merge! test['tasks']
delete_tests << test
else
index += 1
if @options[:only].empty?
test
elsif @options[:only].include?(index)
test
else
nil
end
end
end
tests - [delete_tests]
end
|
#run ⇒ Object
45
46
47
48
49
50
51
52
53
54
55
56
|
# File 'lib/clash/tests.rb', line 45
def run
Dir.chdir(@options[:dir]) do
@tests.each_with_index do |options, index|
next if options.nil?
run_test(options, index)
end
end
print_results
end
|
#run_test(options, index) ⇒ Object
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
# File 'lib/clash/tests.rb', line 69
def run_test(options, index)
options['index'] = index + 1
options['context'] = @options[:context]
options['tasks'] = @tasks
options['build_only'] = @options[:build_only]
results = Test.new(options).run
if results.nil?
@passed << index + 1
else
@failed << index + 1
@results << results
end
end
|