diff options
Diffstat (limited to 'tests/test_other.py')
-rw-r--r-- | tests/test_other.py | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/test_other.py b/tests/test_other.py index 8895a911..bc05826e 100644 --- a/tests/test_other.py +++ b/tests/test_other.py @@ -2324,3 +2324,30 @@ var Module = { print: function(x) { throw '<{(' + x + ')}>' } }; output = run_js(os.path.join(self.get_dir(), 'a.out.js'), stderr=PIPE, full_output=True, engine=NODE_JS) assert r'<{(123456789)}>' in output, output + def test_precompiled_headers(self): + self.clear() + + open('header.h', 'w').write('#define X 5\n') + Popen([PYTHON, EMCC, '-xc++-header', 'header.h', '-c']).communicate() + assert os.path.exists('header.h.gch') + + open('src.cpp', 'w').write(r''' +#include <stdio.h> +int main() { + printf("|%d|\n", X); + return 0; +} +''') + Popen([PYTHON, EMCC, 'src.cpp', '-include', 'header.h']).communicate() + + output = run_js(self.in_dir('a.out.js'), stderr=PIPE, full_output=True, engine=NODE_JS) + assert '|5|' in output, output + + # also verify that the gch is actually used + err = Popen([PYTHON, EMCC, 'src.cpp', '-include', 'header.h', '-Xclang', '-print-stats'], stderr=PIPE).communicate() + assert '*** PCH/Modules Loaded:\nModule: header.h.gch' in err[1], err[1] + # and sanity check it is not mentioned when not + try_delete('header.h.gch') + err = Popen([PYTHON, EMCC, 'src.cpp', '-include', 'header.h', '-Xclang', '-print-stats'], stderr=PIPE).communicate() + assert '*** PCH/Modules Loaded:\nModule: header.h.gch' not in err[1], err[1] + |