chauffeur 0.0.2 → 0.0.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 42cda14add9e38bfb16fa01dd90d7375880f4d294f93087efa6a918da5e08c24
4
- data.tar.gz: 127de41984c2a30e3ab044d4d1a283d63e1f8f7e0d90df866f56121b1f4b1f15
3
+ metadata.gz: 667572f03f492031efb035cd9eeef27a012f2b04e945fa95ef307085e156b460
4
+ data.tar.gz: fa66d36ef8dacd660c19e533c7de7ed98269ff3717ba0409d64220f3d66b7745
5
5
  SHA512:
6
- metadata.gz: 02a9aec896b3fc05fc53b70c4508f8bc8d51f0c504c2b2110836b2a9376e90589bfd7c9009f660fc1421623d886b93a040c4117aa63eb9f1b91ebdc53f814b42
7
- data.tar.gz: f2cbb732bcee843e24d76c7d062aeedb0adb46ac1286d82744b905e679c6c0f319756c9b3dfb471d138037cfff6e51d81db3399f43731c4c731386c69d766243
6
+ metadata.gz: 39df22c430a395cd8f0522abc3fd09be25ae152b81f0c2f7e84680da3d87adf3d4183722c5c4ec825220e99ef0f8452732e24ebc3b68657a39e434f07a203ea1
7
+ data.tar.gz: 72c80c435def0347ded09fb7313f5e58c3f37d160134955e87c74af7cc8b2c45f19797e16368efb59cb46346ac5ee31ffb66ac66a78de267bab4f8be1321bcf9
data/.rubocop.yml CHANGED
@@ -5,6 +5,9 @@ AllCops:
5
5
  Exclude:
6
6
  - lib/pry_playground.rb
7
7
  - .rubocop.yml
