diff options
author | Jez Ng <me@jezng.com> | 2013-06-21 17:39:37 -0700 |
---|---|---|
committer | Jez Ng <me@jezng.com> | 2013-06-22 01:23:22 -0700 |
commit | 9382556ed563b1e4c36b90b1cbe4acafffef930d (patch) | |
tree | 5162181d60eb6546962106e777e9179adac09dc9 | |
parent | 88feddf045882bbddd29d9286eae4e6a9086e286 (diff) |
Test that source mapping works with EMCC_DEBUG=2.
-rwxr-xr-x | emcc | 4 | ||||
-rwxr-xr-x | tests/runner.py | 23 |
2 files changed, 22 insertions, 5 deletions
@@ -1483,9 +1483,11 @@ try: open(final, 'w').write(src) if DEBUG: save_intermediate('bind') - # TODO: support source maps with js_transform # Apply a source code transformation, if requested if js_transform: + # TODO: support source maps with js_transform + logging.warning('disabling source maps because a js transform is being done') + make_source_map = False shutil.copyfile(final, final + '.tr.js') final += '.tr.js' posix = True if not shared.WINDOWS else False diff --git a/tests/runner.py b/tests/runner.py index f13db825..be6ba6e0 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -9605,12 +9605,16 @@ def process(filename): dirname = self.get_dir() src_filename = os.path.join(dirname, 'src.cpp') + with open(src_filename, 'w') as f: f.write(src) + out_filename = os.path.join(dirname, 'a.out.js') - def post(filename): + def build_and_check(): import json - map_filename = filename + '.map' + Building.emcc(src_filename, Settings.serialize() + self.emcc_args + + Building.COMPILER_TEST_OPTS, out_filename, stderr=PIPE) + map_filename = out_filename + '.map' data = json.load(open(map_filename, 'r')) - self.assertIdentical(filename, data['file']) + self.assertIdentical(out_filename, data['file']) self.assertIdentical(src_filename, data['sources'][0]) self.assertIdentical(src, data['sourcesContent'][0]) mappings = json.loads(jsrun.run_js( @@ -9623,7 +9627,18 @@ def process(filename): # ensure that all the 'meaningful' lines in the original code get mapped assert seen_lines.issuperset([6, 7, 11, 12]) - self.build(src, dirname, src_filename, post_build=(None,post)) + # EMCC_DEBUG=2 causes lots of intermediate files to be written, and so + # serves as a stress test for source maps because it needs to correlate + # line numbers across all those files. + old_emcc_debug = os.environ.get('EMCC_DEBUG', None) + os.environ.pop('EMCC_DEBUG', None) + build_and_check() + os.environ['EMCC_DEBUG'] = '2' + build_and_check() + if old_emcc_debug is not None: + os.environ['EMCC_DEBUG'] = old_emcc_debug + else: + del os.environ['EMCC_DEBUG'] def test_exception_source_map(self): if Settings.USE_TYPED_ARRAYS != 2: return self.skip("doesn't pass without typed arrays") |