| Index: src/trusted/validator_x86/testscripts/run_old_validator_tests.py
 | 
| diff --git a/src/trusted/validator_x86/testscripts/run_old_validator_tests.py b/src/trusted/validator_x86/testscripts/run_old_validator_tests.py
 | 
| deleted file mode 100755
 | 
| index 2884ed0bbd2b6b90ec6508389ccc2d89959e6928..0000000000000000000000000000000000000000
 | 
| --- a/src/trusted/validator_x86/testscripts/run_old_validator_tests.py
 | 
| +++ /dev/null
 | 
| @@ -1,167 +0,0 @@
 | 
| -#!/usr/bin/python
 | 
| -# Copyright (c) 2012 The Native Client Authors. All rights reserved.
 | 
| -# Use of this source code is governed by a BSD-style license that can be
 | 
| -# found in the LICENSE file.
 | 
| -
 | 
| -import glob
 | 
| -import optparse
 | 
| -import subprocess
 | 
| -import sys
 | 
| -
 | 
| -import test_format
 | 
| -
 | 
| -
 | 
| -FIELDS_TO_IGNORE = set(['rdfa_output', 'validators_disagree'])
 | 
| -
 | 
| -
 | 
| -def AssertEquals(actual, expected):
 | 
| -  if actual != expected:
 | 
| -    raise AssertionError('\nEXPECTED:\n"""\n%s"""\n\nACTUAL:\n"""\n%s"""'
 | 
| -                         % (expected, actual))
 | 
| -
 | 
| -
 | 
| -def GetX8632Combinations():
 | 
| -  for detailed in (True, False):
 | 
| -    for test_stats in (True, False):
 | 
| -      for test_cpuid_all in (True, False):
 | 
| -        ext = 'nval'
 | 
| -        options = []
 | 
| -        if detailed:
 | 
| -          ext += 'd'
 | 
| -          options.append('--detailed')
 | 
| -        else:
 | 
| -          options.append('--detailed=false')
 | 
| -        if test_stats:
 | 
| -          ext += 's'
 | 
| -          options.append('--stats')
 | 
| -        if test_cpuid_all:
 | 
| -          options.append('--cpuid-all')
 | 
| -        else:
 | 
| -          ext += '0'
 | 
| -          options.append('--cpuid-none')
 | 
| -        yield ext, options
 | 
| -
 | 
| -
 | 
| -def GetX8664Combinations():
 | 
| -  for test_readwrite in (True, False):
 | 
| -    for detailed in (True, False):
 | 
| -      for test_cpuid_all in (True, False):
 | 
| -        for test_annotate in (True, False):
 | 
| -          for validator_decoder in (True, False):
 | 
| -            options = []
 | 
| -            # TODO(shcherbina): Remove support for testing validation
 | 
| -            # without sandboxing memory reads.
 | 
| -            if test_readwrite:
 | 
| -              ext = 'rval'
 | 
| -              options.append('--readwrite_sfi')
 | 
| -            else:
 | 
| -              ext = 'val'
 | 
| -              options.append('--write_sfi')
 | 
| -            if detailed:
 | 
| -              ext += 'd'
 | 
| -              options.append('--detailed')
 | 
| -            else:
 | 
| -              options.append('--detailed=false')
 | 
| -            if test_cpuid_all:
 | 
| -              options.append('--cpuid-all')
 | 
| -            else:
 | 
| -              ext += '0'
 | 
| -              options.append('--cpuid-none')
 | 
| -            if test_annotate:
 | 
| -              ext += 'a'
 | 
| -              options.append('--annotate')
 | 
| -            else:
 | 
| -              options.append('--annotate=false')
 | 
| -            if validator_decoder:
 | 
| -              ext = "vd-" + ext
 | 
| -              options.append('--validator_decoder')
 | 
| -            yield ext, options
 | 
| -
 | 
| -
 | 
| -def Test(options, items_list):
 | 
| -  info = dict(items_list)
 | 
| -  handled_fields = set(['hex'])
 | 
| -
 | 
| -  def RunCommandOnHex(field, command):
 | 
| -    handled_fields.add(field)
 | 
| -    if field in info:
 | 
