-
Notifications
You must be signed in to change notification settings - Fork 33
/
configuration.rb
62 lines (54 loc) · 1.43 KB
/
configuration.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
module Specjour
class Configuration
attr_accessor :options
DEFAULT_BACKTRACE_EXCLUSION = Regexp.union([
"/lib/specjour/",
/lib\/rspec\/(core|expectations|matchers|mocks)/,
"/gems/",
"spec/spec_helper.rb",
"spec/rails_helper.rb",
"bin/"
]).freeze
DEFAULT_OPTIONS = {
backtrace_exclusion_pattern: DEFAULT_BACKTRACE_EXCLUSION,
formatter: Formatter.new,
full_backtrace: false,
global_path: File.join("#{ENV['HOME']}", ".specjour"),
printer_port: nil,
printer_uri: nil,
project_aliases: [],
project_name: nil,
project_path: nil,
remote_job: nil,
rsync_options: "-aL --delete --ignore-errors",
rsync_port: 23456,
test_paths: nil,
tmp_path: "/tmp",
worker_size: lambda { Specjour.configuration.remote_job ? CPU.half_cores : CPU.cores },
worker_number: 0
}.freeze
def self.make_option(name)
define_method(name) do
option = @options[name]
if option.respond_to?(:call)
option.call()
else
option
end
end
define_method("#{name}=") do |value|
@options[name] = value
end
end
DEFAULT_OPTIONS.each do |k,v|
make_option(k)
end
def initialize(options={})
@original_options = options
set_options
end
def set_options
@options = DEFAULT_OPTIONS.merge @original_options
end
end
end