Skip to content

[test] Re-instate ability to delay reference image collection. NFC #22672

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Oct 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions test/browser/test_sdl2_image_prepare.c
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ void ready(const char *f) {
testImage("screenshot.jpg"); // relative path

SDL_RenderPresent(renderer);

EM_ASM(reftestUnblock());
}

int main() {
Expand All @@ -56,6 +58,7 @@ int main() {

assert(emscripten_run_preload_plugins("screenshot.jpg", ready, NULL) == 0);

EM_ASM(reftestBlock());
return 0;
}

3 changes: 3 additions & 0 deletions test/browser/test_sdl2_image_prepare_data.c
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@ void ready(void *arg, const char *fileName) {
free((void*)seenName); // As the API docs say, we are responsible for freeing the 'fake' names we are given

SDL_RenderPresent(renderer);

EM_ASM(reftestUnblock());
}
}

Expand All @@ -75,6 +77,7 @@ int main() {
emscripten_run_preload_plugins_data(buffer, SIZE, "jpg", (void*)25, ready, NULL);
emscripten_run_preload_plugins_data(buffer, SIZE, "jpg", (void*)33, ready, NULL); // twice to see different filenames

EM_ASM(reftestBlock());
return 0;
}

3 changes: 3 additions & 0 deletions test/browser/test_sdl_image_must_prepare.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ void ready(const char *f) {
testImage("screenshot.jpg", 1);

SDL_Flip(screen);

EM_ASM(reftestUnblock());
}

int main() {
Expand All @@ -48,6 +50,7 @@ int main() {

assert(emscripten_run_preload_plugins("screenshot.jpg", ready, NULL) == 0);

EM_ASM(reftestBlock());
return 0;
}

3 changes: 3 additions & 0 deletions test/browser/test_sdl_image_prepare.c
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ void ready(const char *f) {
testImage("screenshot.jpg"); // relative path

SDL_Flip(screen);

EM_ASM(reftestUnblock());
}

int main() {
Expand All @@ -51,6 +53,7 @@ int main() {

assert(emscripten_run_preload_plugins("screenshot.jpg", ready, NULL) == 0);

EM_ASM(reftestBlock());
return 0;
}

2 changes: 2 additions & 0 deletions test/browser/test_sdl_image_prepare_data.c
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ void ready(void *arg, const char *fileName) {
free((void*)seenName); // As the API docs say, we are responsible for freeing the 'fake' names we are given

SDL_Flip(screen);
EM_ASM(reftestUnblock());
}
}

Expand All @@ -73,6 +74,7 @@ int main() {
emscripten_run_preload_plugins_data(buffer, SIZE, "jpg", (void*)25, ready, NULL);
emscripten_run_preload_plugins_data(buffer, SIZE, "jpg", (void*)33, ready, NULL); // twice to see different filenames

EM_ASM(reftestBlock());
return 0;
}

17 changes: 16 additions & 1 deletion test/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -2209,7 +2209,21 @@ def make_reftest(self, expected):
# pngcrush -rem gAMA -rem cHRM -rem iCCP -rem sRGB infile outfile
shutil.copy(expected, 'expected.png')
create_file('reftest.js', '''
// We have some tests that don't perform rendering during `main` so
// the normal process of performing `doReftest` in `postRun` doesn't
// work. These tests can delay the call to `doReftest` by calling
// `reftestBlock` and then calling `reftestUnblock` once they have
// done their rendering.
var reftestBlocked = false;
function reftestBlock() {
reftestBlocked = true;
}
function reftestUnblock() {
reftestBlocked = false;
doReftest();
}
function doReftest() {
if (reftestBlocked) return;
if (doReftest.done) return;
doReftest.done = true;
console.log('doReftest');
Expand Down Expand Up @@ -2330,9 +2344,10 @@ def reftest(self, filename, reference, reference_slack=0, *args, **kwargs):
expected = [str(i) for i in range(0, reference_slack + 1)]
self.make_reftest(reference)
if self.proxied:
print("XXXX")
assert 'post_build' not in kwargs
kwargs['post_build'] = self.post_manual_reftest
create_file('fakereftest.js', 'var reftestUnblock = () => {}; var reftestBlock = () => {};')
kwargs['args'] += ['--pre-js', 'fakereftest.js']
else:
kwargs.setdefault('args', [])
kwargs['args'] += ['--pre-js', 'reftest.js', '-sGL_TESTING']
Expand Down
Loading