Class: Qor::Test::Configuration

Inherits:
Object
  • Object
show all
Includes:
Dsl
Defined in:
lib/qor_test/configuration.rb

Class Method Summary collapse

Class Method Details

.combined_gemspecs(options = {}) ⇒ Object



76
77
78
79
80
# File 'lib/qor_test/configuration.rb', line 76

def self.combined_gemspecs(options={})
  gemspecs(options).map do |gemspec|
    "gemspec #{gemspec.value.nil? ? '' : gemspec.value.inspect.gsub(/^\{|\}$/,'')}\n"
  end.uniq.join("")
end

.combined_sources(options = {}) ⇒ Object



72
73
74
# File 'lib/qor_test/configuration.rb', line 72

def self.combined_sources(options={})
  sources(options).map { |source| "source #{source.value.inspect}\n" }.uniq.join("")
end

.config_pathObject



20
21
22
# File 'lib/qor_test/configuration.rb', line 20

def self.config_path
  "config/qor/test.rb"
end

.configuration_digest(options = {}) ⇒ Object



28
29
30
31
# File 'lib/qor_test/configuration.rb', line 28

def self.configuration_digest(options={})
  hexdigest = Digest::MD5.hexdigest(options.inspect + File.read(config_path) + File.read(gemfile_path))
  "qor_test-gemfiles-#{hexdigest}"
end

.envs(options = {}) ⇒ Object



57
58
59
60
# File 'lib/qor_test/configuration.rb', line 57

def self.envs(options={})
  envs = root_from_config.deep_find('env').map(&:value)
  options[:env] ? envs.select {|x| x == options[:env]} : envs
end

.find_block(options = {}) ⇒ Object



45
46
47
48
49
50
# File 'lib/qor_test/configuration.rb', line 45

def self.find_block(options={})
  lambda do |node|
    parent = node.parent
    parent.root? || parent.is_node?(:env, options[:env] || 'default') || parent.is_node?(:group, 'test')
  end
end

.gemfile_pathObject



24
25
26
# File 'lib/qor_test/configuration.rb', line 24

def self.gemfile_path
  [ENV['QOR_TEST_GEMFILE'], ENV['BUNDLE_GEMFILE'], 'Gemfile'].detect {|x| File.exist?(x.to_s)}
end

.gems_hash_from_gemfile(options = {}) ⇒ Object



93
94
95
96
97
98
# File 'lib/qor_test/configuration.rb', line 93

def self.gems_hash_from_gemfile(options={})
  gems = root_from_gemfile.deep_find(:gem, &find_block(options)).map do |node|
    Qor::Test::Gem.parse(node)[0]
  end
  gems_to_hash(gems)
end

.gems_set_from_config(options = {}) ⇒ Object



82
83
84
85
86
87
88
89
90
91
# File 'lib/qor_test/configuration.rb', line 82

def self.gems_set_from_config(options={})
  all_gems = root_from_config.deep_find(:gem, &find_block(options)).inject({}) do |sum, node|
    sum[node.name] ||= []
    sum[node.name].concat Qor::Test::Gem.parse(node)
    sum
  end.values

  gems_set = all_gems.length > 0 ? all_gems[0].product(*all_gems[1..-1]) : []
  gems_set.map { |gems| gems_to_hash(gems) }
end

.root_from_configObject



37
38
39
# File 'lib/qor_test/configuration.rb', line 37

def self.root_from_config
  @root_from_config ||= Qor::Test::Configuration.load(config_path, :force => true)
end

.root_from_gemfileObject



41
42
43
# File 'lib/qor_test/configuration.rb', line 41

def self.root_from_gemfile
  @root_from_gemfile ||= Qor::Test::Configuration.load(gemfile_path, :force => true)
end

.ruby_versions(options) ⇒ Object



52
53
54
55
# File 'lib/qor_test/configuration.rb', line 52

def self.ruby_versions(options)
  ruby_versions = [root_from_config, root_from_gemfile].map {|x| x.deep_find('ruby', &find_block(options)) }
  ruby_versions.flatten.compact.map(&:value)
end

.sample_fileObject



33
34
35
# File 'lib/qor_test/configuration.rb', line 33

def self.sample_file
  File.expand_path("#{File.dirname(__FILE__)}/../../config/qor/test.rb")
end