qor_test 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
1
  source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in qor_test.gemspec
4
2
  gemspec
3
+
4
+ gem 'rake'
data/README.md CHANGED
@@ -20,15 +20,11 @@
20
20
  gem 'rails', ['3.1', '3.2']
21
21
  end
22
22
 
23
- test/test_helper.rb
24
-
25
- load_dummy_rails_env #:models_path => [], :migrations_path => []
26
-
27
-
28
23
  Run:
29
24
 
30
- qor_test -e default -c 'ruby test/xxxx'
31
- qor_test -e 1.8.7 -c 'rake test'
25
+ qor_test
26
+ COMMAND='ruby test/xxxx' qor_test -e default
27
+ COMMAND='rake test' qor_test -e 1.8.7
32
28
 
33
29
  ## Contributing
34
30
 
data/Rakefile CHANGED
@@ -10,4 +10,4 @@ Rake::TestTask.new(:test) do |t|
10
10
  t.verbose = false
11
11
  end
12
12
 
13
- task :default => :test
13
+ task :default => :install
@@ -0,0 +1,63 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: utf-8
3
+
4
+ require "optparse"
5
+
6
+ $:.unshift File.expand_path("../../lib", __FILE__)
7
+ require "qor_test"
8
+ require "qor_test/configuration"
9
+
10
+ options = {}
11
+
12
+ OptionParser.new do |opts|
13
+ opts.on( '-e', '--env env', 'Test Env') do |env|
14
+ options[:env] = env
15
+ end
16
+
17
+ opts.on( '-c', '--clean', 'Clean up temporary files') do
18
+ puts "Cleaning temporary files..."
19
+ FileUtils.rm_rf(Dir[File.join(Qor::Test::CLI.temp_directory, "qor_test-gemfiles-*")])
20
+ exit
21
+ end
22
+
23
+ opts.on( '-p', '--pretend', 'Skip run command, only generate Gemfiles') do
24
+ options[:pretend] = true
25
+ end
26
+
27
+ opts.on( '-i', '--init', 'Init') do
28
+ Qor::Test::CLI.init
29
+ exit
30
+ end
31
+
32
+ opts.on( '-s', '--sample', 'Create sample configuration') do
33
+ Qor::Test::CLI.copy_sample_configuration
34
+ exit
35
+ end
36
+
37
+ opts.on( '-h', '--help', 'Display this help') do
38
+ puts opts
39
+ exit
40
+ end
41
+
42
+ opts.on( '-v', '--version', 'Show version number') do |version|
43
+ puts "Version: #{Qor::Test::VERSION}"
44
+ exit
45
+ end
46
+ end.parse!
47
+
48
+ # Default command to run tests
49
+ options[:command] = ENV['COMMAND'] || "rake #{File.exist?('spec') ? 'spec' : 'test'}"
50
+
51
+ # Run all envs by default
52
+ envs = options[:env] ? [options[:env]] : Qor::Test::Configuration.envs
53
+ envs = [nil] if envs.size == 0
54
+
55
+ $case_num = 0
56
+ scripts = envs.map do |env|
57
+ Qor::Test::CLI.new(options.merge(:env => env)).run.scripts
58
+ end
59
+ scripts.unshift "total_cases_num=#{$case_num}"
60
+
61
+ open(ENV['QOR_TEST_SCRIPT_FILE'] || 'qor_test.sh', 'a') do |f|
62
+ f.puts scripts.compact.join("\n")
63
+ end
@@ -1,10 +1,10 @@
1
1
  require 'qor_dsl'
2
- require 'qor_test/version'
3
- require 'qor_test/bundler'
4
- require 'qor_test/gem'
5
- require 'qor_test/configuration'
6
- require 'qor_test/test_help'
7
2
  require 'qor_test/cli'
3
+ require 'qor_test/configuration'
4
+ require 'qor_test/gemfile'
5
+ require 'qor_test/gem'
6
+ require 'qor_test/version'
7
+ require 'qor_test/rubies'
8
8
 
9
9
  module Qor
10
10
  module Test
@@ -1,92 +1,88 @@
1
- require "optparse"
2
1
  require 'tempfile'
3
2
  require "fileutils"
4
3
 
5
4
  module Qor
6
5
  module Test
7
6
  class CLI
