diff --git a/.npmignore b/.npmignore index b972e1e..6f0414e 100644 --- a/.npmignore +++ b/.npmignore @@ -5,3 +5,7 @@ npm-debug.log script/ spec/ src/ +test/ +script/ +.travis.yml +appveyor.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..15f11b6 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,33 @@ +sudo: required + +os: +- linux +- osx + +dist: trusty + +osx_image: xcode8 + +language: node_js + +node_js: +- '4' + +cache: +- apt: true + +before_install: script/ci-setup.sh + +env: + global: + # prevent wine popup dialogs about installing additional packages + - WINEDLLOVERRIDES="mscoree,mshtml=" + +branches: + only: + - master + +notifications: + email: + on_success: never + on_failure: change diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 0000000..0e64c7d --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,17 @@ +build: off + +branches: + only: + - master + +skip_tags: true + +install: + - ps: Install-Product node LTS + - npm install npm + - .\node_modules\.bin\npm install + +test_script: + - node --version + - .\node_modules\.bin\npm --version + - .\node_modules\.bin\npm test diff --git a/package.json b/package.json index a258438..7b29948 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,8 @@ "description": "Node module to edit resources of exe", "main": "lib/rcedit.js", "scripts": { - "prepublish": "grunt prepublish" + "prepublish": "grunt prepublish", + "test": "mocha test/*.js" }, "repository": { "type": "git", @@ -20,10 +21,13 @@ } ], "devDependencies": { - "grunt-contrib-coffee": "~0.7.0", - "grunt-cli": "~0.1.8", "grunt": "~0.4.1", + "grunt-cli": "~0.1.8", + "grunt-coffeelint": "0.0.6", + "grunt-contrib-coffee": "~0.7.0", "grunt-shell": "~0.2.2", - "grunt-coffeelint": "0.0.6" + "mocha": "^3.0.2", + "rcinfo": "^0.1.3", + "temp": "^0.8.3" } } diff --git a/script/ci-setup.sh b/script/ci-setup.sh new file mode 100755 index 0000000..b09030c --- /dev/null +++ b/script/ci-setup.sh @@ -0,0 +1,14 @@ +#!/bin/bash -xe + +case "$TRAVIS_OS_NAME" in + "linux") + sudo dpkg --add-architecture i386 + sudo apt-get update + sudo apt-get install -y wine1.6 + ;; + "osx") + npm install wine-darwin@1.9.17-1 + # Setup ~/.wine by running a command + ./node_modules/.bin/wine hostname + ;; +esac diff --git a/test/fixtures/electron.exe b/test/fixtures/electron.exe new file mode 100755 index 0000000..e62c716 Binary files /dev/null and b/test/fixtures/electron.exe differ diff --git a/test/rcedit-test.js b/test/rcedit-test.js new file mode 100644 index 0000000..47b3b04 --- /dev/null +++ b/test/rcedit-test.js @@ -0,0 +1,47 @@ +var assert = require('assert') +var fs = require('fs') +var path = require('path') +var rcedit = require('..') +var rcinfo = require('rcinfo') +var temp = require('temp').track() + +describe('rcedit(exePath, options, callback)', function () { + this.timeout(60000) + + var exePath = null + + beforeEach(function () { + exePath = path.join(temp.mkdirSync('node-rcedit-'), 'electron.exe') + var fixturesExePath = path.join(__dirname, 'fixtures', 'electron.exe') + fs.writeFileSync(exePath, fs.readFileSync(fixturesExePath)) + }) + + it('updates the information in the executable', function (done) { + var options = { + 'version-string': { + CompanyName: 'Umbrella', + FileDescription: 'Vanhouten', + LegalCopyright: 'Maritime', + ProductName: 'Millhouse' + }, + 'file-version': '3.4.5.6', + 'product-version': '4.5.6.7' + } + rcedit(exePath, options, function (error) { + if (error != null) return done(error) + + rcinfo(exePath, function (error, info) { + if (error != null) return done(error) + + assert.equal(info.CompanyName, 'Umbrella') + assert.equal(info.FileDescription, 'Vanhouten') + assert.equal(info.LegalCopyright, 'Maritime') + assert.equal(info.ProductName, 'Millhouse') + assert.equal(info.FileVersion, '3.4.5.6') + assert.equal(info.ProductVersion, '4.5.6.7') + + done() + }) + }) + }) +})