sources for test_webjs.py [rev. unknown]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
import py
def check(mod):
    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')
    mod.dom = dom
    mod.schedule_callbacks = schedule_callbacks
    from py.__.test.rsession import webjs
    from py.__.test.rsession.web import exported_methods
    mod.webjs = webjs
    mod.exported_methods = exported_methods
    mod.here = py.magic.autopath().dirpath()
def setup_module(mod):
    check(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():
    py.test.skip("not implemented in genjs")
    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