1424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)# Copyright 2013 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# found in the LICENSE file. 45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import re 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import StringIO 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)from telemetry.core import util 9868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)from telemetry.unittest import tab_test_case 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TabConsoleTest(tab_test_case.TabTestCase): 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) def testConsoleOutputStream(self): 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) stream = StringIO.StringIO() 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) self._tab.message_output_stream = stream 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) self.Navigate('page_that_logs_to_console.html') 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) initial = self._tab.EvaluateJavaScript('window.__logCount') 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) def GotLog(): 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) current = self._tab.EvaluateJavaScript('window.__logCount') 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return current > initial 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) util.WaitFor(GotLog, 5) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lines = [l for l in stream.getvalue().split('\n') if len(l)] 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) self.assertTrue(len(lines) >= 1) 28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) for line in lines: 29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) prefix = 'http://(.+)/page_that_logs_to_console.html:9' 30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) expected_line = 'At %s: Hello, world' % prefix 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) self.assertTrue(re.match(expected_line, line)) 32