module Windows
Public Instance Methods
set_windows_env()
click to toggle source
# File lib/pretest/config/windows.rb, line 4 def set_windows_env Dir.mkdir('C:\\env_folder') unless Dir.entries('C:\\').include?('env_folder') Dir.chdir('C:\\env_folder') @ruby = get_ruby_path puts "We're going to move the webdrivers to '#{@ruby}'" puts 'Downloading webdrivers to C:\\env_folder' windows_download puts 'Unziping webdrivers files' unzip_windows_files puts 'Checking Ruby Development Kit...' dk_check_and_install move_webdrivers end
Private Instance Methods
dk_check_and_install()
click to toggle source
# File lib/pretest/config/windows.rb, line 79 def dk_check_and_install set_bits rbenv = '' rbpath = '' rblist = '' rbenv += ENV['PATH'] raise 'There is no Ruby environment variable defined in current PATH' if ENV['PATH'].include?('Ruby') == false rbenv = rbenv.split(';') rbenv.each do |rb| rbpath = rb if rb.include?('Ruby') end rbpath = rbpath.gsub!('bin', 'lib\\ruby\\site_ruby\\') Dir.entries(rbpath).each { |files| rblist << files.to_s } if rblist.include?('devkit') else zip_download("DevKit-mingw64-#{@devkit}-sfx.exe", "http://dl.bintray.com/oneclick/rubyinstaller/DevKit-mingw64-#{@devkit}-sfx.exe") unzip_install_dk("DevKit-mingw64-#{@devkit}-sfx.exe") end end
get_ruby_path()
click to toggle source
# File lib/pretest/config/windows.rb, line 126 def get_ruby_path env = ENV['PATH'].split(';') rb_path = env.each do |path| return path if path.upcase.include?('RUBY') && path.upcase.include?('BIN') end raise "We couldn't locate the ruby installed on the current machine" if rb_path.nil? rb_path end
move_webdrivers()
click to toggle source
# File lib/pretest/config/windows.rb, line 112 def move_webdrivers FileUtils.rm_rf("#{@ruby}}\\phantomjs.exe") if Dir.entries(@ruby).include?('phantomjs.exe') FileUtils.rm_rf("#{@ruby}}\\geckodriver.exe") if Dir.entries(@ruby).include?('geckodriver.exe') FileUtils.rm_rf("#{@ruby}}\\chromedriver.exe") if Dir.entries(@ruby).include?('chromedriver.exe') FileUtils.rm_rf("#{@ruby}}\\IEDriverServer.exe") if Dir.entries(@ruby).include?('IEDriverServer.exe') FileUtils.mv('C:\\env_folder\\phantomjs-2.1.1-windows\\bin\\phantomjs.exe', @ruby) FileUtils.mv('C:\\env_folder\\chromedriver.exe', @ruby) FileUtils.mv('C:\\env_folder\\IEDriverServer.exe', @ruby) FileUtils.mv('C:\\env_folder\\geckodriver.exe', @ruby) FileUtils.rm_rf('C:\\env_folder\\phantomjs-2.1.1-windows') if Dir.entries('.').include?('phantomjs-2.1.1-windows') end
unzip_file(file, destination)
click to toggle source
# File lib/pretest/config/windows.rb, line 20 def unzip_file(file, destination) Zip::File.open(file) do |zip_file| zip_file.each do |f| f_path = File.join(destination, f.name) FileUtils.mkdir_p(File.dirname(f_path)) f.extract(f_path) end end system "del #{file}" end
unzip_install_dk(file)
click to toggle source
# File lib/pretest/config/windows.rb, line 100 def unzip_install_dk(file) Dir.chdir('C:\\env_folder') FileUtils.rm_rf('C:\\env_folder\\devkit') if Dir.entries('C:\\env_folder').include?('devkit') Dir.mkdir('devkit') FileUtils.mv(file.to_s, 'C:\\env_folder\\devkit\\') Dir.chdir('devkit') system "#{file} -o '.' -y" system "del #{file}" system 'ruby dk.rb init' system 'ruby dk.rb install' end
unzip_windows_files()
click to toggle source
# File lib/pretest/config/windows.rb, line 71 def unzip_windows_files set_bits unzip_file('chromedriver_win32.zip', '.') unless Dir.entries('.').include?('chromedriver.exe') unzip_file('phantomjs-2.1.1-windows.zip', '.') unless Dir.entries('.').include?('phantomjs.exe') || File.directory?('phantomjs-2.1.1-windows') unzip_file('IEDriverServer_Win32_3.4.0.zip', '.') unless Dir.entries('.').include?('IEDriverServer.exe') unzip_file("geckodriver-v0.23.0-win#{@bits}.zip", '.') unless Dir.entries('.').include?('geckodriver.exe') end
windows_download()
click to toggle source
# File lib/pretest/config/windows.rb, line 50 def windows_download set_bits Dir.chdir('C:\\env_folder') FileUtils.rm_rf('C:\\env_folder\\phantomjs-2.1.1-windows.zip') if Dir.entries('C:\\env_folder').include?('phantomjs-2.1.1-windows.zip') FileUtils.rm_rf('C:\\env_folder\\IEDriverServer_Win32_3.4.0.zip') if Dir.entries('C:\\env_folder').include?('IEDriverServer_Win32_3.4.0.zip') FileUtils.rm_rf("C:\\env_folder\\geckodriver-v0.23.0-win#{@bits}.zip") if Dir.entries('C:\\env_folder').include?("geckodriver-v0.23.0-win#{@bits}.zip") FileUtils.rm_rf('C:\\env_folder\\chromedriver_win32.zip') if Dir.entries('C:\\env_folder').include?('chromedriver_win32.zip') FileUtils.rm_rf('C:\\env_folder\\chromedriver.exe') if Dir.entries('C:\\env_folder').include?('chromedriver.exe') FileUtils.rm_rf('C:\\env_folder\\IEDriverServer.exe') if Dir.entries('C:\\env_folder').include?('IEDriverServer.exe') FileUtils.rm_rf('C:\\env_folder\\geckodriver.exe') if Dir.entries('C:\\env_folder').include?('geckodriver.exe') FileUtils.rm_rf('C:\\env_folder\\phantomjs-2.1.1-windows') if Dir.entries('C:\\env_folder').include?('phantomjs-2.1.1-windows') FileUtils.rm_rf('C:\\env_folder\\phantomjs.exe') if Dir.entries('C:\\env_folder').include?('phantomjs.exe') zip_download('chromedriver_win32.zip', 'https://chromedriver.storage.googleapis.com/2.45/chromedriver_win32.zip') unless Dir.entries('.').include?('chromedriver_win32.zip') || Dir.entries('.').include?('chrome.exe') zip_download('phantomjs-2.1.1-windows.zip', 'https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-windows.zip') unless Dir.entries('.').include?('phantomjs-2.1.1-windows.zip') || Dir.entries('.').include?('phantomjs.exe') zip_download('IEDriverServer_Win32_3.4.0.zip', 'http://selenium-release.storage.googleapis.com/3.4/IEDriverServer_Win32_3.4.0.zip') unless Dir.entries('.').include?('IEDriverServer_Win32_3.4.0.zip') || Dir.entries('.').include?('IEDriverServer.exe') zip_download("geckodriver-v0.23.0-win#{@bits}.zip", "https://github.com/mozilla/geckodriver/releases/download/v0.23.0/geckodriver-v0.23.0-win#{@bits}.zip") unless Dir.entries('.').include?("geckodriver-v0.23.0-win#{@bits}") || Dir.entries('.').include?('geckodriver.exe') end
zip_download(name, url)
click to toggle source
# File lib/pretest/config/windows.rb, line 31 def zip_download(name, url) zipfile = url resource = RestClient::Resource.new( zipfile, timeout: 120, open_timeout: 60 ) response = resource.get if response.code == 200 f = File.new(name, 'wb') f << response.body f.close puts "#{name} Download Complete" else puts "#{name} Download Failed" raise("Response Code was not 200: Response Code #{response.code}") end end