Module: DataMapper::Spec
- Defined in:
- lib/dm-core/spec/setup.rb,
lib/dm-core/spec/lib/spec_helper.rb,
lib/dm-core/spec/lib/adapter_helpers.rb,
lib/dm-core/spec/lib/pending_helpers.rb,
lib/dm-core/spec/lib/collection_helpers.rb
Defined Under Namespace
Modules: Adapters, CollectionHelpers, Helpers, PendingHelpers
Class Method Summary
collapse
Class Method Details
.cleanup_models ⇒ Object
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
# File 'lib/dm-core/spec/lib/spec_helper.rb', line 15
def self.cleanup_models
descendants = DataMapper::Model.descendants.to_a
while (model = descendants.shift)
model_name = model.name.to_s.strip
unless model_name.empty? || model_name[0] == ?#
parts = model_name.split('::')
constant_name = parts.pop.to_sym
base = parts.empty? ? Object : DataMapper::Ext::Object.full_const_get(parts.join('::'))
base.class_eval { remove_const(constant_name) if const_defined?(constant_name) }
end
remove_ivars(model)
model.instance_methods(false).each { |method| model.send(:undef_method, method) }
end
DataMapper::Model.descendants.clear
end
|
22
23
24
25
26
27
28
29
|
# File 'lib/dm-core/spec/setup.rb', line 22
def configure
@configured = begin
setup_logger
require_plugins
require_spec_adapter
true
end
end
|
31
32
33
|
# File 'lib/dm-core/spec/setup.rb', line 31
def configured?
@configured
end
|
.remove_ivars(object, instance_variables = object.instance_variables) ⇒ Object
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
63
64
65
66
67
68
69
70
71
|
# File 'lib/dm-core/spec/lib/spec_helper.rb', line 37
def self.remove_ivars(object, instance_variables = object.instance_variables)
seen = {}
stack = instance_variables.map { |var| [object, var] }
while (node = stack.pop)
object, ivar = node
next if object.is_a?(DataMapper::Logger) ||
object.is_a?(DataMapper::DescendantSet) ||
object.is_a?(DataMapper::Adapters::AbstractAdapter) ||
object.class.name.to_s[0, 13] == 'DataObjects::'
next if object.is_a?(Module) &&
object.name.to_s[0, 12] == 'DataMapper::'
next unless object.instance_variable_defined?(ivar)
value = object.instance_variable_get(ivar)
next if value.is_a?(DataMapper::DescendantSet)
object.__send__(:remove_instance_variable, ivar) unless object.frozen?
next if seen.key?(value.object_id)
seen[value.object_id] = true
stack.concat(value.instance_variables.map { |ivar| [value, ivar] })
end
end
|
.require_plugins ⇒ Object
53
54
55
56
57
58
59
|
# File 'lib/dm-core/spec/setup.rb', line 53
def require_plugins
adapter = ENV['ADAPTER'] || ENV.fetch('ADAPTERS', nil)
plugins = ENV['PLUGINS'] || ENV.fetch('PLUGIN', nil)
plugins = plugins.to_s.split(/[,\s]+/)
plugins.push('dm-migrations') unless adapter == 'in_memory'
plugins.uniq.each { |plugin| require plugin }
end
|
.require_spec_adapter ⇒ Object
43
44
45
46
47
48
49
50
51
|
# File 'lib/dm-core/spec/setup.rb', line 43
def require_spec_adapter
desired_adapter = ENV['ADAPTER'] || ENV.fetch('ADAPTERS', nil)
if desired_adapter.nil? || desired_adapter == 'in_memory'
ENV['ADAPTER_SUPPORTS'] = 'all'
Adapters.use(Adapters::InMemoryAdapter)
else
require "dm-#{desired_adapter}-adapter/spec/setup"
end
end
|
.root ⇒ Object
6
7
8
|
# File 'lib/dm-core/spec/setup.rb', line 6
def root
@root ||= default_root
end
|
.root=(path) ⇒ Object
10
11
12
|
# File 'lib/dm-core/spec/setup.rb', line 10
def root=(path)
@root = Pathname(path)
end
|
.setup_logger ⇒ Object
35
36
37
38
39
40
41
|
# File 'lib/dm-core/spec/setup.rb', line 35
def setup_logger
return unless (log = ENV.fetch('LOG', nil))
logger = DataMapper::Logger.new(log_stream(log), :debug)
logger.auto_flush = true
logger
end
|
.spec_adapters ⇒ Object
61
62
63
|
# File 'lib/dm-core/spec/setup.rb', line 61
def spec_adapters
@spec_adapters ||= {}
end
|