webdrivers 3.4.3 → 3.5.0.beta1

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
- SHA1:
3
- metadata.gz: d99303e61a135d89ea3845d56fa245f0b5cc33c9
4
- data.tar.gz: d168c888708ea9e2b103be60569ed6649d3e3aa5
2
+ SHA256:
3
+ metadata.gz: f292b9f00d51fa84cf046500d96f6e974756f4822bea030b04f020a221912e45
4
+ data.tar.gz: bca6951770b45c20b275eceb2339e77cdaa6089a63b9ce232264c91690a2e2f7
5
5
  SHA512:
6
- metadata.gz: 8b1e0cd42257045b3564394d4baa6ccb6be8f888431d4ddcf10e8263d02614c58cc866eac2b004759efedd15198900880308e57c5c0ebc8f6e9c1f4f04478328
7
- data.tar.gz: d042c82661fb58d6b1ef075b1b0861c5e724086711bdb9f02a7b91aa1d5515a48ffdc822d1e562f6355392801f45614d40da653d0c3ce55b58200895e2d81e9a
6
+ metadata.gz: 23bd4cbf655e4983b70f5405d2e2f1229b9f61743e1cfa81971a62f5e71920a07e557a6341842d9d5a44eda718c6cb79741c1b260561d5563bd2519b5abb3c9b
7
+ data.tar.gz: 37be287a21d845cbc09a7e98d524275167dd7af804a7e5a7577082e43bcfe3daaccaadf65b637dac7929a70c28561f937719b957bc45796301c4460f417ae3b7
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ### 3.5.0.beta1 (2018-12-15)
2
+
3
+ * Allow version to be specified
4
+
1
5
  ### 3.4.3 (2018-10-22)
2
6
 
3
7
  * Fix bug with JRuby and geckodriver (thanks twalpole)
@@ -4,15 +4,15 @@ module Webdrivers
4
4
  class Chromedriver < Common
5
5
  class << self
6
6
 
7
- def current
7
+ def current_version
8
8
  Webdrivers.logger.debug "Checking current version"
9
9
  return nil unless downloaded?
