forked from jeremyevans/sequel
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathguards_helper.rb
55 lines (51 loc) · 1.28 KB
/
guards_helper.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
gem 'minitest'
require 'minitest/autorun'
require 'minitest/hooks/default'
require 'minitest/shared_description'
def Sequel.guarded?(*checked)
unless ENV['SEQUEL_NO_PENDING']
checked.each do |c|
case c
when DB.database_type
return c
when Array
case c.length
when 1
return c if c.first == DB.adapter_scheme
when 2
if c.first.is_a?(Proc)
return c if c.last == DB.database_type && c.first.call(DB)
elsif c.last.is_a?(Proc)
return c if c.first == DB.adapter_scheme && c.last.call(DB)
else
return c if c.first == DB.adapter_scheme && c.last == DB.database_type
end
when 3
return c if c[0] == DB.adapter_scheme && c[1] == DB.database_type && c[2].call(DB)
end
end
end
end
false
end
module Minitest::Spec::DSL
def cspecify(message, *checked, &block)
if pending = Sequel.guarded?(*checked)
it(message) do
skip "Not yet working on #{Array(pending).map{|x| x.is_a?(Proc) ? :proc : x}.join(', ')}"
end
else
it(message, &block)
end
end
end
class Minitest::HooksSpec
def log
begin
DB.loggers << Logger.new(STDOUT)
yield
ensure
DB.loggers.pop
end
end
end