diff options
author | Alon Zakai <alonzakai@gmail.com> | 2014-03-03 14:41:24 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2014-03-03 15:38:42 -0800 |
commit | 7f45922c7ffa3c8591344b2851373c70a4bf05ae (patch) | |
tree | fefbc76acde8988acb71a9a3911da1532ab11bad /tests | |
parent | bc921f43a57650c50f609b14e19f54c3d2f32cc5 (diff) |
enable errors on implicit functions by default; fixes #2175
Diffstat (limited to 'tests')
-rw-r--r-- | tests/cubegeom_color.c | 4 | ||||
-rw-r--r-- | tests/full_es2_sdlproc.c | 2 | ||||
-rw-r--r-- | tests/sdl_headless.c | 3 | ||||
-rw-r--r-- | tests/test_other.py | 22 |
4 files changed, 17 insertions, 14 deletions
diff --git a/tests/cubegeom_color.c b/tests/cubegeom_color.c index 0d2b6ecb..7a41c64d 100644 --- a/tests/cubegeom_color.c +++ b/tests/cubegeom_color.c @@ -38,10 +38,6 @@ void verify() { for (int x = 0; x < width*height*4; x++) { if (x % 4 != 3) sum += x * data[x]; } -#ifdef __EMSCRIPTEN__ - int result = sum; - REPORT_RESULT(); -#endif } int main(int argc, char *argv[]) diff --git a/tests/full_es2_sdlproc.c b/tests/full_es2_sdlproc.c index d9ac072b..3f72f2bf 100644 --- a/tests/full_es2_sdlproc.c +++ b/tests/full_es2_sdlproc.c @@ -704,6 +704,8 @@ gears_init(void) gear3 = create_gear(1.3, 2.0, 0.5, 10, 0.7); } +#include "SDL/SDL.h" + int main(int argc, char *argv[]) { diff --git a/tests/sdl_headless.c b/tests/sdl_headless.c index 6157a46d..e1836777 100644 --- a/tests/sdl_headless.c +++ b/tests/sdl_headless.c @@ -57,9 +57,6 @@ int main(int argc, char **argv) { printf("done.\n"); - int result = sum > 3000 && sum < 5000; // varies a little on different browsers, font differences? - REPORT_RESULT(); - return 0; } diff --git a/tests/test_other.py b/tests/test_other.py index e381e1b3..2fecf09e 100644 --- a/tests/test_other.py +++ b/tests/test_other.py @@ -2521,16 +2521,24 @@ int main() } ''') + IMPLICIT_WARNING = '''warning: implicit declaration of function 'strnlen' is invalid in C99''' + IMPLICIT_ERROR = '''error: implicit declaration of function 'strnlen' is invalid in C99''' + for opts, expected, compile_expected in [ - ([], ['abort()', 'it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this'], []), - (['-s', 'ASSERTIONS=2'], ['abort()', 'This pointer might make sense in another type signature'], []), - (['-O1'], ['hello 2\nhello 5\n'], []), # invalid output - second arg is sent as varargs, but needs to be int. llvm optimizer avoided the crash silently, caused undefined behavior... at least people can debug this by running an -O0 build. + ([], None, [IMPLICIT_ERROR]), + (['-Wno-error=implicit-function-declaration'], ['abort()', 'it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this'], [IMPLICIT_WARNING]), # turn error into warning + (['-Wno-implicit-function-declaration'], ['abort()', 'it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this'], []), # turn error into nothing at all + (['-Wno-error=implicit-function-declaration', '-s', 'ASSERTIONS=2'], ['abort()', 'This pointer might make sense in another type signature'], []), + (['-Wno-error=implicit-function-declaration', '-O1'], ['hello 2\nhello 5\n'], []), # invalid output - second arg is sent as varargs, but needs to be int. llvm optimizer avoided the crash silently, caused undefined behavior... at least people can debug this by running an -O0 build. ]: print opts, expected stdout, stderr = Popen([PYTHON, EMCC, 'src.c'] + opts, stderr=PIPE).communicate() - output = run_js(os.path.join(self.get_dir(), 'a.out.js'), stderr=PIPE, full_output=True) - for e in expected: - self.assertContained(e, output) - for ce in compile_expected + ['''warning: implicit declaration of function 'strnlen' is invalid in C99''', '''warning: incompatible pointer types''']: + for ce in compile_expected + ['''warning: incompatible pointer types''']: self.assertContained(ce, stderr) + if expected is None: + assert not os.path.exists('a.out.js') + else: + output = run_js(os.path.join(self.get_dir(), 'a.out.js'), stderr=PIPE, full_output=True) + for e in expected: + self.assertContained(e, output) |