10
10
  string = %x(#{binary} --version)
11
11
  Webdrivers.logger.debug "Current version of #{binary} is #{string}"
12
- normalize string.match(/ChromeDriver (\d\.\d+)/)[1]
12
+ normalize string.match(/ChromeDriver (\d+\.\d+)/)[1]
13
13
  end
14
14
 
15
- def latest
15
+ def latest_version
16
16
  Gem::Version.new(get(URI.join(base_url, "LATEST_RELEASE")))
17
17
  end
18
18
 
@@ -5,30 +5,40 @@ module Webdrivers
5
5
  class Common
6
6
  class << self
7
7
 
8
+ attr_accessor :version
9
+
8
10
  def update
9
11
  unless site_available?
10
- return current.nil? ? nil : binary
12
+ return current_version.nil? ? nil : binary
11
13
  end
12
- released = latest()
13
- location = binary()
14
14
 
15
- return location if released.nil? && File.exists?(binary) # Newer not found, keep current
15
+ return binary if desired_version.nil? && File.exists?(binary) # Newer not found, keep current
16
16
 
17
- if released.nil? # Can't find latest and no existing binary
17
+ if desired_version.nil? # Can't find latest and no existing binary
18
18
  msg = "Unable to find the latest version of #{file_name}; try downloading manually from #{base_url} and place in #{install_dir}"
19
19
  raise StandardError, msg
20
20
  end
21
21
 
22
22
  if correct_binary?
23
23
  Webdrivers.logger.debug "Expected webdriver version found"
24
- return location
24
+ return binary
25
25
  end
26
26
 
27
27
  remove # Remove outdated exe
28
28
  download # Fetch latest
29
29
  end
30
30
 
31
- def latest
31
+ def desired_version
32
+ if self.version.is_a?(Gem::Version)
33
+ version
34
+ elsif self.version.nil?
35
+ latest_version
36
+ else
37
+ Gem::Version.new(self.version.to_s)
38
+ end
39
+ end
40
+
41
+ def latest_version
32
42
  downloads.keys.sort.last
33
43
  end
34
44
 
@@ -37,8 +47,8 @@ module Webdrivers
37
47
  FileUtils.rm_f binary
38
48
  end
39
49
 
40
- def download(version = nil)
41
- url = download_url(version)
50
+ def download
51
+ url = downloads[desired_version]
42
52
  filename = File.basename url
43
53
 
44
54
  FileUtils.mkdir_p(install_dir) unless File.exists?(install_dir)
@@ -107,17 +117,6 @@ module Webdrivers
107
117
  Webdrivers.proxy_addr && Webdrivers.proxy_port
108
118
  end
109
119
 
110
- def download_url(version)
111
- key = if version.is_a?(Gem::Version)
112
- version
113
- elsif version.nil?
114
- latest
115
- else
116
- Gem::Version.new(version.to_s)
117
- end
118
- downloads[key]
119
- end
120
-
121
120
  def downloaded?
122
121
  result = File.exist? binary
123
122
  Webdrivers.logger.debug "File is already downloaded: #{result}"
@@ -187,7 +186,7 @@ module Webdrivers
187
186
 
188
187
  # Already have latest version downloaded?
189
188
  def correct_binary?
190
- latest == current && File.exists?(binary)
189
+ latest_version == current_version && File.exists?(binary)
191
190
  end
192
191
 
193
192
  def normalize(string)
@@ -4,7 +4,7 @@ module Webdrivers
4
4
  class Geckodriver < Common
5
5
  class << self
6
6
 
7
- def current
7
+ def current_version
8
8
  Webdrivers.logger.debug "Checking current version"
9
9
  return nil unless downloaded?
10
10
  string = %x(#{binary} --version)
@@ -5,7 +5,7 @@ module Webdrivers
5
5
  class IEdriver < Common
6
6
  class << self
7
7
 
8
- def current
8
+ def current_version
9
9
  Webdrivers.logger.debug "Checking current version"
10
10
  return nil unless downloaded?
11
11
  string = %x(#{binary} --version)
@@ -3,10 +3,10 @@ module Webdrivers
3
3
 
4
4
  class << self
5
5
 
6
- def current
6
+ def windows_version
7
7
  Webdrivers.logger.debug "Checking current version"
8
8
 
9
- # current() from other webdrivers returns the version from the webdriver EXE.
9
+ # current_version() from other webdrivers returns the version from the webdriver EXE.
10
10
  # Unfortunately, MicrosoftWebDriver.exe does not have an option to get the version.
11
11
  # To work around it we query the currently installed version of Microsoft Edge instead
12
12
  # and compare it to the list of available downloads.
@@ -22,9 +22,7 @@ module Webdrivers
22
22
  # Webdriver binaries for Microsoft Edge are not backwards compatible.
23
23
  # For this reason, instead of downloading the latest binary we download the correct one for the
24
24
  # currently installed browser version.
25
- def download(version = current)
26
- super
27
- end
25
+ alias :version :windows_version
28
26
 
29
27
  private
30
28
 
@@ -4,6 +4,10 @@ describe Webdrivers::Chromedriver do
4
4
 
5
5
  let(:chromedriver) { Webdrivers::Chromedriver }
6
6
 
7
+ it 'updates' do
8
+ chromedriver.update
9
+ end
10
+
7
11
  it 'parses chromedriver versions before 2.10' do
8
12
  expect(chromedriver.send(:normalize, '2.9').version).to eq '2.9'
9
13
  end
@@ -11,7 +15,7 @@ describe Webdrivers::Chromedriver do
11
15
  it 'finds latest version' do
12
16
  old_version = Gem::Version.new("2.30")
13
17
  future_version = Gem::Version.new("2.90")
14
- latest_version = chromedriver.latest
18
+ latest_version = chromedriver.latest_version
15
19
 
16
20
  expect(latest_version).to be > old_version
17
21
  expect(latest_version).to be < future_version
@@ -20,31 +24,33 @@ describe Webdrivers::Chromedriver do
20
24
  it 'downloads latest version by default' do
21
25
  chromedriver.remove
22
26
  chromedriver.download
23
- expect(chromedriver.current).to eq chromedriver.latest
27
+ expect(chromedriver.current_version).to eq chromedriver.latest_version
24
28
  end
25
29
 
26
30
  it 'downloads specified version by Float' do
27
31
  chromedriver.remove
28
- chromedriver.download(2.29)
29
- expect(chromedriver.current.version).to eq '2.29'
32
+ chromedriver.version = 2.29
33
+ chromedriver.download
34
+ expect(chromedriver.current_version.version).to eq '2.29'
30
35
  end
31
36
 
32
37
  it 'downloads specified version by String' do
33
38
  chromedriver.remove
34
- chromedriver.download('2.29')
35
- expect(chromedriver.current.version).to eq '2.29'
39
+ chromedriver.version = '2.29'
40
+ chromedriver.download
41
+ expect(chromedriver.current_version.version).to eq '2.29'
36
42
  end
37
43
 
38
44
  it 'removes chromedriver' do
39
45
  chromedriver.remove
40
- expect(chromedriver.current).to be_nil
46
+ expect(chromedriver.current_version).to be_nil
41
47
  end
42
48
 
43
49
  context 'when offline' do
44
50
  before { allow(chromedriver).to receive(:site_available?).and_return(false) }
45
51
 
46
52
  xit 'raises exception finding latest version' do
47
- expect {chromedriver.latest}.to raise_error(StandardError, "Can not download from website")
53
+ expect {chromedriver.latest_version}.to raise_error(StandardError, "Can not download from website")
48
54
  end
49
55
 
50
56
  it 'raises exception downloading' do
@@ -6,51 +6,56 @@ describe Webdrivers::Geckodriver do
6
6
 
7
7
  it 'raises exception if unable to get latest geckodriver and no geckodriver present' do
8
8
  geckodriver.remove
9
- allow(geckodriver).to receive(:latest).and_return(nil)
9
+ allow(geckodriver).to receive(:desired_version).and_return(nil)
10
10
  msg = /^Unable to find the latest version of geckodriver(.exe)?; try downloading manually from (.*)?and place in (.*)?\.webdrivers$/
11
11
  expect { geckodriver.update }.to raise_exception StandardError, msg
12
12
  end
13
13
 
14
14
  it 'uses found version of geckodriver if latest release unable to be found' do
15
15
  geckodriver.download
16
- allow(geckodriver).to receive(:latest).and_return(nil)
16
+ allow(geckodriver).to receive(:desired_version).and_return(nil)
17
17
  expect(geckodriver.update).to match(/\.webdrivers\/geckodriver/)
18
18
  end
19
19
 
20
20
  it 'finds latest version' do
21
21
  old_version = Gem::Version.new('0.17')
22
22
  future_version = Gem::Version.new('0.30')
23
- latest_version = geckodriver.latest
23
+ desired_version = geckodriver.desired_version
24
24
 
25
- expect(latest_version).to be > old_version
26
- expect(latest_version).to be < future_version
25
+ expect(desired_version).to be > old_version
26
+ expect(desired_version).to be < future_version
27
27
  end
28
28
 
29
29
  it 'downloads latest version by default' do
30
30
  geckodriver.download
31
- expect(geckodriver.current).to eq geckodriver.latest
31
+ expect(geckodriver.current_version).to eq geckodriver.desired_version
32
32
  end
33
33
 
34
34
  it 'downloads specified version' do
35
- geckodriver.remove
36
- geckodriver.download('0.17.0')
37
- expect(geckodriver.current.version).to eq '0.17.0'
35
+ begin
36
+ geckodriver.remove
37
+ geckodriver.version = '0.17.0'
38
+ geckodriver.download
39
+ expect(geckodriver.current_version.version).to eq '0.17.0'
40
+ ensure
41
+ geckodriver.version = nil
42
+ end
38
43
  end
39
44
 
40
45
  it 'removes geckodriver' do
41
46
  geckodriver.remove
42
- expect(geckodriver.current).to be_nil
47
+ expect(geckodriver.current_version).to be_nil
43
48
  end
44
49
 
45
50
  context 'when offline' do
46
51
  before { allow(geckodriver).to receive(:site_available?).and_return(false) }
47
52
 
48
53
  it 'raises exception finding latest version' do
49
- expect {geckodriver.latest}.to raise_error(StandardError, "Can not reach site")
54
+ expect { geckodriver.desired_version }.to raise_error(StandardError, "Can not reach site")
50
55
  end
51
56
 
52
57
  it 'raises exception downloading' do
53
- expect {geckodriver.download}.to raise_error(StandardError, "Can not reach site")
58
+ expect { geckodriver.download }.to raise_error(StandardError, "Can not reach site")
54
59
  end
55
60
  end
56
61
 
@@ -6,11 +6,11 @@ describe Webdrivers::IEdriver do
6
6
 
7
7
  it 'finds latest version' do
8
8
  old_version = Gem::Version.new("3.12.0")
9
- future_version = Gem::Version.new("3.60.0")
10
- latest_version = iedriver.latest
9
+ future_version = Gem::Version.new("4.0")
10
+ desired_version = iedriver.desired_version
11
11
 
12
- expect(latest_version).to be > old_version
13
- expect(latest_version).to be < future_version
12
+ expect(desired_version).to be > old_version
13
+ expect(desired_version).to be < future_version
14
14
  end
15
15
 
16
16
  it 'downloads iedriver' do
@@ -20,14 +20,14 @@ describe Webdrivers::IEdriver do
20
20
 
21
21
  it 'removes iedriver' do
22
22
  iedriver.remove
23
- expect(iedriver.current).to be_nil
23
+ expect(iedriver.current_version).to be_nil
24
24
  end
25
25
 
26
26
  context 'when offline' do
27
27
  before { allow(iedriver).to receive(:site_available?).and_return(false) }
28
28
 
29
29
  it 'raises exception finding latest version' do
30
- expect {iedriver.latest}.to raise_error(StandardError, "Can not reach site")
30
+ expect {iedriver.latest_version}.to raise_error(StandardError, "Can not reach site")
31
31
  end
32
32
 
33
33
  it 'raises exception downloading' do
@@ -6,7 +6,7 @@ describe Webdrivers::MSWebdriver do
6
6
 
7
7
  it 'downloads mswebdriver' do
8
8
  mswebdriver.remove
9
- allow(mswebdriver).to receive(:current)
9
+ allow(mswebdriver).to receive(:desired_version).and_return(mswebdriver.latest_version)
10
10
  expect(File.exist?(mswebdriver.download)).to be true
11
11
  end
12
12
 
@@ -19,7 +19,7 @@ describe Webdrivers::MSWebdriver do
19
19
  before { allow(mswebdriver).to receive(:site_available?).and_return(false) }
20
20
 
21
21
  it 'raises exception downloading' do
22
- expect { mswebdriver.download }.to raise_error(RuntimeError, "Failed to check Microsoft Edge version.")
22
+ expect { mswebdriver.download }.to raise_error(StandardError, "Can not reach site")
23
23
  end
24
24
  end
25
25
 
data/webdrivers.gemspec CHANGED
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "webdrivers"
6
- s.version = "3.4.3"
6
+ s.version = "3.5.0.beta1"
7
7
  s.authors = ["Titus Fortner"]
8
8
  s.email = ["titusfortner@gmail.com"]
9
9
  s.homepage = "https://github.com/titusfortner/webdrivers"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webdrivers
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.3
4
+ version: 3.5.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Titus Fortner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-10-22 00:00:00.000000000 Z
11
+ date: 2018-12-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -125,12 +125,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
125
125
  version: '0'
126
126
  required_rubygems_version: !ruby/object:Gem::Requirement
127
127
  requirements:
128
- - - ">="
128
+ - - ">"
129
129
  - !ruby/object:Gem::Version
130
- version: '0'
130
+ version: 1.3.1
131
131
  requirements: []
132
132
  rubyforge_project:
133
- rubygems_version: 2.5.2.3
133
+ rubygems_version: 2.7.6
134
134
  signing_key:
135
135
  specification_version: 4
136
136
  summary: Easy download and use of browser drivers.