8
- BUNDLER_ENV_VARS = %w(RUBYOPT BUNDLE_PATH BUNDLE_BIN_PATH BUNDLE_GEMFILE).freeze
9
- attr_accessor :options
7
+ attr_accessor :options, :scripts
10
8
 
11
9
  def initialize(options={})
12
10
  self.options = options
11
+ self.scripts = []
13
12
  end
14
13
 
15
- def run
16
- gemfiles = Qor::Test::Bundler.new(options).generate_gemfiles
17
-
18
- puts ">> Generated #{gemfiles.count} Gemfile\n\n"
19
-
20
- gemfiles.map do |gemfile|
21
- begin
22
- new_gemfile = "QorTest_" + File.basename(gemfile)
23
- FileUtils.cp(gemfile, new_gemfile)
24
- with_clean_gemfile(new_gemfile) do
25
- puts ">> BUNDLE_GEMFILE=#{gemfile}"
26
- ["bundle update", "#{options[:command]}\n\n"].map do |command|
27
- puts ">> #{command}"
28
- system(command) unless options[:pretend]
29
- end
30
- end
31
- ensure
32
- FileUtils.rm(new_gemfile)
33
- end
34
- end
14
+ def gemfile
15
+ @gemfile ||= Qor::Test::Gemfile.new(options)
35
16
  end
36
17
 
37
- def with_clean_gemfile(gemfile)
38
- original_env = {}
39
- BUNDLER_ENV_VARS.each do |key|
40
- original_env[key] = ENV[key]
41
- ENV[key] = nil
42
- end
43
-
44
- ENV['BUNDLE_GEMFILE'] = gemfile
45
- yield
46
- ensure
47
- original_env.each { |key, value| ENV[key] = value }
18
+ def gemfiles
19
+ @gemfiles ||= gemfile.generate_gemfiles.reverse
48
20
  end
49
21
 
50
- def self.option_parser
51
- options = {}
52
-
53
- OptionParser.new do |opts|
54
- opts.on( '-e', '--env env', 'Test Env') do |env|
55
- options[:env] = env
56
- end
57
-
58
- opts.on( '-c', '--command command', 'Command') do |command|
59
- options[:command] = command
60
- end
61
-
62
- opts.on( '-C', '--clean', 'Clean old temp files') do
63
- puts "Cleaning temp files..."
64
- FileUtils.rm_rf(Dir[File.join(temp_directory, "qor_test-tmp-*")])
65
- exit
66
- end
67
-
68
- opts.on( '-p', '--pretend', 'Skip run command, only generate Gemfiles') do
69
- options[:pretend] = true
70
- end
22
+ def rubies
23
+ gemfile.ruby_versions
24
+ end
71
25
 
72
- opts.on( '-h', '--help', 'Display this help') do
73
- puts opts
74
- exit
26
+ def run
27
+ rubies.map do |version|
28
+ scripts << Qor::Test::Rubies.switch_ruby_version(version)
29
+ gemfiles.map do |file|
30
+ $case_num += 1
31
+ scripts << "echo -n '\n\e[01;31m[ENV #{gemfile.group_name}] \e[0m'"
32
+ scripts << "echo -n '\e[31mRunning case #{$case_num} with ruby #{version}, '$[$total_cases_num-#{$case_num}]' cases left\e[0m\n'"
33
+ run_with_gemfile(file)
75
34
  end
35
+ end
36
+ self
37
+ rescue Qor::Dsl::ConfigurationNotFound
38
+ puts "ConfigurationNotFound, please run `qor_test --init` in project's root to get a sample configuration"
39
+ end
76
40
 
77
- opts.on( '-v', '--version', 'Show version number') do |version|
78
- puts "Version: #{Qor::Test::VERSION}"
79
- exit
80
- end
81
- end.parse!
41
+ def run_with_gemfile(file)
42
+ lock_file = "#{file}.lock"
43
+ temp_file = "QorTest_" + File.basename(file)
44
+ temp_lock = "#{temp_file}.lock"
45
+
46
+ # Copy Gemfile and Gemfile.lock if exist
47
+ scripts << "cp '#{file}' '#{temp_file}'"
48
+ scripts << "[ -f '#{lock_file}' ] && cp '#{lock_file}' '#{temp_lock}'"
49
+
50
+ # Export Gemfile
51
+ scripts << "echo '>> BUNDLE_GEMFILE=#{file}'"
52
+ scripts << "export BUNDLE_GEMFILE=#{temp_file}"
53
+
54
+ # Test commands. 1, bundle install, 2, rake test
55
+ [
56
+ "bundle install --quiet",
57
+ "#{options[:command]}".sub(/^(bundle\s+exec\s+)?/, 'bundle exec ')
58
+ ].map do |command|
59
+ scripts << "echo '>> #{command}'"
60
+ scripts << command unless options[:pretend]
61
+ end
82
62
 