| -      proc = subprocess.Popen(command,
 | 
| -                              stdin=subprocess.PIPE,
 | 
| -                              stdout=subprocess.PIPE)
 | 
| -      # r'\\' is used as line continuation marker by
 | 
| -      # run_rdfa_validator_tests.py. Old validator does not care about line
 | 
| -      # partitioning, so we just remove the marker.
 | 
| -      stdout, stderr = proc.communicate(info['hex'].replace(r'\\', ''))
 | 
| -      assert proc.wait() == 0, (command, stdout, stderr)
 | 
| -      # Remove the carriage return characters that we get on Windows.
 | 
| -      stdout = stdout.replace('\r', '')
 | 
| -      print '  Checking %r field...' % field
 | 
| -      if options.update:
 | 
| -        if stdout != info[field]:
 | 
| -          print '  Updating %r field...' % field
 | 
| -          info[field] = stdout
 | 
| -      else:
 | 
| -        AssertEquals(stdout, info[field])
 | 
| -
 | 
| -  ncdis = [options.ncdis, '--hex_text=-']
 | 
| -  RunCommandOnHex('dis', ncdis + ['--full_decoder'])
 | 
| -  RunCommandOnHex('vdis', ncdis + ['--validator_decoder'])
 | 
| -
 | 
| -  ncval = [options.ncval, '--hex_text=-', '--max_errors=-1']
 | 
| -  if options.bits == 32:
 | 
| -    for ext, ncval_options in GetX8632Combinations():
 | 
| -      RunCommandOnHex(ext, ncval + ncval_options)
 | 
| -  elif options.bits == 64:
 | 
| -    for ext, ncval_options in GetX8664Combinations():
 | 
| -      RunCommandOnHex(ext, ncval + ncval_options)
 | 
| -
 | 
| -    RunCommandOnHex('sval', ncval + ['--stubout'])
 | 
| -  else:
 | 
| -    raise AssertionError('Unknown architecture: %r' % options.bits)
 | 
| -
 | 
| -  unhandled = set(info.keys()) - set(handled_fields) - FIELDS_TO_IGNORE
 | 
| -  if unhandled:
 | 
| -    raise AssertionError('Unhandled fields: %r' % sorted(unhandled))
 | 
| -
 | 
| -  # Update field values, but preserve their order.
 | 
| -  items_list = [(field, info[field]) for field, _ in items_list]
 | 
| -
 | 
| -  return items_list
 | 
| -
 | 
| -
 | 
| -def main(args):
 | 
| -  parser = optparse.OptionParser()
 | 
| -  parser.add_option('--ncval', default='ncval',
 | 
| -                    help='Path to the ncval validator executable')
 | 
| -  parser.add_option('--ncdis', default='ncdis',
 | 
| -                    help='Path to the ncdis disassembler executable')
 | 
| -  parser.add_option('--bits',
 | 
| -                    type=int,
 | 
| -                    help='The subarchitecture to run tests against: 32 or 64')
 | 
| -  parser.add_option('--update',
 | 
| -                    default=False,
 | 
| -                    action='store_true',
 | 
| -                    help='Regenerate golden fields instead of testing')
 | 
| -  options, args = parser.parse_args(args)
 | 
| -  if options.bits not in [32, 64]:
 | 
| -    parser.error('specify --bits 32 or --bits 64')
 | 
| -  if len(args) == 0:
 | 
| -    parser.error('No test files specified')
 | 
| -  processed = 0
 | 
| -  for glob_expr in args:
 | 
| -    test_files = sorted(glob.glob(glob_expr))
 | 
| -    if len(test_files) == 0:
 | 
| -      raise AssertionError(
 | 
| -          '%r matched no files, which was probably not intended' % glob_expr)
 | 
| -    for test_file in test_files:
 | 
| -      print 'Testing %s...' % test_file
 | 
| -      tests = test_format.LoadTestFile(test_file)
 | 
| -      tests = [Test(options, test) for test in tests]
 | 
| -      if options.update:
 | 
| -        test_format.SaveTestFile(tests, test_file)
 | 
| -      processed += 1
 | 
| -  print '%s test files were processed.' % processed
 | 
| -
 | 
| -
 | 
| -if __name__ == '__main__':
 | 
| -  main(sys.argv[1:])
 | 
| 
 |