metasploit-model 0.27.0.pre.dep.pre.railties → 0.27.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +13 -5
- data/app/models/metasploit/model/association/reflection.rb +3 -0
- data/app/models/metasploit/model/module/ancestor/spec/template.rb +3 -0
- data/app/models/metasploit/model/module/class/spec/template.rb +4 -0
- data/app/models/metasploit/model/module/instance/spec/template.rb +4 -0
- data/app/models/metasploit/model/search/group/base.rb +3 -0
- data/app/models/metasploit/model/search/group/intersection.rb +2 -0
- data/app/models/metasploit/model/search/group/union.rb +2 -0
- data/app/models/metasploit/model/search/operation/association.rb +2 -0
- data/app/models/metasploit/model/search/operation/base.rb +3 -0
- data/app/models/metasploit/model/search/operation/boolean.rb +2 -0
- data/app/models/metasploit/model/search/operation/date.rb +2 -0
- data/app/models/metasploit/model/search/operation/group/base.rb +2 -0
- data/app/models/metasploit/model/search/operation/group/intersection.rb +2 -0
- data/app/models/metasploit/model/search/operation/group/union.rb +2 -0
- data/app/models/metasploit/model/search/operation/integer.rb +4 -0
- data/app/models/metasploit/model/search/operation/null.rb +2 -0
- data/app/models/metasploit/model/search/operation/set.rb +2 -0
- data/app/models/metasploit/model/search/operation/set/integer.rb +2 -0
- data/app/models/metasploit/model/search/operation/set/string.rb +2 -0
- data/app/models/metasploit/model/search/operation/string.rb +4 -0
- data/app/models/metasploit/model/search/operator/association.rb +2 -0
- data/app/models/metasploit/model/search/operator/attribute.rb +2 -0
- data/app/models/metasploit/model/search/operator/base.rb +4 -0
- data/app/models/metasploit/model/search/operator/delegation.rb +2 -0
- data/app/models/metasploit/model/search/operator/deprecated/app.rb +2 -0
- data/app/models/metasploit/model/search/operator/deprecated/author.rb +2 -0
- data/app/models/metasploit/model/search/operator/deprecated/authority.rb +2 -0
- data/app/models/metasploit/model/search/operator/deprecated/platform.rb +2 -0
- data/app/models/metasploit/model/search/operator/deprecated/ref.rb +2 -0
- data/app/models/metasploit/model/search/operator/deprecated/text.rb +2 -0
- data/app/models/metasploit/model/search/operator/group/base.rb +2 -0
- data/app/models/metasploit/model/search/operator/group/intersection.rb +2 -0
- data/app/models/metasploit/model/search/operator/group/union.rb +2 -0
- data/app/models/metasploit/model/search/operator/null.rb +2 -0
- data/app/models/metasploit/model/search/operator/single.rb +2 -0
- data/app/models/metasploit/model/search/query.rb +3 -0
- data/app/models/metasploit/model/spec/template.rb +9 -2
- data/app/models/metasploit/model/visitation/visitor.rb +3 -0
- data/lib/metasploit/model.rb +24 -15
- data/lib/metasploit/model/architecture.rb +2 -0
- data/lib/metasploit/model/association.rb +4 -0
- data/lib/metasploit/model/author.rb +2 -0
- data/lib/metasploit/model/authority.rb +14 -0
- data/lib/metasploit/model/authority/bid.rb +2 -0
- data/lib/metasploit/model/authority/cve.rb +2 -0
- data/lib/metasploit/model/authority/msb.rb +2 -0
- data/lib/metasploit/model/authority/osvdb.rb +2 -0
- data/lib/metasploit/model/authority/pmasa.rb +2 -0
- data/lib/metasploit/model/authority/secunia.rb +2 -0
- data/lib/metasploit/model/authority/us_cert_vu.rb +2 -0
- data/lib/metasploit/model/authority/waraxe.rb +2 -0
- data/lib/metasploit/model/authority/zdi.rb +2 -0
- data/lib/metasploit/model/base.rb +2 -0
- data/lib/metasploit/model/derivation.rb +4 -1
- data/lib/metasploit/model/email_address.rb +2 -0
- data/lib/metasploit/model/engine.rb +1 -0
- data/lib/metasploit/model/invalid.rb +2 -0
- data/lib/metasploit/model/login.rb +10 -0
- data/lib/metasploit/model/login/status.rb +2 -0
- data/lib/metasploit/model/module.rb +16 -0
- data/lib/metasploit/model/module/action.rb +2 -0
- data/lib/metasploit/model/module/ancestor.rb +6 -0
- data/lib/metasploit/model/module/ancestor/spec.rb +5 -0
- data/lib/metasploit/model/module/architecture.rb +2 -0
- data/lib/metasploit/model/module/author.rb +2 -0
- data/lib/metasploit/model/module/class.rb +5 -0
- data/lib/metasploit/model/module/class/spec.rb +5 -0
- data/lib/metasploit/model/module/instance.rb +6 -0
- data/lib/metasploit/model/module/instance/spec.rb +5 -0
- data/lib/metasploit/model/module/path.rb +3 -0
- data/lib/metasploit/model/module/platform.rb +2 -0
- data/lib/metasploit/model/module/rank.rb +2 -0
- data/lib/metasploit/model/module/reference.rb +2 -0
- data/lib/metasploit/model/module/target.rb +6 -0
- data/lib/metasploit/model/module/target/architecture.rb +2 -0
- data/lib/metasploit/model/module/target/platform.rb +2 -0
- data/lib/metasploit/model/platform.rb +2 -0
- data/lib/metasploit/model/real_pathname.rb +2 -0
- data/lib/metasploit/model/realm.rb +9 -0
- data/lib/metasploit/model/realm/key.rb +2 -0
- data/lib/metasploit/model/reference.rb +2 -0
- data/lib/metasploit/model/search.rb +9 -0
- data/lib/metasploit/model/search/attribute.rb +2 -0
- data/lib/metasploit/model/search/group.rb +6 -0
- data/lib/metasploit/model/search/operation.rb +4 -0
- data/lib/metasploit/model/search/operation/group.rb +5 -0
- data/lib/metasploit/model/search/operator.rb +4 -0
- data/lib/metasploit/model/search/operator/deprecated.rb +6 -0
- data/lib/metasploit/model/search/operator/group.rb +5 -0
- data/lib/metasploit/model/spec.rb +7 -0
- data/lib/metasploit/model/spec/i18n_exception_handler.rb +2 -0
- data/lib/metasploit/model/spec/pathname_collision.rb +2 -0
- data/lib/metasploit/model/spec/template/write.rb +2 -0
- data/lib/metasploit/model/spec/temporary_pathname.rb +3 -0
- data/lib/metasploit/model/translation.rb +2 -0
- data/lib/metasploit/model/version.rb +0 -1
- data/lib/metasploit/model/visitation.rb +2 -0
- data/spec/app/models/metasploit/model/module/ancestor/spec/template_spec.rb +1 -1
- data/spec/lib/metasploit/model/engine_spec.rb +1 -1
- data/spec/lib/metasploit/model/login/status_spec.rb +83 -0
- data/spec/lib/metasploit/model/spec_spec.rb +3 -3
- data/spec/spec_helper.rb +4 -6
- metadata +22 -36
- data/lib/metasploit/model/configuration.rb +0 -72
- data/lib/metasploit/model/configuration/autoload.rb +0 -109
- data/lib/metasploit/model/configuration/child.rb +0 -12
- data/lib/metasploit/model/configuration/error.rb +0 -4
- data/lib/metasploit/model/configuration/i18n.rb +0 -54
- data/lib/metasploit/model/configuration/parent.rb +0 -50
- data/lib/metasploit/model/configured.rb +0 -46
- data/spec/lib/metasploit/model/configuration/autoload_spec.rb +0 -165
- data/spec/lib/metasploit/model/configuration/child_spec.rb +0 -24
- data/spec/lib/metasploit/model/configuration/error_spec.rb +0 -5
- data/spec/lib/metasploit/model/configuration/i18n_spec.rb +0 -103
- data/spec/lib/metasploit/model/configuration_spec.rb +0 -106
- data/spec/lib/metasploit/model/configured_spec.rb +0 -41
- data/spec/lib/metasploit/model_spec.rb +0 -68
- data/spec/support/shared/contexts/metasploit/model/configuration.rb +0 -11
- data/spec/support/shared/examples/metasploit/model/configuration/parent/child.rb +0 -60
@@ -1,109 +0,0 @@
|
|
1
|
-
require 'metasploit/model/configuration/child'
|
2
|
-
|
3
|
-
# Defines methods for adding paths to `ActiveSupport::Dependencies.autoload_paths`.
|
4
|
-
class Metasploit::Model::Configuration::Autoload < Metasploit::Model::Configuration::Child
|
5
|
-
#
|
6
|
-
# Attributes
|
7
|
-
#
|
8
|
-
|
9
|
-
# @!attribute [rw] relative_once_paths
|
10
|
-
# Paths relative to {Metasploit::Model::Configuration::Child#configuration #configuration}
|
11
|
-
# {Metasploit::Model::Configuration#root #root} that should only be autoloaded once.
|
12
|
-
#
|
13
|
-
# @return [Array<String>]
|
14
|
-
|
15
|
-
# @!attribute [rw] relative_paths
|
16
|
-
# Paths relative to {Metasploit::Model::Configuration::Child#configuration #configuration}
|
17
|
-
# {Metasploit::Model::Configuration#root #root} that should be autoloaded more than once.
|
18
|
-
#
|
19
|
-
# @return [Array<String>]
|
20
|
-
|
21
|
-
#
|
22
|
-
# Methods
|
23
|
-
#
|
24
|
-
|
25
|
-
# Combines {#once_paths} and {#paths} as both need to be added to
|
26
|
-
# `ActiveSupport::Dependencies.autoload_paths`.
|
27
|
-
#
|
28
|
-
# @return [Array<String>]
|
29
|
-
def all_paths
|
30
|
-
@all_paths ||= (once_paths + paths).uniq
|
31
|
-
end
|
32
|
-
|
33
|
-
# Eager loads all rb files under {#all_paths}. Paths in {#all_paths} are sorted before loading, so that `app` will
|
34
|
-
# load before `lib`. Files are required using `ActiveSupport::Dependencies::Loadable#require_dependency` so they
|
35
|
-
# interact with `ActiveSupport::Dependencies` loading correctly.
|
36
|
-
#
|
37
|
-
# @return [void]
|
38
|
-
def eager_load!
|
39
|
-
# sort to favor app over lib since it is assumed that app/models will define classes and lib will define modules
|
40
|
-
# included in those classes that are defined under the class namespaces, so the class needs to be required first
|
41
|
-
all_paths.sort.each do |load_path|
|
42
|
-
matcher = /\A#{Regexp.escape(load_path)}\/(.*)\.rb\Z/
|
43
|
-
|
44
|
-
Dir.glob("#{load_path}/**/*.rb").sort.each do |file|
|
45
|
-
require_dependency file.sub(matcher, '\1')
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
# {#relative_once_paths} converted to absolute paths.
|
51
|
-
#
|
52
|
-
# @return [Array<String>]
|
53
|
-
def once_paths
|
54
|
-
@once_paths ||= relative_once_paths.collect { |relative_path|
|
55
|
-
configuration.root.join(relative_path).to_path
|
56
|
-
}
|
57
|
-
end
|
58
|
-
|
59
|
-
# {#relative_paths} converted to absolute paths.
|
60
|
-
#
|
61
|
-
# @return [Array<String>]
|
62
|
-
def paths
|
63
|
-
@paths ||= relative_paths.collect { |relative_path|
|
64
|
-
configuration.root.join(relative_path).to_path
|
65
|
-
}
|
66
|
-
end
|
67
|
-
|
68
|
-
# Paths relative to {Metasploit::Model::Configuration#root} that are to be added to
|
69
|
-
# `ActiveSupport::Dependencies.autoload_paths` and `ActiveSupport::Dependencies.autoload_once_paths`.
|
70
|
-
#
|
71
|
-
# @return [Array<String>] Defaults to ['lib']
|
72
|
-
def relative_once_paths
|
73
|
-
@relative_once_paths ||= [
|
74
|
-
'lib'
|
75
|
-
]
|
76
|
-
end
|
77
|
-
|
78
|
-
attr_writer :relative_once_paths
|
79
|
-
|
80
|
-
# Paths relative to {Metasploit::Model::Configuration#root} that are to be added to
|
81
|
-
# `ActiveSupport::Dependencies.autoload_paths`, but not `ActiveSupport::Dependencies.autoload_once_paths`
|
82
|
-
#
|
83
|
-
# @return [Array<String>] Defaults to ['app/models']
|
84
|
-
def relative_paths
|
85
|
-
@relative_paths ||= [
|
86
|
-
File.join('app', 'models')
|
87
|
-
]
|
88
|
-
end
|
89
|
-
|
90
|
-
attr_writer :relative_paths
|
91
|
-
|
92
|
-
# Adds {#all_paths} to `ActiveSupport::Dependencies.autoload_paths` if they are not already there and adds
|
93
|
-
# {#once_paths} to `ActiveSupport::Dependencies.autoload_once_paths` if they are not already there.
|
94
|
-
#
|
95
|
-
# @return [void]
|
96
|
-
def setup
|
97
|
-
all_paths.each do |autoload_path|
|
98
|
-
unless ActiveSupport::Dependencies.autoload_paths.include? autoload_path
|
99
|
-
ActiveSupport::Dependencies.autoload_paths << autoload_path
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
once_paths.each do |autoload_once_path|
|
104
|
-
unless ActiveSupport::Dependencies.autoload_once_paths.include? autoload_once_path
|
105
|
-
ActiveSupport::Dependencies.autoload_once_paths << autoload_once_path
|
106
|
-
end
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|
@@ -1,12 +0,0 @@
|
|
1
|
-
# Child of a {Metasploit::Model::Configuration} that contains a reference to the {#configuration}.
|
2
|
-
class Metasploit::Model::Configuration::Child
|
3
|
-
#
|
4
|
-
# Attributes
|
5
|
-
#
|
6
|
-
|
7
|
-
# @!attribute [rw] configuration
|
8
|
-
# Main configuration.
|
9
|
-
#
|
10
|
-
# @return [Metasploit::Model::Configuration::Autoload]
|
11
|
-
attr_accessor :configuration
|
12
|
-
end
|
@@ -1,54 +0,0 @@
|
|
1
|
-
require 'metasploit/model/configuration/child'
|
2
|
-
|
3
|
-
# Defines methods for adding paths to `I18n.load_path`
|
4
|
-
class Metasploit::Model::Configuration::I18n < Metasploit::Model::Configuration::Child
|
5
|
-
#
|
6
|
-
# Attributes
|
7
|
-
#
|
8
|
-
|
9
|
-
# @!attribute [rw] relative_directories
|
10
|
-
# Paths relative to root that point to directories that contain locale files like `en.yml`.
|
11
|
-
#
|
12
|
-
# @return [Array<String>] Defaults to ['config/locales']
|
13
|
-
|
14
|
-
# Absolute paths to directories under which to find I18n .yml files.
|
15
|
-
#
|
16
|
-
# @return [Array<String>]
|
17
|
-
def directories
|
18
|
-
@directories ||= relative_directories.collect { |relative_path|
|
19
|
-
configuration.root.join(relative_path).to_path
|
20
|
-
}
|
21
|
-
end
|
22
|
-
|
23
|
-
# Absolute paths to I18n .yml files.
|
24
|
-
#
|
25
|
-
# @return [Array<String>]
|
26
|
-
def paths
|
27
|
-
@paths ||= directories.flat_map { |directory|
|
28
|
-
glob = File.join(directory, '*.yml')
|
29
|
-
Dir.glob(glob)
|
30
|
-
}
|
31
|
-
end
|
32
|
-
|
33
|
-
# Relative paths to I18n directories.
|
34
|
-
#
|
35
|
-
# @return [Array<String>] Defaults to 'config/locales'
|
36
|
-
def relative_directories
|
37
|
-
@relative_directories ||= [
|
38
|
-
File.join('config', 'locales')
|
39
|
-
]
|
40
|
-
end
|
41
|
-
|
42
|
-
attr_writer :relative_directories
|
43
|
-
|
44
|
-
# Adds {#paths} to `I18n.load_path` if they are not already there.
|
45
|
-
#
|
46
|
-
# @return [void]
|
47
|
-
def setup
|
48
|
-
paths.each do |path|
|
49
|
-
unless ::I18n.load_path.include? path
|
50
|
-
::I18n.load_path << path
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
@@ -1,50 +0,0 @@
|
|
1
|
-
# DSL for declaring {Metasploit::Model::Configuration::Child children} of {Metasploit::Model::Configuration}
|
2
|
-
module Metasploit::Model::Configuration::Parent
|
3
|
-
# Declares a {Metasploit::Model::Configuration::Child} with the given `name`.
|
4
|
-
#
|
5
|
-
# @param name [Symbol] The name of the child.
|
6
|
-
# @return [void]
|
7
|
-
def child(name)
|
8
|
-
child_class_attribute_name = "#{name}_class"
|
9
|
-
child_class_instance_variable_name = "@#{child_class_attribute_name}".to_sym
|
10
|
-
child_instance_variable_name = "@#{name}".to_sym
|
11
|
-
|
12
|
-
#
|
13
|
-
# Attributes
|
14
|
-
#
|
15
|
-
|
16
|
-
# @!attribute [rw] <name>_class
|
17
|
-
# The `Class` used to create {#<name>}.
|
18
|
-
#
|
19
|
-
# @return [Class]
|
20
|
-
attr_writer child_class_attribute_name
|
21
|
-
|
22
|
-
#
|
23
|
-
# Methods
|
24
|
-
#
|
25
|
-
|
26
|
-
define_method(name) do
|
27
|
-
unless instance_variable_defined? child_instance_variable_name
|
28
|
-
child_instance = send(child_class_attribute_name).new
|
29
|
-
child_instance.configuration = self
|
30
|
-
|
31
|
-
instance_variable_set child_instance_variable_name, child_instance
|
32
|
-
end
|
33
|
-
|
34
|
-
instance_variable_get child_instance_variable_name
|
35
|
-
end
|
36
|
-
|
37
|
-
define_method(child_class_attribute_name) do
|
38
|
-
child_class = instance_variable_get child_class_instance_variable_name
|
39
|
-
|
40
|
-
unless child_class
|
41
|
-
require "metasploit/model/configuration/#{name}"
|
42
|
-
|
43
|
-
child_class = "Metasploit::Model::Configuration::#{name.to_s.camelize}".constantize
|
44
|
-
instance_variable_set child_class_instance_variable_name, child_class
|
45
|
-
end
|
46
|
-
|
47
|
-
child_class
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
@@ -1,46 +0,0 @@
|
|
1
|
-
require 'active_support/core_ext/module/delegation'
|
2
|
-
|
3
|
-
# Allows modules to be configured (using {Metasploit::Model::Configuration}) similar to Rails engines.
|
4
|
-
#
|
5
|
-
# @example Making gem module configurable
|
6
|
-
# module MyGem
|
7
|
-
# extend Metasploit::Model::Configured
|
8
|
-
#
|
9
|
-
# # assumes __FILE__ is lib/my_gem.rb
|
10
|
-
# lib_my_gem_pathname = Pathname.new(___FILE__)
|
11
|
-
# lib_pathname = lib_my_gem_pathname.parent
|
12
|
-
# configuration.root = lib_pathname.parent
|
13
|
-
#
|
14
|
-
# configuration.autoload.paths << 'app/models'
|
15
|
-
# end
|
16
|
-
#
|
17
|
-
# # registers 'app/models' as an autoload_path with ActiveSupport::Dependencies
|
18
|
-
# MyGem.setup
|
19
|
-
module Metasploit::Model::Configured
|
20
|
-
# The {Metasploit::Model::Configuration} for this configured `Module`.
|
21
|
-
#
|
22
|
-
# @return [Metasploit::Model::Configuration]
|
23
|
-
def configuration
|
24
|
-
unless instance_variable_defined? :@configuration
|
25
|
-
require 'metasploit/model/configuration'
|
26
|
-
|
27
|
-
@configuration = Metasploit::Model::Configuration.new
|
28
|
-
end
|
29
|
-
|
30
|
-
@configuration
|
31
|
-
end
|
32
|
-
|
33
|
-
# @!method root
|
34
|
-
# The configured root.
|
35
|
-
#
|
36
|
-
# @return (see Metasploit::Model::Configuration#root)
|
37
|
-
#
|
38
|
-
# @!method setup
|
39
|
-
# Sets up the autoload and i18n paths for the configured gem.
|
40
|
-
#
|
41
|
-
# @return (see Metasploit::Model::Configuration.setup)
|
42
|
-
# @raise (see Metasploit::Model::Configuration.setup)
|
43
|
-
delegate :root,
|
44
|
-
:setup,
|
45
|
-
to: :configuration
|
46
|
-
end
|
@@ -1,165 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Metasploit::Model::Configuration::Autoload do
|
4
|
-
include_context 'Metasploit::Model::Configuration'
|
5
|
-
|
6
|
-
subject(:autoload) do
|
7
|
-
described_class.new.tap { |autoload|
|
8
|
-
autoload.configuration = configuration
|
9
|
-
}
|
10
|
-
end
|
11
|
-
|
12
|
-
context 'all_paths' do
|
13
|
-
subject(:all_paths) do
|
14
|
-
autoload.all_paths
|
15
|
-
end
|
16
|
-
|
17
|
-
it 'should include autoload_once_paths' do
|
18
|
-
all_paths.to_set.should be_superset(autoload.once_paths.to_set)
|
19
|
-
end
|
20
|
-
|
21
|
-
it 'should include paths' do
|
22
|
-
all_paths.to_set.should be_superset(autoload.paths.to_set)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
context 'once_paths' do
|
27
|
-
subject(:once_paths) do
|
28
|
-
autoload.once_paths
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'should call relative_once_paths' do
|
32
|
-
autoload.should_receive(:relative_once_paths).and_return([])
|
33
|
-
|
34
|
-
once_paths
|
35
|
-
end
|
36
|
-
|
37
|
-
it 'should have absolute paths' do
|
38
|
-
once_paths.each do |once_path|
|
39
|
-
once_path.should == File.absolute_path(once_path)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
context 'paths' do
|
45
|
-
subject(:paths) do
|
46
|
-
autoload.paths
|
47
|
-
end
|
48
|
-
|
49
|
-
it 'should call relative_paths' do
|
50
|
-
autoload.should_receive(:relative_paths).and_return([])
|
51
|
-
|
52
|
-
paths
|
53
|
-
end
|
54
|
-
|
55
|
-
it 'should have absolute paths' do
|
56
|
-
paths.each do |path|
|
57
|
-
path.should == File.absolute_path(path)
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
context 'relative_once_paths' do
|
63
|
-
subject(:relative_once_paths) do
|
64
|
-
autoload.relative_once_paths
|
65
|
-
end
|
66
|
-
|
67
|
-
it { should include('lib') }
|
68
|
-
end
|
69
|
-
|
70
|
-
context 'relative_paths' do
|
71
|
-
subject(:relative_paths) do
|
72
|
-
autoload.relative_paths
|
73
|
-
end
|
74
|
-
|
75
|
-
it { should include('app/models') }
|
76
|
-
end
|
77
|
-
|
78
|
-
context 'setup' do
|
79
|
-
subject(:setup) do
|
80
|
-
autoload.setup
|
81
|
-
end
|
82
|
-
|
83
|
-
let(:autoload_once_path) do
|
84
|
-
Metasploit::Model.root.join('spec', 'dummy', 'lib').to_path
|
85
|
-
end
|
86
|
-
|
87
|
-
let(:autoload_path) do
|
88
|
-
Metasploit::Model.root.join('spec', 'dummy', 'app', 'models').to_path
|
89
|
-
end
|
90
|
-
|
91
|
-
before(:each) do
|
92
|
-
@before_autoload_paths = ActiveSupport::Dependencies.autoload_paths.dup
|
93
|
-
ActiveSupport::Dependencies.autoload_paths.clear
|
94
|
-
|
95
|
-
@before_autoload_once_paths = ActiveSupport::Dependencies.autoload_once_paths.dup
|
96
|
-
ActiveSupport::Dependencies.autoload_once_paths.clear
|
97
|
-
|
98
|
-
autoload.stub(:autoload_once_paths).and_return([autoload_once_path])
|
99
|
-
autoload.stub(:autoload_paths).and_return([])
|
100
|
-
end
|
101
|
-
|
102
|
-
after(:each) do
|
103
|
-
ActiveSupport::Dependencies.autoload_paths = @before_autoload_paths
|
104
|
-
ActiveSupport::Dependencies.autoload_once_paths = @before_autoload_once_paths
|
105
|
-
end
|
106
|
-
|
107
|
-
context 'paths' do
|
108
|
-
it 'should call all_paths' do
|
109
|
-
autoload.should_receive(:all_paths).and_return([])
|
110
|
-
|
111
|
-
setup
|
112
|
-
end
|
113
|
-
|
114
|
-
context 'with autoload_path in ActiveSupport::Dependencies.autoload_paths' do
|
115
|
-
before(:each) do
|
116
|
-
ActiveSupport::Dependencies.autoload_paths << autoload_path
|
117
|
-
ActiveSupport::Dependencies.autoload_paths << autoload_once_path
|
118
|
-
end
|
119
|
-
|
120
|
-
it 'should not add path to ActiveSupport::Dependencies.autoload_paths' do
|
121
|
-
expect {
|
122
|
-
setup
|
123
|
-
}.to_not change(ActiveSupport::Dependencies, :autoload_paths)
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
127
|
-
context 'without autoload_path in ActiveSupport::Dependencies.autoload_paths' do
|
128
|
-
it 'should add path to ActiveSupport::Dependencies.autoload_paths' do
|
129
|
-
setup
|
130
|
-
|
131
|
-
ActiveSupport::Dependencies.autoload_paths.should include(autoload_once_path)
|
132
|
-
end
|
133
|
-
end
|
134
|
-
end
|
135
|
-
|
136
|
-
context 'once_paths' do
|
137
|
-
it 'should call once_paths' do
|
138
|
-
# once in #all_paths and once when called directly
|
139
|
-
autoload.should_receive(:once_paths).twice.and_return([])
|
140
|
-
|
141
|
-
setup
|
142
|
-
end
|
143
|
-
|
144
|
-
context 'with autoload_path in ActiveSupport::Dependencies.autoload_once_paths' do
|
145
|
-
before(:each) do
|
146
|
-
ActiveSupport::Dependencies.autoload_once_paths << autoload_once_path
|
147
|
-
end
|
148
|
-
|
149
|
-
it 'should not add path to ActiveSupport::Dependencies.autoload_once_paths' do
|
150
|
-
expect {
|
151
|
-
setup
|
152
|
-
}.to_not change(ActiveSupport::Dependencies, :autoload_once_paths)
|
153
|
-
end
|
154
|
-
end
|
155
|
-
|
156
|
-
context 'without autoload_path in ActiveSupport::Dependencies.autoload_once_paths' do
|
157
|
-
it 'should add path to ActiveSupport::Dependencies.autoload_once_paths' do
|
158
|
-
setup
|
159
|
-
|
160
|
-
ActiveSupport::Dependencies.autoload_once_paths.should include(autoload_once_path)
|
161
|
-
end
|
162
|
-
end
|
163
|
-
end
|
164
|
-
end
|
165
|
-
end
|