83
- options
63
+ # Backup & Cleanup
64
+ scripts << "[ -f '#{temp_lock}' ] && cp '#{temp_lock}' '#{lock_file}'"
65
+ [temp_file, temp_lock].map do |file|
66
+ scripts << "[ -f '#{file}' ] && rm '#{file}'"
67
+ end
84
68
  end
85
69
 
86
70
  def self.temp_directory
87
71
  tempfile = Tempfile.new('fake')
88
72
  File.dirname(tempfile.path)
89
73
  end
74
+
75
+ def self.copy_sample_configuration
76
+ FileUtils.mkdir_p(File.dirname(Qor::Test::Configuration.config_path))
77
+ FileUtils.cp(Qor::Test::Configuration.sample_file, Qor::Test::Configuration.config_path)
78
+ puts("Copied sample configuration to #{Qor::Test::Configuration.config_path}!")
79
+ end
80
+
81
+ def self.init
82
+ command = "sudo ln -nfs #{File.expand_path("../../../shell/qor_test", __FILE__)} /usr/bin/"
83
+ puts command
84
+ system command
85
+ end
90
86
  end
91
87
  end
92
88
  end
@@ -1,78 +1,107 @@
1
+ require 'digest/md5'
2
+
1
3
  module Qor
2
4
  module Test
3
- module Configuration
5
+ class Configuration
4
6
  include Qor::Dsl
5
- default_configs ["config/qor/test.rb"]
6
7
 
7
8
  node :source
8
9
  node :ruby
9
10
  node :gemspec
10
11
  node :gem
11
12
 
12
- node :env do
13
- node :gem
14
- node :ruby
13
+ [:git, :platforms, :path, :group, :env].map do |name|
14
+ node name do
15
+ node :ruby
16
+ node :gem
17
+ end
15
18
  end
16
19
 
17
- def self.gems(options={})
18
- deep_find(:gem) do |n|
19
- n.parent.root? || ((n.parent.config_name == :env) && n.parent.name.to_s == (options[:env] || 'default'))
20
- end
20
+ def self.config_path
21
+ "config/qor/test.rb"
21
22
  end
22
23
 
23
- def self.gemspecs(options={})
24
- deep_find(:gemspec) do |n|
25
- n.parent.root? || ((n.parent.config_name == :env) && n.parent.name.to_s == (options[:env] || 'default'))
26
- end
24
+ def self.gemfile_path
25
+ [ENV['QOR_TEST_GEMFILE'], ENV['BUNDLE_GEMFILE'], 'Gemfile'].detect {|x| File.exist?(x.to_s)}
27
26
  end
28
27
 
29
- def self.sources(options={})
30
- deep_find(:source) do |n|
31
- n.parent.root? || ((n.parent.config_name == :env) && n.parent.name.to_s == (options[:env] || 'default'))
32
- end
28
+ def self.configuration_digest(options={})
29
+ hexdigest = Digest::MD5.hexdigest(options.inspect + File.read(config_path) + File.read(gemfile_path))
30
+ "qor_test-gemfiles-#{hexdigest}"
33
31
  end
34
- end
35
32
 
36
- class Gemfile
37
- include Qor::Dsl
38
- default_configs [ENV['QOR_TEST_GEMFILE'], ENV['BUNDLE_GEMFILE'], 'Gemfile']
33
+ def self.sample_file
34
+ File.expand_path("#{File.dirname(__FILE__)}/../../config/qor/test.rb")
35
+ end
39
36
 
40
- node :source
41
- node :ruby
42
- node :gemspec
43
- node :gem
37
+ def self.root_from_config
38
+ @root_from_config ||= Qor::Test::Configuration.load(config_path, :force => true)
39
+ end
44
40
 
45
- node :git do
46
- node :gem
41
+ def self.root_from_gemfile
42
+ @root_from_gemfile ||= Qor::Test::Configuration.load(gemfile_path, :force => true)
47
43
  end
