Chromium Code Reviews| Index: SConstruct |
| diff --git a/SConstruct b/SConstruct |
| index a4865f9948b8b0bd84311d5e75b0ff07733ede72..af36778e704f9f38e120730b6cc9dda3e4082532 100755 |
| --- a/SConstruct |
| +++ b/SConstruct |
| @@ -1136,7 +1136,7 @@ def SConstructAbsPath(env, path): |
| pre_base_env.AddMethod(SConstructAbsPath) |
| -def GetSelLdr(env): |
| +def GetSelLdr(env, with_exceptions=False): |
| sel_ldr = ARGUMENTS.get('force_sel_ldr') |
| if sel_ldr: |
| return env.File(env.SConstructAbsPath(sel_ldr)) |
| @@ -1146,7 +1146,12 @@ def GetSelLdr(env): |
| return None |
| trusted_env = env['TRUSTED_ENV'] |
| - return trusted_env.File('${STAGING_DIR}/${PROGPREFIX}sel_ldr${PROGSUFFIX}') |
| + # TODO(bradnelson): drop once exceptions are available by default. |
| + if with_exceptions: |
| + return trusted_env.File( |
| + '${STAGING_DIR}/${PROGPREFIX}sel_ldr_exc${PROGSUFFIX}') |
| + else: |
| + return trusted_env.File('${STAGING_DIR}/${PROGPREFIX}sel_ldr${PROGSUFFIX}') |
| def GetBootstrap(env): |
| if 'TRUSTED_ENV' in env: |
| @@ -1450,7 +1455,8 @@ pre_base_env.AddMethod(GetPnaclExtensionNode) |
| # If they are different, prints the difference and returns 1. |
| # Otherwise, returns 0. |
| def CheckGoldenFile(golden_file, output_file, |
| - filter_regex, filter_inverse, filter_group_only): |
| + filter_regex=None, |
| + filter_inverse=None, filter_group_only=None): |
| golden = open(golden_file).read() |
| actual = open(output_file).read() |
| if filter_regex is not None: |
| @@ -1476,6 +1482,25 @@ def GoldenFileCheckAction(env, output_file, golden_file, |
| return env.Action(ActionFunc) |
| +pre_base_env.AddMethod(GoldenFileCheckAction) |
| + |
| + |
| +def UntrustedCrashDumpFilter(env, target, source, nexe=None, nmf=None): |
| + cmd = ('${PYTHON} ' + |
|
Mark Seaborn
2012/02/06 19:44:06
Use AutoDepsCommand() instead of concatenating the
bradn
2012/02/06 22:27:48
This is an action not a command, so reusing AutoDe
|
| + env.File( |
| + '$MAIN_DIR/tests/untrusted_crash_dump/decode_dump.py').abspath + |
| + ' ' + env.subst(source) + |
| + ' ' + env.subst(target) + |
| + ' --addr2line ${ADDR2LINE}' |
| + ' --toolchain-libs ${NACL_SDK_LIB}') |
| + if nexe: |
| + cmd += ' --main-nexe ' + env.subst(nexe) |
| + if nmf: |
| + cmd += ' --nmf ' + env.subst(nmf) |
| + return env.Action(cmd) |
| + |
| +pre_base_env.AddMethod(UntrustedCrashDumpFilter) |
| + |
| def PPAPIBrowserTester(env, |
| target, |
| @@ -1497,6 +1522,7 @@ def PPAPIBrowserTester(env, |
| nacl_exe_stdout=None, |
| nacl_exe_stderr=None, |
| python_tester_script=None, |
| + with_exceptions=False, |
| **extra): |
| if 'TRUSTED_ENV' not in env: |
| return [] |
| @@ -1533,7 +1559,7 @@ def PPAPIBrowserTester(env, |
| '--timeout', str(timeout)] |
| if not env.Bit('disable_dynamic_plugin_loading'): |
| command.extend(['--ppapi_plugin', GetPPAPIPluginPath(env['TRUSTED_ENV'])]) |
| - command.extend(['--sel_ldr', GetSelLdr(env)]) |
| + command.extend(['--sel_ldr', GetSelLdr(env, with_exceptions)]) |
| bootstrap, _ = GetBootstrap(env) |
| if bootstrap is not None: |
| command.extend(['--sel_ldr_bootstrap', bootstrap]) |
| @@ -1553,9 +1579,11 @@ def PPAPIBrowserTester(env, |
| command.extend(['--mime_type', file_ext, mime_type]) |
| command.extend(['--serving_dir', '${NACL_SDK_LIB}']) |
| command.extend(['--serving_dir', '${LIB_DIR}']) |
| + generated_manifests = [] |
| if not nmfs is None: |
| for nmf_file in nmfs: |
| generated_manifest = GeneratedManifestNode(env, nmf_file) |
| + generated_manifests.append(generated_manifest) |
| # We need to add generated manifests to the list of default targets. |
| # The manifests should be generated even if the tests are not run - |
| # the manifests may be needed for manual testing. |
| @@ -1598,9 +1626,20 @@ def PPAPIBrowserTester(env, |
| filter_regex = params.get('filter_regex', None) |
| filter_inverse = params.get('filter_inverse', False) |
| filter_group_only = params.get('filter_group_only', False) |
| + decode_crash_dump = params.get('decode_crash_dump', False) |
| + if decode_crash_dump: |
| + if generated_manifests: |
| + nmf_path = generated_manifests[0].abspath |
| + else: |
| + nmf_path = None |
| + decoded = stream_file + '.decoded' |
| + post_actions.append( |
| + env.UntrustedCrashDumpFilter( |
| + decoded, stream_file, nexe=files[0].abspath, nmf=nmf_path)) |
| + stream_file = decoded |
| post_actions.append( |
| - GoldenFileCheckAction( |
| - env, stream_file, golden_file, |
| + env.GoldenFileCheckAction( |
| + stream_file, golden_file, |
| filter_regex, filter_inverse, filter_group_only)) |
| if ShouldUseVerboseOptions(extra): |
| @@ -3206,6 +3245,7 @@ irt_variant_tests = [ |
| 'tests/toolchain/nacl.scons', |
| 'tests/unittests/shared/platform/nacl.scons', |
| 'tests/untrusted_check/nacl.scons', |
| + 'tests/untrusted_crash_dump/nacl.scons', |
| #### ALPHABETICALLY SORTED #### |
| ] |
| @@ -3221,6 +3261,7 @@ nonvariant_tests = [ |
| 'tests/imc_shm_mmap/nacl.scons', |
| 'tests/imc_sockets/nacl.scons', |
| 'tests/inbrowser_crash_test/nacl.scons', |
| + 'tests/inbrowser_untrusted_crash_dump_test/nacl.scons', |
| 'tests/inbrowser_test_runner/nacl.scons', |
| 'tests/mach_crash_filter/nacl.scons', |
| 'tests/minnacl/nacl.scons', |