Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(tests): add AppVeyor support #15

Merged
merged 10 commits into from
Dec 11, 2016
27 changes: 27 additions & 0 deletions .appveyor.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
platform:
- x64
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Couldn't we save build time / resources by simply adding a --arch=all test and only testing on x64 machines?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yep, we can do that.

environment:
nodejs_version: "6"
matrix:
- node_installer: yarn
cache:
- '%APPDATA%\npm-cache'
- '%USERPROFILE%\.electron'
branches:
only:
- master

install:
- ps: Install-Product node $env:nodejs_version $env:platform
- npm install -g npm@4
- appveyor DownloadFile https://nightly.yarnpkg.com/yarn-0.19.0-20161210.1823-unsigned.msi
- msiexec /i yarn-0.19.0-20161210.1823-unsigned.msi /qn
- set PATH=%APPDATA%\npm;%PATH%
- npm install

test_script:
- node --version
- npm --version
- npm test -- --installer=%node_installer%

build: off
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
Electron Forge
--------------
[![Build Status](https://travis-ci.org/electron-userland/electron-forge.svg?branch=master)](https://travis-ci.org/electron-userland/electron-forge)
[![Linux/macOS Build Status](https://travis-ci.org/electron-userland/electron-forge.svg?branch=master)](https://travis-ci.org/electron-userland/electron-forge)
[![Windows Build status](https://ci.appveyor.com/api/projects/status/79ae80nek1eucyy3?svg=true)](https://ci.appveyor.com/project/electron-userland/electron-forge)
[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/)
[![npm version](https://badge.fury.io/js/electron-forge.svg)](https://www.npmjs.com/package/electron-forge)
[![npm](https://img.shields.io/npm/dt/electron-forge.svg?maxAge=2592000)](https://www.npmjs.com/package/electron-forge)
Expand Down
7 changes: 5 additions & 2 deletions src/electron-forge-lint.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,14 @@ const main = async () => {

d('executing "run lint -- --color" in dir:', dir);
const child = yarnOrNPMSpawn(['run', 'lint', '--', '--color'], {
stdio: process.platform === 'win32' ? 'inherit' : 'pipe',
cwd: dir,
});
const output = [];
child.stdout.on('data', data => output.push(data.toString()));
child.stderr.on('data', data => output.push(data.toString().red));
if (process.platform !== 'win32') {
child.stdout.on('data', data => output.push(data.toString()));
child.stderr.on('data', data => output.push(data.toString().red));
}
child.on('exit', (code) => {
if (code === 0) lintSpinner.succeed();
if (code !== 0) {
Expand Down
1 change: 1 addition & 0 deletions src/init/init-standard-fix.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ const d = debug('electron-forge:init:standard-fix');
const run = dir =>
new Promise((resolve, reject) => {
const child = yarnOrNPMSpawn(['run', 'lint', '--', '--fix'], {
stdio: 'inherit',
cwd: dir,
});

Expand Down
2 changes: 1 addition & 1 deletion src/util/rebuild.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ export default async (buildPath, electronVersion, pPlatform, pArch) => {
});

await new Promise((resolve, reject) => {
const child = spawn(process.execPath, [path.resolve(__dirname, '../../node_modules/.bin/node-gyp')].concat(rebuildArgs), {
const child = spawn(path.resolve(__dirname, `../../node_modules/.bin/node-gyp${process.platform === 'win32' ? '.cmd' : ''}`), rebuildArgs, {
cwd: modulePath,
env: Object.assign({}, process.env, {
HOME: path.resolve(os.homedir(), '.electron-gyp'),
Expand Down
26 changes: 15 additions & 11 deletions test/cli_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,23 @@ import { spawn } from 'child_process';
import fs from 'fs-promise';
import os from 'os';
import path from 'path';
import pify from 'pify';
import rimraf from 'rimraf';

import { expect } from 'chai';

import installDeps from '../src/util/install-dependencies';

const pSpawn = async (args = [], opts = {}) => {
const pSpawn = async (args = [], opts = {
stdio: process.platform === 'win32' ? 'inherit' : 'pipe',
}) => {
const child = spawn(process.execPath, [path.resolve(__dirname, '../dist/electron-forge.js')].concat(args), opts);
let stdout = '';
let stderr = '';
child.stdout.on('data', (data) => { stdout += data; });
child.stderr.on('data', (data) => { stderr += data; });
if (process.platform !== 'win32') {
child.stdout.on('data', (data) => { stdout += data; });
child.stderr.on('data', (data) => { stderr += data; });
}
return new Promise((resolve, reject) => {
child.on('exit', (code) => {
if (code === 0) {
Expand All @@ -27,16 +32,19 @@ const pSpawn = async (args = [], opts = {}) => {
const installer = process.argv.find(arg => arg.startsWith('--installer=')) || '--installer=system default';

describe(`electron-forge CLI (with installer=${installer.substr(12)})`, () => {
it('should output help', async () => {
it.skip('should output help', async () => {
expect(await pSpawn(['--help'])).to.contain('Usage: electron-forge [options] [command]');
});

let dirID = Date.now();
const forLintingMethod = (lintStyle) => {
describe(`init (with lintStyle=${lintStyle})`, () => {
let dir;

before(async () => {
dir = path.resolve(os.tmpdir(), `electron-forge-test-${Date.now()}`);
dir = path.resolve(os.tmpdir(), `electron-forge-test-${dirID}`);
dirID += 1;
await pify(rimraf)(dir);
await pSpawn(['init', dir, `--lintstyle=${lintStyle}`]);
});

Expand Down Expand Up @@ -69,9 +77,9 @@ describe(`electron-forge CLI (with installer=${installer.substr(12)})`, () => {
let dir;

before(async () => {
dir = path.resolve(os.tmpdir(), `electron-forge-test-${Date.now()}/electron-forge-test`);
dir = path.resolve(os.tmpdir(), `electron-forge-test-${dirID}/electron-forge-test`);
dirID += 1;
await pSpawn(['init', dir]);
await pSpawn(['package', dir]);
});

it('can package without errors', async () => {
Expand All @@ -84,10 +92,6 @@ describe(`electron-forge CLI (with installer=${installer.substr(12)})`, () => {
});

describe('after package', () => {
before(async () => {
await pSpawn(['package', dir]);
});

let targets = [];
if (fs.existsSync(path.resolve(__dirname, `../src/makers/${process.platform}`))) {
targets = fs.readdirSync(path.resolve(__dirname, `../src/makers/${process.platform}`)).map(file => path.parse(file).name);
Expand Down