48
44
 
49
- node :platforms do
50
- node :gem
45
+ def self.find_block(options={})
46
+ lambda do |node|
47
+ parent = node.parent
48
+ parent.root? || parent.is_node?(:env, options[:env] || 'default') || parent.is_node?(:group, 'test')
49
+ end
51
50
  end
52
51
 
53
- node :path do
54
- node :gem
52
+ def self.ruby_versions(options)
53
+ ruby_versions = [root_from_config, root_from_gemfile].map {|x| x.deep_find('ruby', &find_block(options)) }
54
+ ruby_versions.flatten.compact.map(&:value)
55
55
  end
56
56
 
57
- node :group do
58
- node :gem
57
+ def self.envs(options={})
58
+ envs = root_from_config.deep_find('env').map(&:value)
59
+ options[:env] ? envs.select {|x| x == options[:env]} : envs
59
60
  end
60
61
 
61
- def self.gems(options={})
62
- deep_find(:gem) do |n|
63
- n.parent.root? || (n.parent.config_name != :group) || (n.parent.name.to_s == 'test')
62
+ {:gemspecs => :gemspec, :sources => :source}.map do |key, value|
63
+ self.class.class_eval do
64
+ define_method key do |options|
65
+ objs_from_config = root_from_config.deep_find(value, &find_block(options))
66
+ objs_from_gemfile = root_from_gemfile.deep_find(value, &find_block(options))
67
+ [objs_from_config, objs_from_gemfile].flatten.compact
68
+ end
64
69
  end
65
70
  end
66
71
 
67
- def self.gemspecs(options={})
68
- deep_find(:gemspec) do |n|
69
- n.parent.root? || (n.parent.config_name != :group) || (n.parent.name.to_s == 'test')
72
+ def self.combined_sources(options={})
73
+ sources(options).map { |source| "source #{source.value.inspect}\n" }.uniq.join("")
74
+ end
75
+
76
+ def self.combined_gemspecs(options={})
77
+ gemspecs(options).map do |gemspec|
78
+ "gemspec #{gemspec.value.nil? ? '' : gemspec.value.inspect.gsub(/^\{|\}$/,'')}\n"
79
+ end.uniq.join("")
80
+ end
81
+
82
+ def self.gems_set_from_config(options={})
83
+ all_gems = root_from_config.deep_find(:gem, &find_block(options)).inject({}) do |sum, node|
84
+ sum[node.name] ||= []
85
+ sum[node.name].concat Qor::Test::Gem.parse(node)
86
+ sum
87
+ end.values
88
+
89
+ gems_set = all_gems.length > 0 ? all_gems[0].product(*all_gems[1..-1]) : []
90
+ gems_set.map { |gems| gems_to_hash(gems) }
91
+ end
92
+
93
+ def self.gems_hash_from_gemfile(options={})
94
+ gems = root_from_gemfile.deep_find(:gem, &find_block(options)).map do |node|
95
+ Qor::Test::Gem.parse(node)[0]
70
96
  end
97
+ gems_to_hash(gems)
71
98
  end
72
99
 
73
- def self.sources(options={})
74
- deep_find(:source) do |n|
75
- n.parent.root? || (n.parent.config_name != :group) || (n.parent.name.to_s == 'test')
100
+ private
101
+ def self.gems_to_hash(gems)
102
+ gems.inject({}) do |sum, gem|
103
+ sum[gem.name.to_s] = gem
104
+ sum
76
105
  end
77
106
  end
78
107
  end
@@ -7,9 +7,9 @@ module Qor
7
7
  self.name = node.name.to_s
8
8
  self.gem_option = gem_option
9
9
 
10
- [:git, :path, :platforms].map do |x|
11
- if node.parent.config_name.to_sym == x
12
- self.options = {x => node.parent.value}.merge(node.parent.options)
10
+ [:git, :path, :platforms].map do |type|
11
+ if node.parent.is_node?(type)
12
+ self.options = {type => node.parent.value}.merge(node.parent.options)
13
13
  end
14
14
  end
15
15
  end
