123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- // Licensed to the Software Freedom Conservancy (SFC) under one
- // or more contributor license agreements. See the NOTICE file
- // distributed with this work for additional information
- // regarding copyright ownership. The SFC licenses this file
- // to you under the Apache License, Version 2.0 (the
- // "License"); you may not use this file except in compliance
- // with the License. You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing,
- // software distributed under the License is distributed on an
- // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- // KIND, either express or implied. See the License for the
- // specific language governing permissions and limitations
- // under the License.
- 'use strict';
- var assert = require('assert'),
- fs = require('fs'),
- path = require('path');
- var promise = require('../').promise,
- io = require('../io'),
- cmd = require('../lib/command'),
- remote = require('../remote');
- const {enablePromiseManager} = require('../lib/test/promise');
- describe('DriverService', function() {
- describe('start()', function() {
- var service;
- beforeEach(function() {
- service = new remote.DriverService(process.execPath, {
- port: 1234,
- args: ['-e', 'process.exit(1)']
- });
- });
- afterEach(function() {
- return service.kill();
- });
- it('fails if child-process dies', function() {
- this.timeout(1000);
- return service.start(500).then(expectFailure, verifyFailure);
- });
- enablePromiseManager(function() {
- describe(
- 'failures propagate through control flow if child-process dies',
- function() {
- it('', function() {
- this.timeout(1000);
- return promise.controlFlow().execute(function() {
- promise.controlFlow().execute(function() {
- return service.start(500);
- });
- }).then(expectFailure, verifyFailure);
- });
- });
- });
- function verifyFailure(e) {
- assert.ok(!(e instanceof promise.CancellationError));
- assert.equal('Server terminated early with status 1', e.message);
- }
- function expectFailure() {
- throw Error('expected to fail');
- }
- });
- });
- describe('FileDetector', function() {
- class ExplodingDriver {
- schedule() {
- throw Error('unexpected call');
- }
- }
- it('returns the original path if the file does not exist', function() {
- return io.tmpDir().then(dir => {
- let theFile = path.join(dir, 'not-there');
- return (new remote.FileDetector)
- .handleFile(new ExplodingDriver, theFile)
- .then(f => assert.equal(f, theFile));
- });
- });
- it('returns the original path if it is a directory', function() {
- return io.tmpDir().then(dir => {
- return (new remote.FileDetector)
- .handleFile(new ExplodingDriver, dir)
- .then(f => assert.equal(f, dir));
- });
- });
- it('attempts to upload valid files', function() {
- return io.tmpFile().then(theFile => {
- return (new remote.FileDetector)
- .handleFile(
- new (class FakeDriver {
- schedule(command) {
- assert.equal(command.getName(), cmd.Name.UPLOAD_FILE);
- assert.equal(typeof command.getParameters()['file'], 'string');
- return Promise.resolve('success!');
- }
- }),
- theFile)
- .then(f => assert.equal(f, 'success!'));
- });
- });
- });
|