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

Commit b720fad

Browse files
author
Jan Krems
committed
fix: Only delete files we created
Fixes #22
1 parent b67524c commit b720fad

File tree

3 files changed

+39
-20
lines changed

3 files changed

+39
-20
lines changed

lib/index.js

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@
3030
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3131
*/
3232
'use strict';
33-
var existsSync = require('fs').existsSync;
33+
var fs = require('fs');
34+
var path = require('path');
3435

35-
var rmrfSync = require('fs.extra').rmrfSync;
3636
var mkdirp = require('mkdirp');
3737
var async = require('async');
3838

@@ -41,19 +41,31 @@ var ensureSelenium = require('./selenium');
4141
var ensureChromedriver = require('./chromedriver');
4242

4343
var TEMP_PATH = tempdir + 'testium';
44+
var CHROMEDRIVER = 'chromedriver';
45+
var SELENIUM_JAR = 'selenium.jar';
46+
47+
var BINARIES = [CHROMEDRIVER, SELENIUM_JAR];
4448

4549
function makePaths(binPath, tempPath) {
4650
mkdirp.sync(binPath);
4751
return mkdirp.sync(tempPath);
4852
}
4953

50-
function removeDir(dir) {
51-
return rmrfSync(dir);
54+
function cleanupDir(dir) {
55+
function deleteIfExists(filename) {
56+
try {
57+
fs.unlinkSync(path.join(dir, filename));
58+
} catch (err) {
59+
if (err.code !== 'ENOENT') throw err;
60+
}
61+
}
62+
63+
BINARIES.forEach(deleteIfExists);
5264
}
5365

5466
function binariesExist(binPath) {
55-
return ['selenium.jar', 'chromedriver'].every(function binaryExists(binary) {
56-
return existsSync(binPath + '/' + binary);
67+
return BINARIES.every(function binaryExists(binary) {
68+
return fs.existsSync(binPath + '/' + binary);
5769
});
5870
}
5971

@@ -69,13 +81,13 @@ function ensure(binPath, callback) {
6981
}
7082

7183
function update(binPath, callback) {
72-
removeDir(binPath);
84+
cleanupDir(binPath);
7385
return ensure(binPath, callback);
7486
}
7587

7688
function forceUpdate(binPath, callback) {
77-
removeDir(binPath);
78-
removeDir(TEMP_PATH);
89+
cleanupDir(binPath);
90+
cleanupDir(TEMP_PATH);
7991
return ensure(binPath, callback);
8092
}
8193

package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,7 @@
4040
"eslint-config-groupon-es5": "^3.0.0",
4141
"eslint-plugin-import": "^1.6.1",
4242
"mocha": "^3.0.0",
43-
"nlm": "^2.0.0",
44-
"rimraf": "^2.2.8"
43+
"nlm": "^2.0.0"
4544
},
4645
"author": {
4746
"name": "Groupon",

test/download.test.js

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,24 @@
11
'use strict';
22
var fs = require('fs');
33
var execFile = require('child_process').execFile;
4+
var path = require('path');
45

56
var assert = require('assertive');
6-
var rmrf = require('rimraf');
7+
var rmrfSync = require('fs.extra').rmrfSync;
78

89
var tempdir = require('../lib/tempdir');
910
var seleniumDownload = require('..');
1011

11-
var BIN_PATH = __dirname + '/bin';
12+
var BIN_PATH = path.join(__dirname, 'bin');
1213
var TMP_PATH = tempdir + 'testium';
1314

15+
var CHROMEDRIVER = path.join(BIN_PATH, 'chromedriver');
16+
var SELENIUM_JAR = path.join(BIN_PATH, 'selenium.jar');
17+
var CUSTOM_SCRIPT = path.join(BIN_PATH, 'innocent-bystander');
18+
1419
function clearFileSystem() {
15-
rmrf.sync(TMP_PATH);
16-
rmrf.sync(BIN_PATH);
20+
rmrfSync(TMP_PATH);
21+
rmrfSync(BIN_PATH);
1722
}
1823

1924
clearFileSystem();
@@ -28,24 +33,27 @@ describe('seleniumDownload', function () {
2833
});
2934

3035
it('downloads the proper files', function () {
31-
assert.expect(fs.existsSync(BIN_PATH + '/chromedriver'));
32-
assert.expect(fs.existsSync(BIN_PATH + '/selenium.jar'));
36+
assert.expect(fs.existsSync(CHROMEDRIVER));
37+
assert.expect(fs.existsSync(SELENIUM_JAR));
3338
});
3439

3540
describe('from local tmp', function () {
3641
before(function (done) {
42+
fs.writeFileSync(CUSTOM_SCRIPT,
43+
'Hours of important work that I did not commit yet');
3744
seleniumDownload.update(BIN_PATH, done);
3845
});
3946

4047
it('downloads the files again', function () {
41-
assert.expect(fs.existsSync(BIN_PATH + '/chromedriver'));
42-
assert.expect(fs.existsSync(BIN_PATH + '/selenium.jar'));
48+
assert.expect(fs.existsSync(CHROMEDRIVER));
49+
assert.expect(fs.existsSync(SELENIUM_JAR));
50+
assert.expect(fs.existsSync(CUSTOM_SCRIPT));
4351
});
4452

4553
it('did not download an invalid jar', function (done) {
4654
execFile('java', [
4755
// -h means "show usage/help". Selenium has no --version :(
48-
'-jar', BIN_PATH + '/selenium.jar', '-h'
56+
'-jar', SELENIUM_JAR, '-h'
4957
], function (error) {
5058
clearFileSystem();
5159
done(error);

0 commit comments

Comments
 (0)