136 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			136 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Python
		
	
	
	
| import py
 | |
| 
 | |
| try:
 | |
|     import pypy
 | |
|     from pypy.translator.js.modules import dom
 | |
|     from pypy.translator.js.tester import schedule_callbacks
 | |
|     dom.Window # check whether dom was properly imported or is just a 
 | |
|                # leftover in sys.modules
 | |
| except (ImportError, AttributeError):
 | |
|     py.test.skip('PyPy not found')
 | |
| 
 | |
| from py.__.test.rsession import webjs
 | |
| from py.__.test.rsession.web import exported_methods
 | |
| here = py.magic.autopath().dirpath()
 | |
| 
 | |
| def setup_module(mod):
 | |
|     # load HTML into window object
 | |
|     html = here.join('../webdata/index.html').read()
 | |
|     mod.html = html
 | |
|     from pypy.translator.js.modules import dom
 | |
|     mod.dom = dom
 | |
|     dom.window = dom.Window(html)
 | |
|     dom.document = dom.window.document
 | |
|     from py.__.test.rsession import webjs
 | |
|     from py.__.test.rsession.web import exported_methods
 | |
|     mod.webjs = webjs
 | |
|     mod.exported_methods = exported_methods
 | |
| 
 | |
| def setup_function(f):
 | |
|     dom.window = dom.Window(html)
 | |
|     dom.document = dom.window.document
 | |
| 
 | |
| def test_html_loaded():
 | |
|     body = dom.window.document.getElementsByTagName('body')[0]
 | |
|     assert len(body.childNodes) > 0
 | |
|     assert str(body.childNodes[1].nodeName) == 'A'
 | |
| 
 | |
| def test_set_msgbox():
 | |
|     msgbox = dom.window.document.getElementById('messagebox')
 | |
|     assert len(msgbox.childNodes) == 0
 | |
|     webjs.set_msgbox('foo', 'bar')
 | |
|     assert len(msgbox.childNodes) == 1
 | |
|     assert msgbox.childNodes[0].nodeName == 'PRE'
 | |
|     assert msgbox.childNodes[0].childNodes[0].nodeValue == 'foo\nbar'
 | |
| 
 | |
| def test_show_info():
 | |
|     info = dom.window.document.getElementById('info')
 | |
|     info.style.visibility = 'hidden'
 | |
|     info.innerHTML = ''
 | |
|     webjs.show_info('foobar')
 | |
|     content = info.innerHTML
 | |
|     assert content == 'foobar'
 | |
|     bgcolor = info.style.backgroundColor
 | |
|     assert bgcolor == 'beige'
 | |
| 
 | |
| def test_hide_info():
 | |
|     info = dom.window.document.getElementById('info')
 | |
|     info.style.visibility = 'visible'
 | |
|     webjs.hide_info()
 | |
|     assert info.style.visibility == 'hidden'
 | |
| 
 | |
| def test_process():
 | |
|     main_t = dom.window.document.getElementById('main_table')
 | |
|     assert len(main_t.getElementsByTagName('tr')) == 0
 | |
|     assert not webjs.process({})
 | |
| 
 | |
|     msg = {'type': 'ItemStart',
 | |
|            'itemtype': 'Module',
 | |
|            'itemname': 'foo.py',
 | |
|            'fullitemname': 'modules/foo.py',
 | |
|            'length': 10,
 | |
|            }
 | |
|     assert webjs.process(msg)
 | |
|     trs = main_t.getElementsByTagName('tr')
 | |
|     assert len(trs) == 1
 | |
|     tr = trs[0]
 | |
|     assert len(tr.childNodes) == 2
 | |
|     assert tr.childNodes[0].nodeName == 'TD'
 | |
|     assert tr.childNodes[0].innerHTML == 'foo.py[0/10]'
 | |
|     assert tr.childNodes[1].nodeName == 'TD'
 | |
|     assert tr.childNodes[1].childNodes[0].nodeName == 'TABLE'
 | |
|     assert len(tr.childNodes[1].getElementsByTagName('tr')) == 0
 | |
| 
 | |
| def test_process_two():
 | |
|     main_t = dom.window.document.getElementById('main_table')
 | |
|     msg = {'type': 'ItemStart',
 | |
|            'itemtype': 'Module',
 | |
|            'itemname': 'foo.py',
 | |
|            'fullitemname': 'modules/foo.py',
 | |
|            'length': 10,
 | |
|            }
 | |
|     webjs.process(msg)
 | |
|     msg = {'type': 'ReceivedItemOutcome',
 | |
|            'fullmodulename': 'modules/foo.py',
 | |
|            'passed' : 'True',
 | |
|            'fullitemname' : 'modules/foo.py/test_item',
 | |
|            'hostkey': None,
 | |
|            }
 | |
|     webjs.process(msg)
 | |
|     trs = main_t.getElementsByTagName('tr')
 | |
|     tds = trs[0].getElementsByTagName('td')
 | |
|     # two cells in the row, one in the table inside one of the cells
 | |
|     assert len(tds) == 3
 | |
|     html = tds[0].innerHTML
 | |
|     assert html == 'foo.py[1/10]'
 | |
|     assert tds[2].innerHTML == '.'
 | |
| 
 | |
| def test_signal():
 | |
|     main_t = dom.window.document.getElementById('main_table')
 | |
|     msg = {'type': 'ItemStart',
 | |
|            'itemtype': 'Module',
 | |
|            'itemname': 'foo.py',
 | |
|            'fullitemname': 'modules/foo.py',
 | |
|            'length': 10,
 | |
|            }
 | |
|     webjs.process(msg)
 | |
|     msg = {'type': 'ReceivedItemOutcome',
 | |
|            'fullmodulename': 'modules/foo.py',
 | |
|            'passed' : 'False',
 | |
|            'fullitemname' : 'modules/foo.py/test_item',
 | |
|            'hostkey': None,
 | |
|            'signal': '10',
 | |
|            'skipped': 'False',
 | |
|            }
 | |
|     exported_methods.fail_reasons['modules/foo.py/test_item'] = 'Received signal 10'
 | |
|     exported_methods.stdout['modules/foo.py/test_item'] = ''
 | |
|     exported_methods.stderr['modules/foo.py/test_item'] = ''
 | |
|     webjs.process(msg)
 | |
|     schedule_callbacks(exported_methods)
 | |
|     # ouch
 | |
|     assert dom.document.getElementById('modules/foo.py').childNodes[0].\
 | |
|         childNodes[0].childNodes[0].childNodes[0].nodeValue == 'F'
 | |
| 
 | |
| # XXX: Write down test for full run
 | |
| 
 |