Skip to content

Commit

Permalink
Use nested parameterization in test_sdl_key. NFC (emscripten-core#20738)
Browse files Browse the repository at this point in the history
I'm tying this out as an experiment.  I think it improves things in
several ways:

- Increases precision of tests
- Aids in debugging (makes run just one code path much easier)
- Cleaner test output as tests no longer have to `print()` each time
  they go around the loop (which was a crutch to help identify which
  iteration failed).

Now this single test has 8 different configurations (the 9th test
here, test_sdl_key_proxy, is actually a different test):

```
$ ./test/runner browser.test_sdl_key*
Test suites:
['test_browser']
Running test_browser: (9 tests)
(checking sanity from test runner)
shared:INFO: (Emscripten: Running sanity checks)
[Browser harness server on process 858049]
common:INFO: Using default system browser

Running the browser tests. Make sure the browser allows popups from localhost.

test_sdl_key (test_browser.browser.test_sdl_key) ... ok
test_sdl_key_asyncify (test_browser.browser.test_sdl_key_asyncify) ... ok
test_sdl_key_asyncify_eventhandler (test_browser.browser.test_sdl_key_asyncify_eventhandler) ... ok
test_sdl_key_delay (test_browser.browser.test_sdl_key_delay) ... ok
test_sdl_key_delay_asyncify (test_browser.browser.test_sdl_key_delay_asyncify) ... ok
test_sdl_key_delay_asyncify_eventhandler (test_browser.browser.test_sdl_key_delay_asyncify_eventhandler) ... ok
test_sdl_key_delay_eventhandler (test_browser.browser.test_sdl_key_delay_eventhandler) ... ok
test_sdl_key_eventhandler (test_browser.browser.test_sdl_key_eventhandler) ... ok
test_sdl_key_proxy (test_browser.browser.test_sdl_key_proxy) ... ok
[Browser harness server terminated]
```
  • Loading branch information
sbc100 authored Nov 17, 2023
1 parent 97f37e1 commit da8fe5f
Showing 1 changed file with 32 additions and 30 deletions.
62 changes: 32 additions & 30 deletions test/test_browser.py
Original file line number Diff line number Diff line change
Expand Up @@ -903,44 +903,46 @@ def test_glgears_proxy_jstarget(self):
def test_sdl_canvas_alpha(self):
# N.B. On Linux with Intel integrated graphics cards, this test needs Firefox 49 or newer.
# See https://github.com/emscripten-core/emscripten/issues/4069.
create_file('flag_0.js', '''
Module['arguments'] = ['-0'];
''')
create_file('flag_0.js', "Module['arguments'] = ['-0'];")

self.btest('test_sdl_canvas_alpha.c', args=['-lSDL', '-lGL'], reference='browser/test_sdl_canvas_alpha.png', reference_slack=12)
self.btest('test_sdl_canvas_alpha.c', args=['--pre-js', 'flag_0.js', '-lSDL', '-lGL'], reference='browser/test_sdl_canvas_alpha_flag_0.png', reference_slack=12)

@parameterized({
'': ([False],),
'': ([],),
'eventhandler': (['-DTEST_EMSCRIPTEN_SDL_SETEVENTHANDLER'],),
})
@parameterized({
'': ([],),
'asyncify': (['-DTEST_SLEEP', '-sASSERTIONS', '-sSAFE_HEAP', '-sASYNCIFY'],),
})
@parameterized({
'': (False,),
'delay': (True,)
})
def test_sdl_key(self, delay):
for defines in [
[],
['-DTEST_EMSCRIPTEN_SDL_SETEVENTHANDLER']
]:
for async_ in [
[],
['-DTEST_SLEEP', '-sASSERTIONS', '-sSAFE_HEAP', '-sASYNCIFY']
]:
print(delay, defines, async_)

create_file('pre.js', '''
function keydown(c) {
%s
var event = new KeyboardEvent("keydown", { 'keyCode': c, 'charCode': c, 'view': window, 'bubbles': true, 'cancelable': true });
document.dispatchEvent(event);
%s
}
def test_sdl_key(self, delay, async_, defines):
if delay:
settimeout_start = 'setTimeout(function() {'
settimeout_end = '}, 1);'
else:
settimeout_start = ''
settimeout_end = ''
create_file('pre.js', '''
function keydown(c) {
%s
var event = new KeyboardEvent("keydown", { 'keyCode': c, 'charCode': c, 'view': window, 'bubbles': true, 'cancelable': true });
document.dispatchEvent(event);
%s
}
function keyup(c) {
%s
var event = new KeyboardEvent("keyup", { 'keyCode': c, 'charCode': c, 'view': window, 'bubbles': true, 'cancelable': true });
document.dispatchEvent(event);
%s
}
''' % ('setTimeout(function() {' if delay else '', '}, 1);' if delay else '', 'setTimeout(function() {' if delay else '', '}, 1);' if delay else ''))
self.btest_exit('test_sdl_key.c', 223092870, args=defines + async_ + ['--pre-js=pre.js', '-lSDL', '-lGL'])
function keyup(c) {
%s
var event = new KeyboardEvent("keyup", { 'keyCode': c, 'charCode': c, 'view': window, 'bubbles': true, 'cancelable': true });
document.dispatchEvent(event);
%s
}
''' % (settimeout_start, settimeout_end, settimeout_start, settimeout_end))
self.btest_exit('test_sdl_key.c', 223092870, args=defines + async_ + ['--pre-js=pre.js', '-lSDL', '-lGL'])

def test_sdl_key_proxy(self):
create_file('pre.js', '''
Expand Down

0 comments on commit da8fe5f

Please sign in to comment.