it('should detect other errors during lstat', () => {
   var addonLinter = new Linter({_: ['foo']});
   addonLinter.handleError = sinon.stub();
   var fakeError = new TypeError('soz');
   var fakeLstat = () => {
     return Promise.reject(fakeError);
   };
   return addonLinter.checkFileExists(addonLinter.packagePath, fakeLstat)
     .then(unexpectedSuccess)
     .catch((err) => {
       assert.instanceOf(err, TypeError);
       assert.include(err.message, 'soz');
     });
 });
 it('should detect an invalid file with ENOENT', () => {
   var addonLinter = new Linter({_: ['foo']});
   addonLinter.handleError = sinon.stub();
   var fakeError = new Error('soz');
   fakeError.code = 'ENOENT';
   var fakeLstat = () => {
     return Promise.reject(fakeError);
   };
   return addonLinter.checkFileExists(addonLinter.packagePath, fakeLstat)
     .then(unexpectedSuccess)
     .catch((err) => {
       assert.instanceOf(err, Error);
       assert.include(err.message, 'Path "foo" is not a file');
     });
 });
  it('should reject if not a file', () => {
    var addonLinter = new Linter({_: ['bar']});
    addonLinter.handleError = sinon.stub();
    var isFileSpy = sinon.spy(() => {
      return false;
    });
    var isDirSpy = sinon.spy(() => {
      return false;
    });

    var fakeLstat = () => {
      return Promise.resolve({
        isFile: isFileSpy,
        isDirectory: isDirSpy,
      });
    };
    return addonLinter.checkFileExists(addonLinter.packagePath, fakeLstat)
      .then(unexpectedSuccess)
      .catch((err) => {
        assert.instanceOf(err, Error);
        assert.include(err.message, 'Path "bar" is not a file or directory');
        assert.equal(isFileSpy.callCount, 1);
      });
  });