2013-12-06 22:23:02 +08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								assert     = require 'assert'
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								path       = require 'path'
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								http       = require 'http'
							 | 
						
					
						
							
								
									
										
										
										
											2014-04-24 15:42:37 +08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								url        = require 'url'
							 | 
						
					
						
							
								
									
										
										
										
											2013-12-06 22:23:02 +08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								remote     = require 'remote'
							 | 
						
					
						
							
								
									
										
										
										
											2013-11-15 10:37:22 +08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								formidable = require 'formidable'
							 | 
						
					
						
							
								
									
										
										
										
											2013-11-15 00:10:43 +08:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2015-05-30 07:34:56 +08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								crashReporter = remote.require 'crash-reporter'
							 | 
						
					
						
							
								
									
										
										
										
											2013-12-06 22:23:02 +08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								BrowserWindow = remote.require 'browser-window'
							 | 
						
					
						
							
								
									
										
										
										
											2013-11-15 00:10:43 +08:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								describe 'crash-reporter module', ->
							 | 
						
					
						
							
								
									
										
										
										
											2013-12-06 22:23:02 +08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								  fixtures = path.resolve __dirname, 'fixtures'
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2014-04-24 16:08:59 +08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								  w = null
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  beforeEach -> w = new BrowserWindow(show: false)
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  afterEach -> w.destroy()
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2015-09-28 15:08:27 +08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								  # It is not working for mas build.
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  return if process.mas
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2015-09-15 14:43:11 +08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								  # The crash-reporter test is not reliable on CI machine.
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  isCI = remote.process.argv[2] == '--ci'
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  return if isCI
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2013-11-15 00:10:43 +08:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  it 'should send minidump when renderer crashes', (done) ->
							 | 
						
					
						
							
								
									
										
										
										
											2015-09-15 13:18:01 +08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    @timeout 120000
							 | 
						
					
						
							
								
									
										
										
										
											2013-11-15 00:10:43 +08:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    server = http.createServer (req, res) ->
							 | 
						
					
						
							
								
									
										
										
										
											2015-09-15 13:18:01 +08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								      server.close()
							 | 
						
					
						
							
								
									
										
										
										
											2013-11-15 10:37:22 +08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								      form = new formidable.IncomingForm()
							 | 
						
					
						
							
								
									
										
										
										
											2013-12-15 17:02:43 +08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								      process.throwDeprecation = false
							 | 
						
					
						
							
								
									
										
										
										
											2013-11-15 10:37:22 +08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								      form.parse req, (error, fields, files) ->
							 | 
						
					
						
							
								
									
										
										
										
											2013-12-15 17:02:43 +08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        process.throwDeprecation = true
							 | 
						
					
						
							
								
									
										
										
										
											2015-04-14 15:59:45 +08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        assert.equal fields['prod'], 'Electron'
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        assert.equal fields['ver'], process.versions['electron']
							 | 
						
					
						
							
								
									
										
										
										
											2013-11-15 10:37:22 +08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        assert.equal fields['process_type'], 'renderer'
							 | 
						
					
						
							
								
									
										
										
										
											2013-11-18 18:37:32 +08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        assert.equal fields['platform'], process.platform
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        assert.equal fields['extra1'], 'extra1'
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        assert.equal fields['extra2'], 'extra2'
							 | 
						
					
						
							
								
									
										
										
										
											2013-11-26 10:19:50 +08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        assert.equal fields['_productName'], 'Zombies'
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        assert.equal fields['_companyName'], 'Umbrella Corporation'
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        assert.equal fields['_version'], require('remote').require('app').getVersion()
							 | 
						
					
						
							
								
									
										
										
										
											2013-11-24 22:57:47 +08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        assert files['upload_file_minidump']['name']?
							 | 
						
					
						
							
								
									
										
										
										
											2013-11-15 10:37:22 +08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2014-11-11 16:38:16 +08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        res.end('abc-123-def')
							 | 
						
					
						
							
								
									
										
										
										
											2013-11-15 10:37:22 +08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        done()
							 | 
						
					
						
							
								
									
										
										
										
											2015-06-05 19:48:58 +08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    # Server port is generated randomly for the first run, it will be reused
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    # when page is refreshed.
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    port = remote.process.port
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    server.listen port, '127.0.0.1', ->
							 | 
						
					
						
							
								
									
										
										
										
											2014-05-05 14:06:47 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								      {port} = server.address()
							 | 
						
					
						
							
								
									
										
										
										
											2015-06-05 19:48:58 +08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								      remote.process.port = port
							 | 
						
					
						
							
								
									
										
										
										
											2014-04-24 15:42:37 +08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								      url = url.format
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        protocol: 'file'
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        pathname: path.join fixtures, 'api', 'crash.html'
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        search: "?port=#{port}"
							 | 
						
					
						
							
								
									
										
										
										
											2015-06-04 15:52:16 +08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								      crashReporter.start {'submitUrl': 'http://127.0.0.1:' + port}
							 | 
						
					
						
							
								
									
										
										
										
											2014-04-24 15:42:37 +08:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								      w.loadUrl url
							 |