errors.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. var fs = require('fs')
  2. var tape = require('tape')
  3. var path = require('path')
  4. var childProcess = require('child_process')
  5. tape('install fails for unsupported platforms', function (t) {
  6. install({npm_config_platform: 'android'}, function (code, stderr) {
  7. t.notEqual(stderr.indexOf('Electron builds are not available on platform: android'), -1, 'has error message')
  8. t.notEqual(code, 0, 'exited with error')
  9. t.end()
  10. })
  11. })
  12. tape('install fails for unsupported architectures', function (t) {
  13. install({
  14. npm_config_arch: 'midcentury',
  15. npm_config_platform: 'win32',
  16. HOME: process.env.HOME,
  17. USERPROFILE: process.env.USERPROFILE
  18. }, function (code, stderr) {
  19. t.notEqual(stderr.indexOf('Failed to find Electron'), -1, 'has error message')
  20. t.notEqual(stderr.indexOf('win32-midcentury'), -1, 'has error message')
  21. t.notEqual(code, 0, 'exited with error')
  22. t.end()
  23. })
  24. })
  25. tape('require fails for corrupted installs', function (t) {
  26. cli(function (code, stderr) {
  27. t.notEqual(stderr.indexOf('Electron failed to install correctly'), -1, 'has error message')
  28. t.notEqual(code, 0, 'exited with error')
  29. t.end()
  30. })
  31. })
  32. function install (env, callback) {
  33. var restoreFile = removeFile(path.join(__dirname, '..', 'dist', 'version'))
  34. var installPath = path.join(__dirname, '..', 'install.js')
  35. var installProcess = childProcess.fork(installPath, {
  36. silent: true,
  37. env: env
  38. })
  39. var stderr = ''
  40. installProcess.stderr.on('data', function (data) {
  41. stderr += data
  42. })
  43. installProcess.on('close', function (code) {
  44. restoreFile()
  45. callback(code, stderr)
  46. })
  47. }
  48. function cli (callback) {
  49. var restoreFile = removeFile(path.join(__dirname, '..', 'path.txt'))
  50. var cliPath = path.join(__dirname, '..', 'cli.js')
  51. var cliProcess = childProcess.fork(cliPath, {
  52. silent: true
  53. })
  54. var stderr = ''
  55. cliProcess.stderr.on('data', function (data) {
  56. stderr += data
  57. })
  58. cliProcess.on('close', function (code) {
  59. restoreFile()
  60. callback(code, stderr)
  61. })
  62. }
  63. function removeFile (filePath) {
  64. var contents = null
  65. if (fs.existsSync(filePath)) {
  66. contents = fs.readFileSync(filePath)
  67. fs.unlinkSync(filePath)
  68. }
  69. return function restoreFile () {
  70. if (contents != null) {
  71. fs.writeFileSync(filePath, contents)
  72. }
  73. }
  74. }