@@ -0,0 +1,53 @@
1
+ module Qor
2
+ module Test
3
+ class Gemfile
4
+ attr_accessor :options
5
+
6
+ def initialize options={}
7
+ self.options = options
8
+ end
9
+
10
+ def ruby_versions
11
+ versions = Qor::Test::Configuration.ruby_versions(options)
12
+ versions.empty? ? [RUBY_VERSION] : versions
13
+ end
14
+
15
+ def group_name
16
+ Qor::Test::Configuration.envs(options)[0]
17
+ end
18
+
19
+ def generate_gemfiles
20
+ gems_set_from_config = Qor::Test::Configuration.gems_set_from_config(options)
21
+ gems_hash_from_gemfile = Qor::Test::Configuration.gems_hash_from_gemfile(options)
22
+ gemfile_length = [gems_set_from_config.length, 1].max
23
+
24
+ gemfile_dir = File.join(Qor::Test::CLI.temp_directory, Qor::Test::Configuration.configuration_digest(options))
25
+
26
+ if File.exist?(gemfile_dir)
27
+ Dir[File.join(gemfile_dir, '*')].select {|x| x !~ /.lock$/ }
28
+ else
29
+ FileUtils.mkdir_p(gemfile_dir)
30
+
31
+ (0...gemfile_length).map do |index|
32
+ filename = File.join(gemfile_dir, "Gemfile.#{index}")
33
+ write_gemfile(gems_set_from_config[index] || {}, gems_hash_from_gemfile, filename)
34
+ end
35
+ end
36
+ end
37
+
38
+ def write_gemfile(gems_from_config, gems_from_gemfile, filename)
39
+ gem_names = [gems_from_config.keys, gems_from_gemfile.keys].flatten.compact.uniq
40
+
41
+ gems = gem_names.map do |name|
42
+ gems_from_config[name] || gems_from_gemfile[name]
43
+ end.compact
44
+
45
+ File.open(filename, "w+") do |f|
46
+ f << Qor::Test::Configuration.combined_sources(options)
47
+ f << Qor::Test::Configuration.combined_gemspecs(options)
48
+ f << gems.map(&:to_s).join("\n")
49
+ end.path
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,43 @@
1
+ module Qor
2
+ module Test
3
+ class Rubies
4
+ class << self
5
+
6
+ def rvm?
7
+ %x(sh -c "command -v rvm").size > 0
8
+ end
9
+
10
+ def rbenv?
11
+ %x(sh -c "command -v rbenv").size > 0
12
+ end
13
+
14
+ def version_manager_installed?
15
+ rvm? || rbenv?
16
+ end
17
+
18
+ def versions
19
+ if rvm?
20
+ `rvm list strings`.split("\n")
21
+ elsif rbenv?
22
+ `rbenv versions | cut -d '(' -f1`.split("\n").map {|x| x.sub(/\*/,'') }.map(&:strip)
23
+ end
24
+ end
25
+
26
+ def matched_version(version)
27
+ result = versions.select {|x| x =~ Regexp.new(version) }[-1]
28
+ puts("ruby '#{version}' is not installed! please install it first!") && exit unless result
29
+ result
30
+ end
31
+
32
+ def switch_ruby_version(version)
33
+ if rvm?
34
+ "rvm use #{matched_version(version)}"
35
+ elsif rbenv?
36
+ "export RBENV_VERSION=#{matched_version(version)}"
37
+ end
38
+ end
39
+
40
+ end
41
+ end
42
+ end
43
+ end
@@ -1,5 +1,5 @@
1
1
  module Qor
2
2
  module Test
3
- VERSION = "0.0.1"
3
+ VERSION = "0.0.2"
4
4
  end
5
5
  end
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env bash
2
+
3
+ export QOR_TEST_SCRIPT_FILE=$(mktemp /tmp/qor_test-gemfiles-scripts-XXXXXXXXXX)
4
+ qor_test.rb $*
5
+ [ -f $QOR_TEST_SCRIPT_FILE ] && chmod +x $QOR_TEST_SCRIPT_FILE
6
+ [ -f $QOR_TEST_SCRIPT_FILE ] && source $QOR_TEST_SCRIPT_FILE
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qor_test
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-23 00:00:00.000000000 Z
12
+ date: 2012-12-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: qor_dsl
@@ -31,7 +31,7 @@ description: ! 'Qor Test: Make test easier!'
31
31
  email:
32
32
  - wosmvp@gmail.com
33
33
  executables:
34
- - qor_test
34
+ - qor_test.rb
35
35
  extensions: []
36
36
  extra_rdoc_files: []
37
37
  files:
@@ -41,15 +41,16 @@ files:
41
41
  - LICENSE