8
+ - spec/*_specs/*.rb
9
+ - spec/helpers/*.rb
10
+ - spec/*.rb
8
11
 
9
12
  Layout/EndOfLine:
10
13
  EnforcedStyle: lf
data/chauffeur.gemspec CHANGED
@@ -3,14 +3,14 @@ require 'English'
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = 'chauffeur'
6
- s.version = '0.0.2'
6
+ s.version = '0.0.3'
7
7
  s.date = '2017-10-23'
8
8
  s.summary = 'summary'
9
9
  s.description = 'Chauffeur is a tool to help manage drivers for automating browsers.'
10
10
  s.authors = ['Jeremy Gardner']
11
11
  s.email = 'jerrygar96@gmail.com'
12
12
  s.files = `git ls-files`.split($ORS)
13
- s.homepage = 'http://rubygems.org/gems/chauffeur'
13
+ s.homepage = 'https://gitlab.com/jerrygar96/chauffeur'
14
14
  s.license = 'MIT'
15
15
  s.executables = %w[chauffeur]
16
16
 
@@ -2,6 +2,11 @@
2
2
  class ChromedriverDownloader < DriverDownloader
3
3
  CHROMEDRIVER_URL = 'http://chromedriver.storage.googleapis.com/'.freeze
4
4
 
5
+ def initialize(verbose = true)
6
+ @all_driver_versions = all_driver_versions
7
+ super(verbose)
8
+ end
9
+
5
10
  def browser_name
6
11
  'chromedriver'
7
12
  end
@@ -19,7 +24,7 @@ class ChromedriverDownloader < DriverDownloader
19
24
  # platform must be one of: linux32, linux64, mac32, win32
20
25
  def latest_driver_version(platform)
21
26
  raise unknown_platform_error(platform) unless valid_platform?(platform)
22
- platform_drivers = all_driver_versions.select { |v| v.include?(platform) }
27
+ platform_drivers = @all_driver_versions.select { |v| v.include?(platform) }
23
28
  platform_drivers.map { |v| version_of(v.split('/')[0]) }.max
24
29
  end
25
30
 
@@ -34,7 +39,7 @@ class ChromedriverDownloader < DriverDownloader
34
39
  # platform: string - must be one of: linux32, linux64, mac32, win32
35
40
  def driver_download_url(version, platform)
36
41
  raise unknown_platform_error(platform) unless valid_platform?(platform)
37
- rel_path = all_driver_versions.find do |v|
42
+ rel_path = @all_driver_versions.find do |v|
38
43
  v.eql?("#{version}/chromedriver_#{platform}.zip")
39
44
  end
40
45
  raise unknown_version_error(version) unless rel_path
@@ -2,6 +2,11 @@
2
2
  class EdgedriverDownloader < DriverDownloader
3
3
  EDGEDRIVER_URL = 'https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/'.freeze
4
4
 
5
+ def initialize(verbose = true)
6
+ @all_driver_versions = all_driver_versions
7
+ super(verbose)
8
+ end
9
+
5
10
  def browser_name
6
11
  'microsoft_webdriver'
7
12
  end
@@ -19,8 +24,7 @@ class EdgedriverDownloader < DriverDownloader
19
24
  # platform must be one of: win
20
25
  def latest_driver_version(platform)
21
26
  raise unknown_platform_error(platform) unless valid_platform?(platform)
22
- versions = all_driver_versions
23
- versions.keys.sort.reverse.find { |k| k =~ /^\d+$/ }
27
+ @all_driver_versions.keys.sort.reverse.find { |k| k =~ /^\d+$/ }
24
28
  end
25
29
 
26
30
  # Returns all available versions of geckodriver
@@ -39,6 +43,6 @@ class EdgedriverDownloader < DriverDownloader
39
43
  # platform: string - must be win
40
44
  def driver_download_url(version, platform)
41
45
  raise unknown_platform_error(platform) unless valid_platform?(platform)
42
- all_driver_versions[version] || raise(unknown_version_error(version))
46
+ @all_driver_versions[version] || raise(unknown_version_error(version))
43
47
  end
44
48
  end
@@ -2,6 +2,11 @@
2
2
  class FirefoxdriverDownloader < DriverDownloader
3
3
  GECKODRIVER_URL = 'https://github.com/mozilla/geckodriver/releases/'.freeze
4
4
 
5
+ def initialize(verbose = true)
6
+ @all_driver_versions = all_driver_versions
7
+ super(verbose)
8
+ end
9
+
5
10
  def browser_name
6
11
  'geckodriver'
7
12
  end
@@ -19,14 +24,16 @@ class FirefoxdriverDownloader < DriverDownloader
19
24
  # platform must be one of: linux32, linux64, mac32, win32
20
25
  def latest_driver_version(platform)
21
26
  raise unknown_platform_error(platform) unless valid_platform?(platform)
22
- all_driver_versions.map { |v| Gem::Version.new(v.delete('v')) }.max
27
+ @all_driver_versions.map { |v| Gem::Version.new(v.delete('v')) }.max
23
28
  end
24
29
 
25
30
  # Returns all available versions of geckodriver
26
31
  def all_driver_versions
27
32
  resp = HTTParty.get(GECKODRIVER_URL, verify: false).parsed_response
28
33
  doc = Nokogiri::XML.parse(resp)
29
- doc.css('div.release h1.release-title a').map(&:text)
34
+ ver_array = doc.css('div.release h1.release-title a').map(&:text)
35
+ raise 'No versions found' if ver_array.empty?
36
+ ver_array
30
37
  end
31
38
 
32
39
  # Returns the url for the desired version of geckodriver
@@ -34,9 +41,14 @@ class FirefoxdriverDownloader < DriverDownloader
34
41
  # platform: string - must be one of: linux32, linux64, mac32, win32
35
42
  def driver_download_url(version, platform)
36
43
  raise unknown_platform_error(platform) unless valid_platform?(platform)
37
- raise unknown_version_error(version) unless all_driver_versions.include?("v#{version}")
44
+ raise unknown_version_error(version) unless valid_version?(version)
38
45
  extension = platform.start_with?('win') ? 'zip' : 'tar.gz'
39
46
  rel_path = "/download/v#{version}/geckodriver-v#{version}-#{platform}.#{extension}"
40
47
  "#{GECKODRIVER_URL}#{rel_path}"
41
48
  end
49
+
50
+ def valid_version?(version)
51
+ valid_versions = @all_driver_versions
52
+ valid_versions.include?("v#{version}")
53
+ end
42
54
  end
@@ -2,6 +2,11 @@
2
2
  class IedriverDownloader < DriverDownloader
3
3
  IEDRIVER_URL = 'http://selenium-release.storage.googleapis.com/'.freeze
4
4
 
5
+ def initialize(verbose = true)
6
+ @all_driver_versions = all_driver_versions
7
+ super(verbose)
8
+ end
9
+
5
10
  def browser_name
6
11
  'iedriver'
7
12
  end
@@ -19,7 +24,7 @@ class IedriverDownloader < DriverDownloader
19
24
  # platform must be one of: linux32, linux64, mac32, win32
20
25
  def latest_driver_version(platform)
21
26
  raise unknown_platform_error(platform) unless valid_platform?(platform)
22
- platform_drivers = all_driver_versions.select { |v| v.include?(platform) }
27
+ platform_drivers = @all_driver_versions.select { |v| v.include?(platform) }
23
28
  platform_drivers.map { |v| version_of(v.split('/')[0]) }.max
24
29
  end
25
30
 
@@ -35,7 +40,7 @@ class IedriverDownloader < DriverDownloader
35
40
  # platform: string - must be one of: linux32, linux64, mac32, win32
36
41
  def driver_download_url(version, platform)
37
42
  raise unknown_platform_error(platform) unless valid_platform?(platform)
38
- rel_path = all_driver_versions.find do |v|
43
+ rel_path = @all_driver_versions.find do |v|
39
44
  v =~ %r{#{version}/IEDriverServer_#{platform}_#{version}\.\d+\.zip}
40
45
  end
41
46
  raise unknown_version_error(version) unless rel_path
@@ -2,7 +2,8 @@
2
2
  class DriverDownloader
3
3
  require 'zlib'
4
4
 
5
- def initialize
5
+ def initialize(verbose = true)
6
+ @verbose = verbose
6
7
  config_file_path = "#{Dir.pwd}/drivers/config.yml"
7
8
  @data = File.open(config_file_path) { |f| YAML.safe_load(f) }
8
9
  @installed_versions = @data['installed_versions']
@@ -69,13 +70,13 @@ class DriverDownloader
69
70
  def install_driver(version, platform)
70
71
  raise unknown_platform_error(platform) unless valid_platform?(platform)
71
72
  if @installed_versions[browser_name][platform].eql?(version.to_s)
72
- puts "Driver version #{version} already installed for #{platform}"
73
- return
73
+ puts "Driver version #{version} already installed for #{platform}" if @verbose
74
+ return false
74
75
  end
75
76
  driver_path = path_for(platform, version)
76
77
  download_url = driver_download_url(version, platform)
77
78
 
78
- puts "installing '#{download_url}' into '#{driver_path}'"
79
+ puts "installing '#{download_url}' into '#{driver_path}'" if @verbose
79
80
 
80
81
  download_and_unzip(driver_path, download_url)
81
82
  update_browser_version(platform, version)
@@ -92,16 +93,12 @@ class DriverDownloader
92
93
 
93
94
  # Installs the latest version of chromedriver for all platforms.
94
95
  def upgrade_driver_all_platforms
95
- all_platforms.each do |platform|
96
- upgrade_driver(platform)
97
- end
96
+ all_platforms.each { |platform| upgrade_driver(platform) }
98
97
  end
99
98
 
100
99
  # Installs the specified version of specified driver for all platforms.
101
100
  def install_driver_all_platforms(version)
102
- all_platforms.each do |platform|
103
- install_driver(version, platform)
104
- end
101
+ all_platforms.each { |platform| install_driver(version, platform) }
105
102
  end
106
103
 
107
104
  # Downloads and installs driver to appropriate path
@@ -154,7 +151,7 @@ class DriverDownloader
154
151
  end
155
152
 
156
153
  def unknown_version_error(version)
157
- msg = "Unknown version '#{version}', valid options: #{all_driver_versions}."
154
+ msg = "Unknown version '#{version}', valid options: #{@all_driver_versions}."
158
155
  raise UnknownVersionError.new(version, msg)
159
156
  end
160
157
 
@@ -2,13 +2,16 @@ class Chauffeur
2
2
  # Adds locations of drivers for the current platform to the beginning of the path
3
3
  module PathExpander
4
4
  def self.paths_to_add
5
- all_paths = [path_to_chromedriver, path_to_geckodriver, path_to_iedriver, path_to_edgedriver].compact
5
+ all_paths = [path_to_chromedriver,
6
+ path_to_geckodriver,
7
+ path_to_iedriver,
8
+ path_to_edgedriver].compact
6
9
  # paths = all_paths.compact.join(Gem.path_separator) + Gem.path_separator
7
10
  all_paths.map { |p| format_for_platform(p) }
8
11
  end
9
12
 
10
- def self.path_to_chromedriver
11
- driver_path = "#{Dir.pwd}/drivers/chromedriver/#{current_chromedriver_platform}"
13
+ def self.path_to_chromedriver(platform = nil)
14
+ driver_path = "#{Dir.pwd}/drivers/chromedriver/#{platform || current_chromedriver_platform}"
12
15
  make_driver_executable("#{driver_path}/chromedriver")
13
16
  driver_path
14
17
  end
@@ -24,8 +27,8 @@ class Chauffeur
24
27
  end
25
28
  end
26
29
 
27
- def self.path_to_geckodriver
28
- driver_path = "#{Dir.pwd}/drivers/geckodriver/#{current_geckodriver_platform}"
30
+ def self.path_to_geckodriver(platform = nil)
31
+ driver_path = "#{Dir.pwd}/drivers/geckodriver/#{platform || current_geckodriver_platform}"
29
32
  make_driver_executable("#{driver_path}/geckodriver")
30
33
  driver_path
31
34
  end
@@ -41,16 +44,17 @@ class Chauffeur
41
44
  end
42
45
  end
43
46
 
44
- def self.path_to_iedriver
45
- windows? ? "#{Dir.pwd}/drivers/iedriver/#{current_iedriver_platform}" : nil
47
+ def self.path_to_iedriver(platform = nil)
48
+ windows? ? "#{Dir.pwd}/drivers/iedriver/#{platform || current_iedriver_platform}" : nil
46
49
  end
47
50
 
48
51
  def self.current_iedriver_platform
49
52
  ENV['architecture'].eql?('64') ? 'x64' : 'Win32'
50
53
  end
51
54
 
52
- def self.path_to_edgedriver
53
- windows_10? ? "#{Dir.pwd}/drivers/microsoft_webdriver/#{windows_build_number}" : nil
55
+ def self.path_to_edgedriver(platform = nil)
56
+ p = platform || windows_build_number
57
+ windows_10? ? "#{Dir.pwd}/drivers/microsoft_webdriver/#{p}" : nil
54
58
  end
55
59
 
56
60
  # Takes a file path and puts the appropriate slashes for the operating
@@ -1,7 +1,6 @@
1
1
  require 'archive/zip'
2
2
  require 'httparty'
3
3
  require 'nokogiri'
4
- require 'pry'
5
4
  require 'yaml'
6
5
 
7
6
  require_relative './setup'
data/lib/chauffeur.rb CHANGED
@@ -31,17 +31,17 @@ class Chauffeur
31
31
  # edge: win
32
32
  # firefox: linux32, linux64, macos, win32, win64
33
33
  # ie: Win32, x64
34
- def upgrade_driver(browser, platform)
34
+ def upgrade_driver(browser, platform, verbose = true)
35
35
  raise "Unknown Browser '#{browser}'." unless valid_browser?(browser)
36
- downloader = downloader_for(browser)
36
+ downloader = downloader_for(browser, verbose)
37
37
  downloader.upgrade_driver(platform)
38
38
  end
39
39
 
40
40
  # Installs the latest version of specified driver for all platforms.
41
41
  # browser - string, chrome, edge, firefox, ie
42
- def upgrade_driver_all_platforms(browser)
42
+ def upgrade_driver_all_platforms(browser, verbose = true)
43
43
  raise "Unknown Browser '#{browser}'." unless valid_browser?(browser)
44
- downloader = downloader_for(browser)
44
+ downloader = downloader_for(browser, verbose)
45
45
  downloader.upgrade_driver_all_platforms
46
46
  end
47
47
 
@@ -49,25 +49,25 @@ class Chauffeur
49
49
  # browser - string, chrome, edge, firefox, ie
50
50
  # platform - string, linux32, linux 64, mac32, win32
51
51
  # version: string - must match exactly the version in the download URL
52
- def install_driver(browser, platform, version)
52
+ def install_driver(browser, platform, version, verbose = true)
53
53
  raise "Unknown Browser '#{browser}'." unless valid_browser?(browser)
54
- downloader = downloader_for(browser)
54
+ downloader = downloader_for(browser, verbose)
55
55
  downloader.install_driver(version, platform)
56
56
  end
57
57
 
58
58
  # Installs the specified version of specified driver for all platforms.
59
59
  # browser - string, chrome, edge, firefox, ie
60
60
  # platforms - linux32, linux 64, mac32, win32
61
- def install_driver_all_platforms(browser, version)
61
+ def install_driver_all_platforms(browser, version, verbose = true)
62
62
  raise "Unknown Browser '#{browser}'." unless valid_browser?(browser)
63
- downloader = downloader_for(browser)
63
+ downloader = downloader_for(browser, verbose)
64
64
  downloader.install_driver_all_platforms(version)
65
65
  end
66
66
 
67
67
  # Returns a new downloader for the specified browser.
68
68
  # browser: string - chrome, edge, firefox, ie
69
- def downloader_for(browser)
70
- Object.const_get("#{browser.capitalize}driverDownloader").new
69
+ def downloader_for(browser, verbose = true)
70
+ Object.const_get("#{browser.capitalize}driverDownloader").new(verbose)
71
71
  end
72
72
 
73
73
  private
@@ -1,4 +1,5 @@
1
+ # require 'pry'
1
2
  require_relative './chauffeur'
2
3
  require_relative './chauffeur/requires'
3
4
 
4
- binding.pry
5
+ # binding.pry
@@ -24,7 +24,7 @@ describe 'driver_download_url mac' do
24
24
  it 'returns the url for the mac when mac32 is given' do
25
25
  version = '2.11'
26
26
  platform = 'mac32'
27
- downloader = ChromedriverDownloader.new
27
+ downloader = ChromedriverDownloader.new(false)
28
28
  url = downloader.driver_download_url(version, platform)
29
29
  expect(url).to eq('http://chromedriver.storage.googleapis.com/2.11/chromedriver_mac32.zip')
30
30
  end
@@ -33,7 +33,7 @@ end
33
33
  describe 'driver_download_url linux' do
34
34
  before(:all) do
35
35
  Chauffeur::Setup.create_folders_and_config
36
- @downloader = ChromedriverDownloader.new
36
+ @downloader = ChromedriverDownloader.new(false)
37
37
  end
38
38
  after(:all) do
39
39
  FileUtils.rm_r("#{Dir.pwd}/drivers") if File.exist?("#{Dir.pwd}/drivers")
@@ -56,7 +56,7 @@ end
56
56
  describe 'latest_driver_version' do
57
57
  before(:all) do
58
58
  Chauffeur::Setup.create_folders_and_config
59
- @downloader = ChromedriverDownloader.new
59
+ @downloader = ChromedriverDownloader.new(false)
60
60
  end
61
61
  after(:all) do
62
62
  FileUtils.rm_r("#{Dir.pwd}/drivers") if File.exist?("#{Dir.pwd}/drivers")
@@ -0,0 +1,127 @@
1
+ require_relative '../helpers/spec_helper'
2
+
3
+ describe 'chromedriver downloader install methods' do
4
+ before(:each) do
5
+ Chauffeur::Setup.create_folders_and_config
6
+ end
7
+ after(:each) do
8
+ FileUtils.rm_r("#{Dir.pwd}/drivers") if File.exist?("#{Dir.pwd}/drivers")
9
+ end
10
+ describe 'upgrade_driver' do
11
+ it 'installs a latest driver version for linux32' do
12
+ Chauffeur.upgrade_driver('chrome', 'linux32', false)
13
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_chromedriver('linux32')}/chromedriver")
14
+ version = Chauffeur.driver_versions['chromedriver']['linux32'].to_f > 0
15
+ expect([file_exists, version]).to eq([true, true])
16
+ end
17
+ it 'returns a latest driver version for linux64' do
18
+ Chauffeur.upgrade_driver('chrome', 'linux64', false)
19
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_chromedriver('linux64')}/chromedriver")
20
+ version = Chauffeur.driver_versions['chromedriver']['linux64'].to_f > 0
21
+ expect([file_exists, version]).to eq([true, true])
22
+ end
23
+ it 'returns a latest driver version for mac32' do
24
+ Chauffeur.upgrade_driver('chrome', 'mac32', false)
25
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_chromedriver('mac32')}/chromedriver")
26
+ version = Chauffeur.driver_versions['chromedriver']['mac32'].to_f > 0
27
+ expect([file_exists, version]).to eq([true, true])
28
+ end
29
+ it 'returns a latest driver version for win32' do
30
+ Chauffeur.upgrade_driver('chrome', 'win32', false)
31
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_chromedriver('win32')}/chromedriver.exe")
32
+ version = Chauffeur.driver_versions['chromedriver']['win32'].to_f > 0
33
+ expect([file_exists, version]).to eq([true, true])
34
+ end
35
+ it 'throws an error for unknown platform' do
36
+ e = Object.const_get('UnknownPlatformError')
37
+ expect { Chauffeur.upgrade_driver('chrome', 'linux34', false) }.to raise_error(e)
38
+ end
39
+ end
40
+ describe 'upgrade_driver_all_platforms' do
41
+ it 'installs a latest driver version for linux32' do
42
+ Chauffeur.upgrade_driver_all_platforms('chrome', false)
43
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_chromedriver('linux32')}/chromedriver")
44
+ version = Chauffeur.driver_versions['chromedriver']['linux32'].to_f > 0
45
+ expect([file_exists, version]).to eq([true, true])
46
+ end
47
+ it 'returns a latest driver version for linux64' do
48
+ Chauffeur.upgrade_driver_all_platforms('chrome', false)
49
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_chromedriver('linux64')}/chromedriver")
50
+ version = Chauffeur.driver_versions['chromedriver']['linux64'].to_f > 0
51
+ expect([file_exists, version]).to eq([true, true])
52
+ end
53
+ it 'returns a latest driver version for mac32' do
54
+ Chauffeur.upgrade_driver_all_platforms('chrome', false)
55
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_chromedriver('mac32')}/chromedriver")
56
+ version = Chauffeur.driver_versions['chromedriver']['mac32'].to_f > 0
57
+ expect([file_exists, version]).to eq([true, true])
58
+ end
59
+ it 'returns a latest driver version for win32' do
60
+ Chauffeur.upgrade_driver_all_platforms('chrome', false)
61
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_chromedriver('win32')}/chromedriver.exe")
62
+ version = Chauffeur.driver_versions['chromedriver']['win32'].to_f > 0
63
+ expect([file_exists, version]).to eq([true, true])
64
+ end
65
+ end
66
+ describe 'install_driver' do
67
+ it 'installs a latest driver version for linux32' do
68
+ Chauffeur.install_driver('chrome', 'linux32', '2.2', false)
69
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_chromedriver('linux32')}/chromedriver")
70
+ version = Chauffeur.driver_versions['chromedriver']['linux32'].to_f > 0
71
+ expect([file_exists, version]).to eq([true, true])
72
+ end
73
+ it 'returns a latest driver version for linux64' do
74
+ Chauffeur.install_driver('chrome', 'linux64', '2.2', false)
75
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_chromedriver('linux64')}/chromedriver")
76
+ version = Chauffeur.driver_versions['chromedriver']['linux64'].to_f > 0
77
+ expect([file_exists, version]).to eq([true, true])
78
+ end
79
+ it 'returns a latest driver version for mac32' do
80
+ Chauffeur.install_driver('chrome','mac32', '2.2', false)
81
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_chromedriver('mac32')}/chromedriver")
82
+ version = Chauffeur.driver_versions['chromedriver']['mac32'].to_f > 0
83
+ expect([file_exists, version]).to eq([true, true])
84
+ end
85
+ it 'returns a latest driver version for win32' do
86
+ Chauffeur.install_driver('chrome', 'win32', '2.2', false)
87
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_chromedriver('win32')}/chromedriver.exe")
88
+ version = Chauffeur.driver_versions['chromedriver']['win32'].to_f > 0
89
+ expect([file_exists, version]).to eq([true, true])
90
+ end
91
+ it 'does not install driver if it is already the currently installed driver' do
92
+ Chauffeur.install_driver('chrome', 'linux32', '2.2', false)
93
+ installed = Chauffeur.install_driver('chrome', 'linux32', '2.2')
94
+ expect(installed).to be(false)
95
+ end
96
+ it 'throws an error for unknown platform' do
97
+ e = Object.const_get('UnknownPlatformError')
98
+ expect { Chauffeur.install_driver('chrome', '2.2', 'linux34') }.to raise_error(e)
99
+ end
100
+ end
101
+ describe 'install_driver_all_platforms' do
102
+ it 'installs a latest driver version for linux32' do
103
+ Chauffeur.install_driver_all_platforms('chrome', '2.2', false)
104
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_chromedriver('linux32')}/chromedriver")
105
+ version = Chauffeur.driver_versions['chromedriver']['linux32'].to_f > 0
106
+ expect([file_exists, version]).to eq([true, true])
107
+ end
108
+ it 'returns a latest driver version for linux64' do
109
+ Chauffeur.install_driver_all_platforms('chrome', '2.2', false)
110
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_chromedriver('linux64')}/chromedriver")
111
+ version = Chauffeur.driver_versions['chromedriver']['linux64'].to_f > 0
112
+ expect([file_exists, version]).to eq([true, true])
113
+ end
114
+ it 'returns a latest driver version for mac32' do
115
+ Chauffeur.install_driver_all_platforms('chrome', '2.2', false)
116
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_chromedriver('mac32')}/chromedriver")
117
+ version = Chauffeur.driver_versions['chromedriver']['mac32'].to_f > 0
118
+ expect([file_exists, version]).to eq([true, true])
119
+ end
120
+ it 'returns a latest driver version for win32' do
121
+ Chauffeur.install_driver_all_platforms('chrome', '2.2', false)
122
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_chromedriver('win32')}/chromedriver.exe")
123
+ version = Chauffeur.driver_versions['chromedriver']['win32'].to_f > 0
124
+ expect([file_exists, version]).to eq([true, true])
125
+ end
126
+ end
127
+ end
@@ -3,7 +3,7 @@ require_relative '../helpers/spec_helper'
3
3
  describe 'chromedriver downloader overridden methods' do
4
4
  before(:all) do
5
5
  Chauffeur::Setup.create_folders_and_config
6
- @downloader = ChromedriverDownloader.new
6
+ @downloader = ChromedriverDownloader.new(false)
7
7
  end
8
8
  after(:all) do
9
9
  FileUtils.rm_r("#{Dir.pwd}/drivers") if File.exist?("#{Dir.pwd}/drivers")
@@ -30,7 +30,7 @@ end
30
30
  describe 'all versions and errors for driver_download_url' do
31
31
  before(:all) do
32
32
  Chauffeur::Setup.create_folders_and_config
33
- @downloader = ChromedriverDownloader.new
33
+ @downloader = ChromedriverDownloader.new(false)
34
34
  end
35
35
  after(:all) do
36
36
  FileUtils.rm_r("#{Dir.pwd}/drivers") if File.exist?("#{Dir.pwd}/drivers")
@@ -55,7 +55,7 @@ end
55
55
  describe 'driver_download_url' do
56
56
  before(:all) do
57
57
  Chauffeur::Setup.create_folders_and_config
58
- @downloader = ChromedriverDownloader.new
58
+ @downloader = ChromedriverDownloader.new(false)
59
59
  end
60
60
  after(:all) do
61
61
  FileUtils.rm_r("#{Dir.pwd}/drivers") if File.exist?("#{Dir.pwd}/drivers")
@@ -3,7 +3,7 @@ require_relative '../helpers/spec_helper'
3
3
  describe 'chromedriver downloader single line methods' do
4
4
  before(:all) do
5
5
  Chauffeur::Setup.create_folders_and_config
6
- @downloader = ChromedriverDownloader.new
6
+ @downloader = ChromedriverDownloader.new(false)
7
7
  end
8
8
  after(:all) do
9
9
  FileUtils.rm_r("#{Dir.pwd}/drivers") if File.exist?("#{Dir.pwd}/drivers")
@@ -23,4 +23,7 @@ describe 'driver downloader error throwing methods' do
23
23
  it 'throws an error for all_driver_versions' do
24
24
  expect { @downloader.all_driver_versions }.to raise_error(RuntimeError)
25
25
  end
26
+ it 'throws an error for driver_download_url' do
27
+ expect { @downloader.driver_download_url('something', 'test') }.to raise_error(RuntimeError)
28
+ end
26
29
  end
@@ -0,0 +1,55 @@
1
+ require_relative '../helpers/spec_helper'
2
+
3
+ describe 'edgedriver downloader install methods' do
4
+ before(:each) do
5
+ Chauffeur::Setup.create_folders_and_config
6
+ end
7
+ after(:each) do
8
+ FileUtils.rm_r("#{Dir.pwd}/drivers") if File.exist?("#{Dir.pwd}/drivers")
9
+ end
10
+ describe 'upgrade_driver' do
11
+ it 'installs a latest driver version for edge' do
12
+ Chauffeur.upgrade_driver('edge', 'win', false)
13
+ latest = Chauffeur.downloader_for('edge').latest_driver_version('win')
14
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_edgedriver(latest)}/MicrosoftWebDriver.exe")
15
+ version = Chauffeur.driver_versions['microsoft_webdriver']['win'].include?(latest)
16
+ expect([file_exists, version]).to eq([true, true])
17
+ end
18
+ end
19
+ describe 'upgrade_driver_all_platforms' do
20
+ it 'installs a latest driver version for edge' do
21
+ Chauffeur.upgrade_driver_all_platforms('edge', false)
22
+ latest = Chauffeur.downloader_for('edge').latest_driver_version('win')
23
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_edgedriver(latest)}/MicrosoftWebDriver.exe")
24
+ version = Chauffeur.driver_versions['microsoft_webdriver']['win'].include?(latest)
25
+ expect([file_exists, version]).to eq([true, true])
26
+ end
27
+ end
28
+ describe 'install_driver' do
29
+ it 'installs a driver version for edge' do
30
+ version = '15063'
31
+ Chauffeur.install_driver('edge', 'win', version,false)
32
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_edgedriver(version)}/MicrosoftWebDriver.exe")
33
+ version = Chauffeur.driver_versions['microsoft_webdriver']['win'].include?(version)
34
+ expect([file_exists, version]).to eq([true, true])
35
+ end
36
+ it 'does not install driver if it is already the currently installed driver' do
37
+ Chauffeur.install_driver('edge', 'win', '10586', false)
38
+ installed = Chauffeur.install_driver('edge', 'win', '10586', false)
39
+ expect(installed).to be(false)
40
+ end
41
+ it 'throws an error for unknown platform' do
42
+ e = Object.const_get('UnknownPlatformError')
43
+ expect { Chauffeur.install_driver('edge', '2.2', 'win') }.to raise_error(e)
44
+ end
45
+ end
46
+ describe 'install_driver_all_platforms' do
47
+ it 'installs a driver version for edge' do
48
+ version = '15063'
49
+ Chauffeur.install_driver_all_platforms('edge', version,false)
50
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_edgedriver(version)}/MicrosoftWebDriver.exe")
51
+ version = Chauffeur.driver_versions['microsoft_webdriver']['win'].include?(version)
52
+ expect([file_exists, version]).to eq([true, true])
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,151 @@
1
+ require_relative '../helpers/spec_helper'
2
+
3
+ describe 'firefox downloader install methods' do
4
+ before(:each) do
5
+ Chauffeur::Setup.create_folders_and_config
6
+ end
7
+ after(:each) do
8
+ FileUtils.rm_r("#{Dir.pwd}/drivers") if File.exist?("#{Dir.pwd}/drivers")
9
+ end
10
+ describe 'upgrade_driver' do
11
+ it 'installs a latest driver version for linux32' do
12
+ Chauffeur.upgrade_driver('firefox', 'linux32', false)
13
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_geckodriver('linux32')}/geckodriver")
14
+ version = Chauffeur.driver_versions['geckodriver']['linux32'].to_f > 0
15
+ expect([file_exists, version]).to eq([true, true])
16
+ end
17
+ it 'returns a latest driver version for linux64' do
18
+ Chauffeur.upgrade_driver('firefox', 'linux64', false)
19
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_geckodriver('linux64')}/geckodriver")
20
+ version = Chauffeur.driver_versions['geckodriver']['linux64'].to_f > 0
21
+ expect([file_exists, version]).to eq([true, true])
22
+ end
23
+ it 'returns a latest driver version for macos' do
24
+ Chauffeur.upgrade_driver('firefox', 'macos', false)
25
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_geckodriver('macos')}/geckodriver")
26
+ version = Chauffeur.driver_versions['geckodriver']['macos'].to_f > 0
27
+ expect([file_exists, version]).to eq([true, true])
28
+ end
29
+ it 'returns a latest driver version for win32' do
30
+ Chauffeur.upgrade_driver('firefox', 'win32', false)
31
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_geckodriver('win32')}/geckodriver.exe")
32
+ version = Chauffeur.driver_versions['geckodriver']['win32'].to_f > 0
33
+ expect([file_exists, version]).to eq([true, true])
34
+ end
35
+ it 'returns a latest driver version for win64' do
36
+ Chauffeur.upgrade_driver('firefox', 'win64', false)
37
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_geckodriver('win64')}/geckodriver.exe")
38
+ version = Chauffeur.driver_versions['geckodriver']['win64'].to_f > 0
39
+ expect([file_exists, version]).to eq([true, true])
40
+ end
41
+ it 'throws an error for unknown platform' do
42
+ e = Object.const_get('UnknownPlatformError')
43
+ expect { Chauffeur.upgrade_driver('firefox', 'linux34') }.to raise_error(e)
44
+ end
45
+ end
46
+ describe 'upgrade_driver_all_platforms' do
47
+ it 'installs a latest driver version for linux32' do
48
+ Chauffeur.upgrade_driver_all_platforms('firefox', false)
49
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_geckodriver('linux32')}/geckodriver")
50
+ version = Chauffeur.driver_versions['geckodriver']['linux32'].to_f > 0
51
+ expect([file_exists, version]).to eq([true, true])
52
+ end
53
+ it 'returns a latest driver version for linux64' do
54
+ Chauffeur.upgrade_driver_all_platforms('firefox', false)
55
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_geckodriver('linux64')}/geckodriver")
56
+ version = Chauffeur.driver_versions['geckodriver']['linux64'].to_f > 0
57
+ expect([file_exists, version]).to eq([true, true])
58
+ end
59
+ it 'returns a latest driver version for macos' do
60
+ Chauffeur.upgrade_driver_all_platforms('firefox', false)
61
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_geckodriver('macos')}/geckodriver")
62
+ version = Chauffeur.driver_versions['geckodriver']['macos'].to_f > 0
63
+ expect([file_exists, version]).to eq([true, true])
64
+ end
65
+ it 'returns a latest driver version for win32' do
66
+ Chauffeur.upgrade_driver_all_platforms('firefox', false)
67
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_geckodriver('win32')}/geckodriver.exe")
68
+ version = Chauffeur.driver_versions['geckodriver']['win32'].to_f > 0
69
+ expect([file_exists, version]).to eq([true, true])
70
+ end
71
+ it 'returns a latest driver version for win64' do
72
+ Chauffeur.upgrade_driver_all_platforms('firefox', false)
73
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_geckodriver('win64')}/geckodriver.exe")
74
+ version = Chauffeur.driver_versions['geckodriver']['win64'].to_f > 0
75
+ expect([file_exists, version]).to eq([true, true])
76
+ end
77
+ end
78
+ describe 'install_driver' do
79
+ it 'installs a latest driver version for linux32' do
80
+ Chauffeur.install_driver('firefox', 'linux32', '0.18.0', false)
81
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_geckodriver('linux32')}/geckodriver")
82
+ version = Chauffeur.driver_versions['geckodriver']['linux32'].to_f > 0
83
+ expect([file_exists, version]).to eq([true, true])
84
+ end
85
+ it 'returns a latest driver version for linux64' do
86
+ Chauffeur.install_driver('firefox', 'linux64', '0.18.0', false)
87
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_geckodriver('linux64')}/geckodriver")
88
+ version = Chauffeur.driver_versions['geckodriver']['linux64'].to_f > 0
89
+ expect([file_exists, version]).to eq([true, true])
90
+ end
91
+ it 'returns a latest driver version for macos' do
92
+ Chauffeur.install_driver('firefox','macos', '0.18.0', false)
93
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_geckodriver('macos')}/geckodriver")
94
+ version = Chauffeur.driver_versions['geckodriver']['macos'].to_f > 0
95
+ expect([file_exists, version]).to eq([true, true])
96
+ end
97
+ it 'returns a latest driver version for win32' do
98
+ Chauffeur.install_driver('firefox', 'win32', '0.18.0', false)
99
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_geckodriver('win32')}/geckodriver.exe")
100
+ version = Chauffeur.driver_versions['geckodriver']['win32'].to_f > 0
101
+ expect([file_exists, version]).to eq([true, true])
102
+ end
103
+ it 'returns a latest driver version for win64' do
104
+ Chauffeur.install_driver('firefox', 'win64', '0.18.0', false)
105
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_geckodriver('win64')}/geckodriver.exe")
106
+ version = Chauffeur.driver_versions['geckodriver']['win64'].to_f > 0
107
+ expect([file_exists, version]).to eq([true, true])
108
+ end
109
+ it 'does not install driver if it is already the currently installed driver' do
110
+ Chauffeur.install_driver('firefox', 'linux32', '0.18.0', false)
111
+ installed = Chauffeur.install_driver('firefox', 'linux32', '0.18.0')
112
+ expect(installed).to be(false)
113
+ end
114
+ it 'throws an error for unknown platform' do
115
+ e = Object.const_get('UnknownPlatformError')
116
+ expect { Chauffeur.install_driver('firefox', '0.18.0', 'linux34') }.to raise_error(e)
117
+ end
118
+ end
119
+ describe 'install_driver_all_platforms' do
120
+ it 'installs a latest driver version for linux32' do
121
+ Chauffeur.install_driver_all_platforms('firefox', '0.18.0', false)
122
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_geckodriver('linux32')}/geckodriver")
123
+ version = Chauffeur.driver_versions['geckodriver']['linux32'].to_f > 0
124
+ expect([file_exists, version]).to eq([true, true])
125
+ end
126
+ it 'returns a latest driver version for linux64' do
127
+ Chauffeur.install_driver_all_platforms('firefox', '0.18.0', false)
128
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_geckodriver('linux64')}/geckodriver")
129
+ version = Chauffeur.driver_versions['geckodriver']['linux64'].to_f > 0
130
+ expect([file_exists, version]).to eq([true, true])
131
+ end
132
+ it 'returns a latest driver version for macos' do
133
+ Chauffeur.install_driver_all_platforms('firefox', '0.18.0', false)
134
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_geckodriver('macos')}/geckodriver")
135
+ version = Chauffeur.driver_versions['geckodriver']['macos'].to_f > 0
136
+ expect([file_exists, version]).to eq([true, true])
137
+ end
138
+ it 'returns a latest driver version for win32' do
139
+ Chauffeur.install_driver_all_platforms('firefox', '0.18.0', false)
140
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_geckodriver('win32')}/geckodriver.exe")
141
+ version = Chauffeur.driver_versions['geckodriver']['win32'].to_f > 0
142
+ expect([file_exists, version]).to eq([true, true])
143
+ end
144
+ it 'returns a latest driver version for win64' do
145
+ Chauffeur.install_driver_all_platforms('firefox', '0.18.0', false)
146
+ file_exists = File.exist?("#{Chauffeur::PathExpander.path_to_geckodriver('win64')}/geckodriver.exe")
147
+ version = Chauffeur.driver_versions['geckodriver']['win64'].to_f > 0
148
+ expect([file_exists, version]).to eq([true, true])
149
+ end
150
+ end
151
+ end
data/spec/setup_spec.rb CHANGED
@@ -3,11 +3,6 @@ require_relative './helpers/spec_helper'
3
3
  CONFIG_DATA = File.open('./lib/chauffeur/config.yml') { |f| YAML.safe_load(f) }
4
4
  DRIVERS_DIR = "#{Dir.pwd}/drivers".freeze
5
5
 
6
- def load_data
7
- config_file_path = './lib/chauffeur/config.yml'
8
- File.open(config_file_path) { |f| YAML.safe_load(f) }
9
- end
10
-
11
6
  describe 'folder creation' do
12
7
  before(:each) do
13
8
  FileUtils.rm_r(DRIVERS_DIR) if File.exist?(DRIVERS_DIR)
@@ -46,3 +41,21 @@ describe 'config file creation' do
46
41
  expect(File.exist?("#{DRIVERS_DIR}/config.yml")).to be_truthy
47
42
  end
48
43
  end
44
+
45
+ describe 'chauffeur initialize_chauffeur' do
46
+ before(:all) do
47
+ FileUtils.rm_r(DRIVERS_DIR) if File.exist?(DRIVERS_DIR)
48
+ Chauffeur.initialize_chauffeur
49
+ end
50
+ after(:all) do
51
+ FileUtils.rm_r(DRIVERS_DIR) if File.exist?(DRIVERS_DIR)
52
+ end
53
+
54
+ it 'creates folders if they do not exist' do
55
+ expect(File.exist?(DRIVERS_DIR)).to be_truthy
56
+ end
57
+
58
+ it 'creates config.yml file in ./drivers when it does not exist' do
59
+ expect(File.exist?("#{DRIVERS_DIR}/config.yml")).to be_truthy
60
+ end
61
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chauffeur
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Gardner
@@ -123,12 +123,15 @@ files:
123
123
  - lib/chauffeur/unknown_version_error.rb
124
124
  - lib/pry_playground.rb
125
125
  - spec/chromedriver_downloader_spec.rb
126
+ - spec/chromedriver_downloader_specs/chromedriver_downloader_install_spec.rb
126
127
  - spec/chromedriver_downloader_specs/chromedriver_downloader_overridden_methods_spec.rb
127
128
  - spec/chromedriver_downloader_specs/chromedriver_downloader_simple_spec.rb
128
129
  - spec/driver_downloader_specs/driver_downloader_error_spec.rb
129
130
  - spec/driver_versions_spec.rb
131
+ - spec/edgedriver_downloader_specs/edgedriver_downloader_install_spec.rb
130
132
  - spec/edgedriver_downloader_specs/edgedriver_downloader_overridden_methods.rb
131
133
  - spec/edgedriver_downloader_specs/edgedriver_downloader_simple_spec.rb
134
+ - spec/firefoxdriver_downloader_specs/firefox_downloader_install_spec.rb
132
135
  - spec/firefoxdriver_downloader_specs/firefoxdriver_downloader_overridden_methods_spec.rb
133
136
  - spec/firefoxdriver_downloader_specs/firefoxdriver_downloader_simple_spec.rb
134
137
  - spec/format_for_platform_spec.rb
@@ -138,7 +141,7 @@ files:
138
141
  - spec/iedriver_downloader_specs/iedriver_downloader_simple_spec.rb
139
142
  - spec/path_expansion_spec.rb
140
143
  - spec/setup_spec.rb
141
- homepage: http://rubygems.org/gems/chauffeur
144
+ homepage: https://gitlab.com/jerrygar96/chauffeur
142
145
  licenses:
143
146
  - MIT
144
147
  metadata: {}