hunk.code_window: import request from 'request';
   import cheerio from 'cheerio';
   import validator from 'validator';
   const TEMPLATE_APP_DIR = path.join(__dirname, '../', 'app');
   const ELECTRON_VERSION = '0.36.4';
   const DEFAULT_APP_NAME = 'My App';
  
hunk.labels: keep keep add keep keep keep keep keep
hunk.after_edit: import sanitize from 'sanitize-filename';
  
hunk.file_path: src/options.js
hunk.type: add
file: import tmp from 'tmp';
  import chai from 'chai';
  import fs from 'fs';
  import os from 'os';
  import path from 'path';
  import nativefier from './../../lib/index';
  import _ from 'lodash';
  import async from 'async';
  
  let assert = chai.assert;
  
  const PLATFORMS = ['darwin', 'linux', 'win32'];
  
  function checkApp(appPath, inputOptions, callback) {
      try {
          let relPathToConfig;
  
          switch (inputOptions.platform) {
              case 'darwin':
                  relPathToConfig = path.join('google-test-app.app', 'Contents/Resources/app');
                  break;
              case 'linux':
                  relPathToConfig = 'resources/app';
                  break;
              case 'win32':
                  relPathToConfig = 'resources/app';
                  break;
              default:
                  throw 'Unknown app platform';
          }
  
          const nativefierConfigPath = path.join(appPath, relPathToConfig, 'nativefier.json');
          const nativefierConfig = JSON.parse(fs.readFileSync(nativefierConfigPath));
  
          assert.strictEqual(inputOptions.targetUrl, nativefierConfig.targetUrl, 'Packaged app must have the same targetUrl as the input parameters');
          assert.strictEqual(inputOptions.appName, nativefierConfig.name, 'Packaged app must have the same name as the input parameters');
          callback();
      } catch (exception) {
          callback(exception);
      }
  }
  
  describe('Nativefier Module', function() {
      this.timeout(30000);
      it('Can build an app from a target url', function(done) {
  
          var tmpObj = tmp.dirSync({unsafeCleanup: true});
          after(function() {
              tmpObj.removeCallback();
          });
  
          const tmpPath = tmpObj.name;
          const options = {
              appName: 'google-test-app',
              targetUrl: 'http://google.com',
              outDir: tmpPath,
              overwrite: true,
              platform: null
          };
  
          async.each(PLATFORMS, (platform, callback) => {
              let platformOptions = _.clone(options);
              platformOptions.platform = platform;
              nativefier(platformOptions, (error, appPath) => {
                  if (error) {
                      callback(error);
                      return;
                  }
  
                  checkApp(appPath, platformOptions, error => {
                      callback(error);
                  });
              });
          }, error => {
              done(error);
          });
      });
  });
  