Class: MSpecScript
Overview
MSpecScript provides a skeleton for all the MSpec runner scripts.
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
Returns a new instance of MSpecScript.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/mspec/utils/script.rb', line 17
def initialize
config[:tags_dir] = 'spec/tags'
config[:formatter] = nil
config[:includes] = []
config[:excludes] = []
config[:patterns] = []
config[:xpatterns] = []
config[:tags] = []
config[:xtags] = []
config[:profiles] = []
config[:xprofiles] = []
config[:atags] = []
config[:astrings] = []
config[:ltags] = []
config[:abort] = true
end
|
Class Method Details
6
7
8
9
10
11
|
# File 'lib/mspec/utils/script.rb', line 6
def self.config
@config ||= {
:path => ['.', 'spec'],
:config_ext => '.mspec'
}
end
|
100
101
102
103
104
105
106
107
108
109
110
|
# File 'lib/mspec/utils/script.rb', line 100
def self.main
$VERBOSE = nil unless ENV['OUTPUT_WARNINGS']
script = new
script.load 'default.mspec'
script.load RUBY_VERSION.split('.')[0,2].join('.') + ".mspec"
script.load '~/.mspecrc'
script.options
script.signals
script.register
script.run
end
|
.set(key, value) ⇒ Object
13
14
15
|
# File 'lib/mspec/utils/script.rb', line 13
def self.set(key, value)
config[key] = value
end
|
Instance Method Details
34
35
36
|
# File 'lib/mspec/utils/script.rb', line 34
def config
MSpecScript.config
end
|
#entries(pattern) ⇒ Object
82
83
84
85
86
87
|
# File 'lib/mspec/utils/script.rb', line 82
def entries(pattern)
expanded = File.expand_path(pattern)
return [pattern] if File.file?(expanded)
return Dir[pattern+"/**/*_spec.rb"].sort if File.directory?(expanded)
Dir[pattern]
end
|
#files(list) ⇒ Object
89
90
91
92
93
94
95
96
97
98
|
# File 'lib/mspec/utils/script.rb', line 89
def files(list)
list.inject([]) do |files, item|
if item[0] == ?^
files -= entries(item[1..-1])
else
files += entries(item)
end
files
end
end
|
#load(name) ⇒ Object
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
# File 'lib/mspec/utils/script.rb', line 38
def load(name)
names = [name]
unless name[-6..-1] == config[:config_ext]
names << name + config[:config_ext]
end
names.each do |name|
return Kernel.load(name) if File.exist?(File.expand_path(name))
config[:path].each do |dir|
file = File.join dir, name
return Kernel.load(file) if File.exist? file
end
end
end
|
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
# File 'lib/mspec/utils/script.rb', line 54
def register
if config[:formatter].nil?
config[:formatter] = @files.size < 50 ? DottedFormatter : FileFormatter
end
config[:formatter].new(config[:output]).register if config[:formatter]
MatchFilter.new(:include, *config[:includes]).register unless config[:includes].empty?
MatchFilter.new(:exclude, *config[:excludes]).register unless config[:excludes].empty?
RegexpFilter.new(:include, *config[:patterns]).register unless config[:patterns].empty?
RegexpFilter.new(:exclude, *config[:xpatterns]).register unless config[:xpatterns].empty?
TagFilter.new(:include, *config[:tags]).register unless config[:tags].empty?
TagFilter.new(:exclude, *config[:xtags]).register unless config[:xtags].empty?
ProfileFilter.new(:include, *config[:profiles]).register unless config[:profiles].empty?
ProfileFilter.new(:exclude, *config[:xprofiles]).register unless config[:xprofiles].empty?
DebugAction.new(config[:atags], config[:astrings]).register if config[:debugger]
GdbAction.new(config[:atags], config[:astrings]).register if config[:gdb]
end
|
73
74
75
76
77
78
79
80
|
# File 'lib/mspec/utils/script.rb', line 73
def signals
if config[:abort]
Signal.trap "INT" do
puts "\nProcess aborted!"
exit! 1
end
end
end
|