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



78
79
80
81
82
# File 'lib/qor_test/configuration.rb', line 78

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



74
75
76
# File 'lib/qor_test/configuration.rb', line 74

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

.config_pathObject



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

def self.config_path
  [ENV['QOR_TEST_CONFIG'], "config/qor/test.rb"].detect {|x| File.exist?(x.to_s)}
end

.configuration_digest(options = {}) ⇒ Object



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

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



59
60
61
62
# File 'lib/qor_test/configuration.rb', line 59

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



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

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



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

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



95
96
97
98
99
100
# File 'lib/qor_test/configuration.rb', line 95

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



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

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



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

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

.root_from_gemfileObject



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

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

.ruby_versions(options) ⇒ Object



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

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

.sample_fileObject



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

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