42
42
  - README.md
43
43
  - Rakefile
44
- - bin/qor_test
44
+ - bin/qor_test.rb
45
45
  - lib/qor_test.rb
46
- - lib/qor_test/bundler.rb
47
46
  - lib/qor_test/cli.rb
48
47
  - lib/qor_test/configuration.rb
49
48
  - lib/qor_test/gem.rb
50
- - lib/qor_test/test_help.rb
49
+ - lib/qor_test/gemfile.rb
50
+ - lib/qor_test/rubies.rb
51
51
  - lib/qor_test/version.rb
52
52
  - qor_test.gemspec
53
+ - shell/qor_test
53
54
  homepage: ''
54
55
  licenses: []
55
56
  post_install_message:
@@ -70,9 +71,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
70
71
  version: '0'
71
72
  requirements: []
72
73
  rubyforge_project:
73
- rubygems_version: 1.8.24
74
+ rubygems_version: 1.8.23
74
75
  signing_key:
75
76
  specification_version: 3
76
77
  summary: ! 'Qor Test: Make test easier!'
77
78
  test_files: []
78
- has_rdoc:
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: utf-8
3
-
4
- require "pathname"
5
- bin_file = Pathname.new(__FILE__).realpath
6
- $:.unshift File.expand_path("../../lib", bin_file)
7
-
8
- require "qor_test"
9
-
10
- options = Qor::Test::CLI.option_parser
11
- Qor::Test::CLI.new(options).run
@@ -1,70 +0,0 @@
1
- module Qor
2
- module Test
3
- class Bundler
4
- attr_accessor :options
5
-
6
- def initialize options={}
7
- self.options = options
8
- end
9
-
10
- def gems_set_from_config
11
- gems = Qor::Test::Configuration.gems(options).inject({}) do |s, node|
12
- s[node.name] ||= []
13
- s[node.name].concat Qor::Test::Gem.parse(node)
14
- s
15
- end.values
16
-
17
- gems.length > 0 ? gems[0].product(*gems[1..-1]) : []
18
- end
19
-
20
- def gems_hash_from_gemfile
21
- Qor::Test::Gemfile.gems(options).inject({}) do |s, node|
22
- s[node.name.to_s] = Qor::Test::Gem.parse(node)[0]
23
- s
24
- end
25
- end
26
-
27
- def gemspecs
28
- [Qor::Test::Configuration.gemspecs(options), Qor::Test::Gemfile.gemspecs(options)].flatten.compact
29
- end
30
-
31
- def sources
32
- [Qor::Test::Configuration.sources(options), Qor::Test::Gemfile.sources(options)].flatten.compact
33
- end
34
-
35
- def generate_gemfiles
36
- gems_set = gems_set_from_config
37
- gems_hash = gems_hash_from_gemfile
38
- gems_name = gems_hash.keys
39
- gemfile_length = [gems_set.length, 1].max
40
-
41
- gemfile_dir = File.join(Qor::Test::CLI.temp_directory, "qor_test-tmp-#{Time.now.to_i}")
42
- FileUtils.mkdir_p(gemfile_dir)
43
-
44
- filenames = (0...gemfile_length).map do |t|
45
- gems = []
46
- gem_names = gems_set[t].map(&:name)
47
- gem_names.concat(gems_name).uniq!
48
-
49
- gem_names.map do |name|
50
- gems << (gems_set[t].select {|g| g.name == name}[0] || gems_hash[name])
51
- end
52
-
53
- file = File.new(File.join(gemfile_dir, "Gemfile.#{t}"), "w+")
54
- # Add sources
55
- file << sources.map { |source| "source #{source.value.inspect}\n" }.uniq.join("")
56
- # Add gemspec
57
- file << gemspecs.map do |gemspec|
58
- "gemspec #{gemspec.value.nil? ? '' : gemspec.value.inspect.gsub(/^\{|\}$/,'')}\n"
59
- end.uniq.join("")
60
- # Add gems
61
- file << gems.map(&:to_s).join("\n")
62
- file.close
63
- file.path
64
- end
65
-
66
- filenames
67
- end
68
- end
69
- end
70
- end
@@ -1,9 +0,0 @@
1
- module Qor
2
- module Test
3
- class TestHelp
4
-
5
- def self.load_dummy_rails_env(options={})
6
- end
7
- end
8
- end
9
- end