Skip to content
This repository was archived by the owner on Apr 28, 2025. It is now read-only.

Commit 0fd8dd3

Browse files
committed
Merge pull request #17 from groupon/jk-safer-download
fix: More reliable (and correct) download
2 parents 9e7618d + 7599b95 commit 0fd8dd3

File tree

5 files changed

+29
-9
lines changed

5 files changed

+29
-9
lines changed

lib/chromedriver/version.js

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/selenium/download.js

Lines changed: 9 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/chromedriver/version.coffee

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ module.exports = (callback) ->
6363
version = FALLBACK_CHROMEDRIVER_VERSION
6464
console.log "[testium] Unable to determine latest version of selenium chromedriver; using #{version}"
6565
console.error (error.stack || error)
66+
else
67+
version = version.trim()
6668

6769
{platform, bitness} = getArchitecture()
6870
downloadUrl = "https://chromedriver.storage.googleapis.com/#{version}/chromedriver_#{platform}#{bitness}.zip"

src/selenium/download.coffee

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,17 @@ module.exports = (binPath, tempPath, url, version, callback) ->
4242

4343
tempFileName = "selenium_#{version}.jar"
4444
tempFilePath = "#{tempPath}/#{tempFileName}"
45-
if fs.existsSync tempFilePath
46-
copy tempFilePath, binFilePath, callback
45+
validTempFilePath = "#{tempPath}/#{tempFileName}.valid"
46+
47+
if fs.existsSync validTempFilePath
48+
copy validTempFilePath, binFilePath, callback
4749
else
4850
downloadFile url, tempPath, tempFileName, (error, hash) ->
4951
return callback error if error?
5052

5153
validate tempFilePath, hash, (error) ->
5254
return callback error if error?
5355

54-
copy tempFilePath, binFilePath, callback
55-
56+
copy tempFilePath, validTempFilePath, (error) ->
57+
return callback error if error?
58+
copy tempFilePath, binFilePath, callback

test/test.coffee

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
fs = require 'fs'
2+
{execFile} = require 'child_process'
3+
24
assert = require 'assert'
35
rmrf = require 'rimraf'
46

@@ -30,7 +32,13 @@ seleniumDownload.update BIN_PATH, (error) ->
3032
assert fs.existsSync(BIN_PATH + '/chromedriver')
3133
assert fs.existsSync(BIN_PATH + '/selenium.jar')
3234

33-
clearFileSystem()
35+
console.log 'make sure it did not download an invalid jar'
36+
execFile 'java', [
37+
# -h means "show usage/help". Selenium has no --version :(
38+
'-jar', BIN_PATH + '/selenium.jar', '-h'
39+
], (error, stdout) ->
40+
throw error if error?
41+
clearFileSystem()
3442

3543
process.on 'uncaughtException', (error) ->
3644
clearFileSystem()

0 commit comments

Comments
 (0)