Improve PPAPI scripts' Python 3 support
This mostly includes low-hanging fruit. The scripts still work with Python 2. There are no intended behaviour changes. Bug: 941669 Change-Id: Ie950398b967b749f8136b4aea19592b6b50083ed Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1556774 Reviewed-by: Bill Budge <bbudge@chromium.org> Commit-Queue: Bill Budge <bbudge@chromium.org> Auto-Submit: Raul Tambre <raul@tambre.ee> Cr-Commit-Position: refs/heads/master@{#648792}
This commit is contained in:
ppapi
c
documentation
cpp
documentation
generators
generator.pyidl_ast.pyidl_c_header.pyidl_c_proto.pyidl_diff.pyidl_generator.pyidl_lexer.pyidl_namespace.pyidl_option.pyidl_outfile.pyidl_release.pyidl_tests.pyidl_thunk.py
native_client
tools
browser_tester
@ -8,6 +8,8 @@
|
||||
that they are suitable for publication on a Google documentation site.
|
||||
'''
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import optparse
|
||||
import os
|
||||
import re
|
||||
@ -17,10 +19,10 @@ import sys
|
||||
try:
|
||||
from BeautifulSoup import BeautifulSoup, Tag
|
||||
except (ImportError, NotImplementedError):
|
||||
print ("This tool requires the BeautifulSoup package "
|
||||
"(see http://www.crummy.com/software/BeautifulSoup/).\n"
|
||||
"Make sure that the file BeautifulSoup.py is either in this directory "
|
||||
"or is available in your PYTHON_PATH")
|
||||
print("This tool requires the BeautifulSoup package "
|
||||
"(see http://www.crummy.com/software/BeautifulSoup/).\n"
|
||||
"Make sure that the file BeautifulSoup.py is either in this directory "
|
||||
"or is available in your PYTHON_PATH")
|
||||
raise
|
||||
|
||||
|
||||
@ -66,10 +68,10 @@ class HTMLFixer(object):
|
||||
table_headers.reverse()
|
||||
# Split up tables that have multiple table header (th) rows
|
||||
for tag in table_headers:
|
||||
print "Header tag: %s is %s" % (tag.name, tag.string.strip())
|
||||
print("Header tag: %s is %s" % (tag.name, tag.string.strip()))
|
||||
# Is this a heading in the middle of a table?
|
||||
if tag.findPreviousSibling('tr') and tag.parent.name == 'table':
|
||||
print "Splitting Table named %s" % tag.string.strip()
|
||||
print("Splitting Table named %s" % tag.string.strip())
|
||||
table = tag.parent
|
||||
table_parent = table.parent
|
||||
table_index = table_parent.contents.index(table)
|
||||
@ -121,7 +123,7 @@ def main():
|
||||
with open(filename, 'r') as file:
|
||||
html = file.read()
|
||||
|
||||
print "Processing %s" % filename
|
||||
print("Processing %s" % filename)
|
||||
fixer = HTMLFixer(html)
|
||||
fixer.FixAll()
|
||||
with open(filename, 'w') as file:
|
||||
@ -133,7 +135,7 @@ def main():
|
||||
os.mkdir(new_directory)
|
||||
shutil.move(filename, new_directory)
|
||||
except:
|
||||
print "Error while processing %s" % filename
|
||||
print("Error while processing %s" % filename)
|
||||
raise
|
||||
|
||||
return 0
|
||||
|
@ -7,6 +7,8 @@
|
||||
that they are suitable for publication on a Google documentation site.
|
||||
'''
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import optparse
|
||||
import os
|
||||
import re
|
||||
@ -16,10 +18,10 @@ import sys
|
||||
try:
|
||||
from BeautifulSoup import BeautifulSoup, Tag
|
||||
except (ImportError, NotImplementedError):
|
||||
print ("This tool requires the BeautifulSoup package "
|
||||
"(see http://www.crummy.com/software/BeautifulSoup/).\n"
|
||||
"Make sure that the file BeautifulSoup.py is either in this directory "
|
||||
"or is available in your PYTHON_PATH")
|
||||
print("This tool requires the BeautifulSoup package "
|
||||
"(see http://www.crummy.com/software/BeautifulSoup/).\n"
|
||||
"Make sure that the file BeautifulSoup.py is either in this directory "
|
||||
"or is available in your PYTHON_PATH")
|
||||
raise
|
||||
|
||||
|
||||
@ -65,10 +67,10 @@ class HTMLFixer(object):
|
||||
table_headers.reverse()
|
||||
# Split up tables that have multiple table header (th) rows
|
||||
for tag in table_headers:
|
||||
print "Header tag: %s is %s" % (tag.name, tag.string.strip())
|
||||
print("Header tag: %s is %s" % (tag.name, tag.string.strip()))
|
||||
# Is this a heading in the middle of a table?
|
||||
if tag.findPreviousSibling('tr') and tag.parent.name == 'table':
|
||||
print "Splitting Table named %s" % tag.string.strip()
|
||||
print("Splitting Table named %s" % tag.string.strip())
|
||||
table = tag.parent
|
||||
table_parent = table.parent
|
||||
table_index = table_parent.contents.index(table)
|
||||
@ -120,7 +122,7 @@ def main():
|
||||
with open(filename, 'r') as file:
|
||||
html = file.read()
|
||||
|
||||
print "Processing %s" % filename
|
||||
print("Processing %s" % filename)
|
||||
fixer = HTMLFixer(html)
|
||||
fixer.FixAll()
|
||||
with open(filename, 'w') as file:
|
||||
@ -132,7 +134,7 @@ def main():
|
||||
os.mkdir(new_directory)
|
||||
shutil.move(filename, new_directory)
|
||||
except:
|
||||
print "Error while processing %s" % filename
|
||||
print("Error while processing %s" % filename)
|
||||
raise
|
||||
|
||||
return 0
|
||||
|
@ -17,6 +17,8 @@ These tests are checked in to SVN.
|
||||
# tests to some 'generated' area, and remove them from version
|
||||
# control.
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import re
|
||||
import os
|
||||
import sys
|
||||
@ -75,11 +77,11 @@ def VerifyGypFile(gyp_file_data):
|
||||
in_gyp_not_file = gyp_sources - file_sources
|
||||
in_file_not_gyp = file_sources - gyp_sources
|
||||
if len(in_gyp_not_file):
|
||||
print 'Found source file(s) in ppapi.gyp but not in the directory:', \
|
||||
in_gyp_not_file
|
||||
print('Found source file(s) in ppapi.gyp but not in the directory:', \
|
||||
in_gyp_not_file)
|
||||
if len(in_file_not_gyp):
|
||||
print 'Found source file(s) in the directory but not in ppapi.gyp:', \
|
||||
in_file_not_gyp
|
||||
print('Found source file(s) in the directory but not in ppapi.gyp:', \
|
||||
in_file_not_gyp)
|
||||
error_count = len(in_gyp_not_file) + len(in_file_not_gyp)
|
||||
if error_count:
|
||||
sys.exit(error_count)
|
||||
@ -122,7 +124,7 @@ def GetSourcesForTarget(target_name, gyp_file_data):
|
||||
sources = target[GYP_SOURCES_KEY]
|
||||
sources.sort()
|
||||
return sources
|
||||
print 'Warning: no target named ', target, ' found.'
|
||||
print('Warning: no target named ', target, ' found.')
|
||||
return []
|
||||
|
||||
|
||||
@ -168,4 +170,4 @@ def main():
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main())
|
||||
sys.exit(main())
|
||||
|
@ -7,6 +7,8 @@
|
||||
have appropriate size checking.
|
||||
"""
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import optparse
|
||||
import os
|
||||
import subprocess
|
||||
@ -166,12 +168,12 @@ def CheckAndInsert(typeinfo, typeinfo_map):
|
||||
return
|
||||
elif typeinfo.name in typeinfo_map:
|
||||
if typeinfo.size != typeinfo_map[typeinfo.name].size:
|
||||
print "Error: '" + typeinfo.name + "' is", \
|
||||
print("Error: '" + typeinfo.name + "' is", \
|
||||
typeinfo_map[typeinfo.name].size, \
|
||||
"bytes on target '" + typeinfo_map[typeinfo.name].target + \
|
||||
"', but", typeinfo.size, "on target '" + typeinfo.target + "'"
|
||||
print typeinfo_map[typeinfo.name].parsed_line
|
||||
print typeinfo.parsed_line
|
||||
"', but", typeinfo.size, "on target '" + typeinfo.target + "'")
|
||||
print(typeinfo_map[typeinfo.name].parsed_line)
|
||||
print(typeinfo.parsed_line)
|
||||
sys.exit(1)
|
||||
else:
|
||||
# It's already in the map and the sizes match.
|
||||
@ -286,7 +288,7 @@ def main(argv):
|
||||
options, args = parser.parse_args(argv)
|
||||
if args:
|
||||
parser.print_help()
|
||||
print 'ERROR: invalid argument'
|
||||
print('ERROR: invalid argument')
|
||||
sys.exit(1)
|
||||
|
||||
clang_executable = os.path.join(options.clang_path, 'clang')
|
||||
@ -347,15 +349,15 @@ def main(argv):
|
||||
# The sizes don't match, but there's no reason they couldn't. It's
|
||||
# probably due to an alignment mismatch between Win32/NaCl vs Linux32/
|
||||
# Mac32.
|
||||
print "Error: '" + typename + "' is", typeinfo32.size, \
|
||||
print("Error: '" + typename + "' is", typeinfo32.size, \
|
||||
"bytes on target '" + typeinfo32.target + \
|
||||
"', but", typeinfo64.size, "on target '" + typeinfo64.target + "'"
|
||||
print typeinfo32.parsed_line
|
||||
print typeinfo64.parsed_line
|
||||
"', but", typeinfo64.size, "on target '" + typeinfo64.target + "'")
|
||||
print(typeinfo32.parsed_line)
|
||||
print(typeinfo64.parsed_line)
|
||||
sys.exit(1)
|
||||
else:
|
||||
print "WARNING: Type '", typename, "' was defined for target '",
|
||||
print typeinfo32.target, ", but not for any 64-bit targets."
|
||||
print("WARNING: Type '", typename, "' was defined for target '")
|
||||
print(typeinfo32.target, ", but not for any 64-bit targets.")
|
||||
|
||||
# Now we have all the information we need to generate our static assertions.
|
||||
# Types that have consistent size across architectures will have the static
|
||||
@ -421,4 +423,4 @@ def main(argv):
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main(sys.argv[1:]))
|
||||
sys.exit(main(sys.argv[1:]))
|
||||
|
@ -3,6 +3,8 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import os
|
||||
import sys
|
||||
import traceback
|
||||
@ -31,27 +33,28 @@ def Main(args):
|
||||
current_dir = os.path.abspath(os.getcwd())
|
||||
script_dir = os.path.abspath(os.path.dirname(__file__))
|
||||
if current_dir != script_dir:
|
||||
print '\nIncorrect CWD, default run skipped.'
|
||||
print 'When running with no arguments set CWD to the scripts directory:'
|
||||
print '\t' + script_dir + '\n'
|
||||
print 'This ensures correct default paths and behavior.\n'
|
||||
print('\nIncorrect CWD, default run skipped.')
|
||||
print(
|
||||
'When running with no arguments set CWD to the scripts directory:')
|
||||
print('\t' + script_dir + '\n')
|
||||
print('This ensures correct default paths and behavior.\n')
|
||||
return 1
|
||||
|
||||
filenames = ParseOptions(args)
|
||||
ast = ParseFiles(filenames)
|
||||
if ast.errors:
|
||||
print 'Found %d errors. Aborting build.\n' % ast.errors
|
||||
print('Found %d errors. Aborting build.\n' % ast.errors)
|
||||
return 1
|
||||
return Generator.Run(ast)
|
||||
except SystemExit, ec:
|
||||
print 'Exiting with %d' % ec.code
|
||||
except SystemExit as ec:
|
||||
print('Exiting with %d' % ec.code)
|
||||
sys.exit(ec.code)
|
||||
|
||||
except:
|
||||
typeinfo, value, tb = sys.exc_info()
|
||||
traceback.print_exception(typeinfo, value, tb)
|
||||
print 'Called with: ' + ' '.join(sys.argv)
|
||||
print('Called with: ' + ' '.join(sys.argv))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(Main(sys.argv[1:]))
|
||||
sys.exit(Main(sys.argv[1:]))
|
||||
|
@ -4,6 +4,8 @@
|
||||
|
||||
"""Nodes for PPAPI IDL AST."""
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
from idl_namespace import IDLNamespace
|
||||
from idl_node import IDLNode
|
||||
from idl_option import GetOption
|
||||
@ -71,7 +73,7 @@ class IDLNamespaceVersionResolver(IDLVisitor):
|
||||
if node.cls not in self.NamespaceSet:
|
||||
node.namespace = parent_namespace
|
||||
else:
|
||||
# otherwise create one.
|
||||
# otherwise create one.
|
||||
node.namespace = IDLNamespace(parent_namespace)
|
||||
|
||||
# If this node is named, place it in its parent's namespace
|
||||
@ -116,7 +118,7 @@ class IDLFileTypeResolver(IDLVisitor):
|
||||
if not node.IsA('AST'):
|
||||
file_min, _ = filenode.release_map.GetReleaseRange()
|
||||
if not file_min:
|
||||
print 'Resetting min on %s to %s' % (node, file_min)
|
||||
print('Resetting min on %s to %s' % (node, file_min))
|
||||
node.SetMinRange(file_min)
|
||||
|
||||
# If this node has a TYPEREF, resolve it to a version list
|
||||
|
@ -5,6 +5,8 @@
|
||||
|
||||
""" Generator for C style prototypes and definitions """
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import glob
|
||||
import os
|
||||
import re
|
||||
@ -96,7 +98,7 @@ def GenerateHeader(out, filenode, releases):
|
||||
for node in filenode.GetListOf(*top_types):
|
||||
# Skip if this node is not in this release
|
||||
if not node.InReleases(releases):
|
||||
print "Skiping %s" % node
|
||||
print("Skiping %s" % node)
|
||||
continue
|
||||
|
||||
# End/Start group marker
|
||||
@ -199,7 +201,7 @@ class HGen(GeneratorByFile):
|
||||
my_min, my_max = filenode.GetMinMax(releases)
|
||||
if my_min > releases[-1] or my_max < releases[0]:
|
||||
if os.path.isfile(savename):
|
||||
print "Removing stale %s for this range." % filenode.GetName()
|
||||
print("Removing stale %s for this range." % filenode.GetName())
|
||||
os.remove(os.path.realpath(savename))
|
||||
return False
|
||||
|
||||
@ -350,10 +352,10 @@ def main(args):
|
||||
filenames = glob.glob(idldir)
|
||||
ast = ParseFiles(filenames)
|
||||
if hgen.GenerateRelease(ast, 'M14', {}):
|
||||
print "Golden file for M14 failed."
|
||||
print("Golden file for M14 failed.")
|
||||
failed = 1
|
||||
else:
|
||||
print "Golden file for M14 passed."
|
||||
print("Golden file for M14 passed.")
|
||||
|
||||
|
||||
idldir = os.path.split(sys.argv[0])[0]
|
||||
@ -362,10 +364,10 @@ def main(args):
|
||||
|
||||
ast = ParseFiles(filenames)
|
||||
if hgen.GenerateRange(ast, ['M13', 'M14', 'M15', 'M16', 'M17'], {}):
|
||||
print "Golden file for M13-M17 failed."
|
||||
print("Golden file for M13-M17 failed.")
|
||||
failed =1
|
||||
else:
|
||||
print "Golden file for M13-M17 passed."
|
||||
print("Golden file for M13-M17 passed.")
|
||||
|
||||
return failed
|
||||
|
||||
|
@ -5,6 +5,8 @@
|
||||
|
||||
""" Generator for C style prototypes and definitions """
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import glob
|
||||
import os
|
||||
import sys
|
||||
@ -199,7 +201,7 @@ class CGen(object):
|
||||
def Log(self, txt):
|
||||
if not GetOption('cgen_debug'): return
|
||||
tabs = ' ' * self.dbg_depth
|
||||
print '%s%s' % (tabs, txt)
|
||||
print('%s%s' % (tabs, txt))
|
||||
|
||||
def LogEnter(self, txt):
|
||||
if txt: self.Log(txt)
|
||||
@ -766,7 +768,7 @@ def TestFile(filenode):
|
||||
|
||||
outstr = cgen.Define(node, releases=['M14'])
|
||||
if GetOption('verbose'):
|
||||
print outstr + '\n'
|
||||
print(outstr + '\n')
|
||||
outstr = CleanString(outstr)
|
||||
|
||||
if instr != outstr:
|
||||
@ -809,10 +811,10 @@ def main(args):
|
||||
cgen = CGen()
|
||||
for f in ast.GetListOf('File'):
|
||||
if f.GetProperty('ERRORS') > 0:
|
||||
print 'Skipping %s' % f.GetName()
|
||||
print('Skipping %s' % f.GetName())
|
||||
continue
|
||||
for node in f.GetChildren()[2:]:
|
||||
print cgen.Define(node, ast.releases, comment=True, prefix='tst_')
|
||||
print(cgen.Define(node, ast.releases, comment=True, prefix='tst_'))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
@ -3,6 +3,8 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import glob
|
||||
import os
|
||||
import subprocess
|
||||
@ -37,16 +39,16 @@ class Change(object):
|
||||
|
||||
def Dump(self):
|
||||
if not self.was:
|
||||
print 'Adding %s' % self.mode
|
||||
print('Adding %s' % self.mode)
|
||||
elif not self.now:
|
||||
print 'Missing %s' % self.mode
|
||||
print('Missing %s' % self.mode)
|
||||
else:
|
||||
print 'Modifying %s' % self.mode
|
||||
print('Modifying %s' % self.mode)
|
||||
|
||||
for line in self.was:
|
||||
print 'src: >>%s<<' % line
|
||||
print('src: >>%s<<' % line)
|
||||
for line in self.now:
|
||||
print 'gen: >>%s<<' % line
|
||||
print('gen: >>%s<<' % line)
|
||||
print
|
||||
|
||||
#
|
||||
@ -234,7 +236,7 @@ def FilterLinesIn(output):
|
||||
filter[nindex] = True
|
||||
filter[windex] = True
|
||||
if GetOption('verbose'):
|
||||
print "Found %d, %d >>%s<<" % (windex + 1, nindex + 1, wline)
|
||||
print("Found %d, %d >>%s<<" % (windex + 1, nindex + 1, wline))
|
||||
out = []
|
||||
for index in range(len(output)):
|
||||
if not filter[index]:
|
||||
@ -259,7 +261,7 @@ def GetChanges(output):
|
||||
last = None
|
||||
|
||||
for line in lines:
|
||||
# print "LINE=%s" % line
|
||||
#print("LINE=%s" % line)
|
||||
if not line: continue
|
||||
|
||||
elif line[0] == '<':
|
||||
@ -282,7 +284,7 @@ def GetChanges(output):
|
||||
was = []
|
||||
now = []
|
||||
if ValidChange(change):
|
||||
changes.append(change)
|
||||
changes.append(change)
|
||||
if line == 'END':
|
||||
break
|
||||
|
||||
@ -315,7 +317,7 @@ def Main(args):
|
||||
name = os.path.split(name)[1]
|
||||
name = os.path.join(GetOption('gen'), name)
|
||||
if name not in filenames:
|
||||
print 'Missing: %s' % name
|
||||
print('Missing: %s' % name)
|
||||
|
||||
for filename in filenames:
|
||||
gen = filename
|
||||
@ -336,18 +338,19 @@ def Main(args):
|
||||
changes = []
|
||||
|
||||
if changes:
|
||||
print "\n\nDelta between:\n src=%s\n gen=%s\n" % (src, gen)
|
||||
print("\n\nDelta between:\n src=%s\n gen=%s\n" % (src, gen))
|
||||
for change in changes:
|
||||
change.Dump()
|
||||
print 'Done with %s\n\n' % src
|
||||
print('Done with %s\n\n' % src)
|
||||
if GetOption('ok'):
|
||||
open(diff, 'wt').write(output)
|
||||
if GetOption('halt'):
|
||||
return 1
|
||||
else:
|
||||
print "\nSAME:\n src=%s\n gen=%s" % (src, gen)
|
||||
if input: print ' ** Matched expected diff. **'
|
||||
print '\n'
|
||||
print("\nSAME:\n src=%s\n gen=%s" % (src, gen))
|
||||
if input:
|
||||
print(' ** Matched expected diff. **')
|
||||
print('\n')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
@ -3,6 +3,8 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import sys
|
||||
|
||||
from idl_log import ErrOut, InfoOut, WarnOut
|
||||
@ -66,7 +68,7 @@ class Generator(object):
|
||||
rangestr = GetOption('range')
|
||||
releasestr = GetOption('release')
|
||||
|
||||
print "Found releases: %s" % ast.releases
|
||||
print("Found releases: %s" % ast.releases)
|
||||
|
||||
# Generate list of files to ignore due to errors
|
||||
for filenode in ast.GetListOf('File'):
|
||||
@ -87,9 +89,9 @@ class Generator(object):
|
||||
|
||||
# Generate 'start' and 'end' represent first and last found.
|
||||
if vmin == 'start':
|
||||
vmin = ast.releases[0]
|
||||
vmin = ast.releases[0]
|
||||
if vmax == 'end':
|
||||
vmax = ast.releases[-1]
|
||||
vmax = ast.releases[-1]
|
||||
|
||||
vmin = ast.releases.index(vmin)
|
||||
vmax = ast.releases.index(vmax) + 1
|
||||
@ -223,7 +225,7 @@ class GeneratorReleaseTest(Generator):
|
||||
check_item = check_map[item]
|
||||
option_item = options.get(item, None)
|
||||
if check_item != option_item:
|
||||
print 'Option %s is %s, expecting %s' % (item, option_item, check_item)
|
||||
print('Option %s is %s, expecting %s' % (item, option_item, check_item))
|
||||
check_release = 0
|
||||
|
||||
if release != 'M14':
|
||||
@ -243,24 +245,24 @@ def Test():
|
||||
|
||||
ParseOptions(['--testgen_opt=so_long,MyOpt=XYZ,goodbye'])
|
||||
if Generator.Run('AST') != 0:
|
||||
print 'Generate release: Failed.\n'
|
||||
print('Generate release: Failed.\n')
|
||||
return -1
|
||||
|
||||
if check_release != 1 or check_range != 0:
|
||||
print 'Gererate release: Failed to run.\n'
|
||||
print('Gererate release: Failed to run.\n')
|
||||
return -1
|
||||
|
||||
check_release = 0
|
||||
ParseOptions(['--testgen_opt="HELLO"', '--range=M14,M16'])
|
||||
if Generator.Run('AST') != 0:
|
||||
print 'Generate range: Failed.\n'
|
||||
print('Generate range: Failed.\n')
|
||||
return -1
|
||||
|
||||
if check_release != 0 or check_range != 1:
|
||||
print 'Gererate range: Failed to run.\n'
|
||||
print('Gererate range: Failed to run.\n')
|
||||
return -1
|
||||
|
||||
print 'Generator test: Pass'
|
||||
print('Generator test: Pass')
|
||||
return 0
|
||||
|
||||
|
||||
|
@ -16,6 +16,8 @@
|
||||
# PLY can be found at:
|
||||
# http://www.dabeaz.com/ply/
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import os.path
|
||||
import re
|
||||
import sys
|
||||
@ -277,23 +279,23 @@ def TestSame(values1):
|
||||
count1 = len(values1)
|
||||
count2 = len(values2)
|
||||
if count1 != count2:
|
||||
print "Size mismatch original %d vs %d\n" % (count1, count2)
|
||||
print("Size mismatch original %d vs %d\n" % (count1, count2))
|
||||
if count1 > count2: count1 = count2
|
||||
|
||||
for i in range(count1):
|
||||
if values1[i] != values2[i]:
|
||||
print "%d >>%s<< >>%s<<" % (i, values1[i], values2[i])
|
||||
print("%d >>%s<< >>%s<<" % (i, values1[i], values2[i]))
|
||||
|
||||
if GetOption('output'):
|
||||
sys.stdout.write('Generating original.txt and tokenized.txt\n')
|
||||
open('original.txt', 'w').write(src1)
|
||||
open('tokenized.txt', 'w').write(src2)
|
||||
open('original.txt', 'w').write(values1)
|
||||
open('tokenized.txt', 'w').write(values2)
|
||||
|
||||
if values1 == values2:
|
||||
sys.stdout.write('Same: Pass\n')
|
||||
return 0
|
||||
|
||||
print "****************\n%s\n%s***************\n" % (src1, src2)
|
||||
print("****************\n%s\n%s***************\n" % (values1, values2))
|
||||
sys.stdout.write('Same: Failed\n')
|
||||
return -1
|
||||
|
||||
|
@ -10,6 +10,8 @@ This file defines the behavior of the AST namespace which allows for resolving
|
||||
a symbol as one or more AST nodes given a release or range of releases.
|
||||
"""
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import sys
|
||||
|
||||
from idl_option import GetOption, Option, ParseOptions
|
||||
@ -68,7 +70,7 @@ class IDLNamespace(object):
|
||||
name = node.GetName()
|
||||
verlist = self._name_to_releases.setdefault(name,IDLReleaseList())
|
||||
if GetOption('namespace_debug'):
|
||||
print "Adding to namespace: %s" % node
|
||||
print("Adding to namespace: %s" % node)
|
||||
return verlist.AddNode(node)
|
||||
|
||||
|
||||
@ -101,11 +103,13 @@ class MockNode(IDLRelease):
|
||||
return self.name
|
||||
|
||||
def Error(self, msg):
|
||||
if GetOption('release_debug'): print 'Error: %s' % msg
|
||||
if GetOption('release_debug'):
|
||||
print('Error: %s' % msg)
|
||||
self.errors.append(msg)
|
||||
|
||||
def Warn(self, msg):
|
||||
if GetOption('release_debug'): print 'Warn: %s' % msg
|
||||
if GetOption('release_debug'):
|
||||
print('Warn: %s' % msg)
|
||||
self.warns.append(msg)
|
||||
|
||||
def GetProperty(self, name):
|
||||
@ -118,15 +122,15 @@ errors = 0
|
||||
# Dumps all the information relevant to an add failure.
|
||||
def DumpFailure(namespace, node, msg):
|
||||
global errors
|
||||
print '\n******************************'
|
||||
print 'Failure: %s %s' % (node, msg)
|
||||
print('\n******************************')
|
||||
print('Failure: %s %s' % (node, msg))
|
||||
for warn in node.warns:
|
||||
print ' WARN: %s' % warn
|
||||
print(' WARN: %s' % warn)
|
||||
for err in node.errors:
|
||||
print ' ERROR: %s' % err
|
||||
print '\n'
|
||||
print(' ERROR: %s' % err)
|
||||
print('\n')
|
||||
namespace.Dump()
|
||||
print '******************************\n'
|
||||
print('******************************\n')
|
||||
errors += 1
|
||||
|
||||
# Add expecting no errors or warnings
|
||||
@ -150,15 +154,15 @@ def AddError(namespace, node, msg):
|
||||
DumpFailure(namespace, node, 'Expected errors')
|
||||
if msg not in node.errors:
|
||||
DumpFailure(namespace, node, 'Expected error: %s' % msg)
|
||||
print ">>%s<<\n>>%s<<\n" % (node.errors[0], msg)
|
||||
print(">>%s<<\n>>%s<<\n" % (node.errors[0], msg))
|
||||
|
||||
# Verify that a FindRelease call on the namespace returns the expected node.
|
||||
def VerifyFindOne(namespace, name, release, node):
|
||||
global errors
|
||||
if (namespace.FindRelease(name, release) != node):
|
||||
print "Failed to find %s as release %f of %s" % (node, release, name)
|
||||
print("Failed to find %s as release %f of %s" % (node, release, name))
|
||||
namespace.Dump()
|
||||
print "\n"
|
||||
print("\n")
|
||||
errors += 1
|
||||
|
||||
# Verify that a FindRage call on the namespace returns a set of expected nodes.
|
||||
@ -166,14 +170,11 @@ def VerifyFindAll(namespace, name, rmin, rmax, nodes):
|
||||
global errors
|
||||
out = namespace.FindRange(name, rmin, rmax)
|
||||
if (out != nodes):
|
||||
print "Found [%s] instead of[%s] for releases %f to %f of %s" % (
|
||||
' '.join([str(x) for x in out]),
|
||||
' '.join([str(x) for x in nodes]),
|
||||
rmin,
|
||||
rmax,
|
||||
name)
|
||||
print("Found [%s] instead of[%s] for releases %f to %f of %s" % (' '.join([
|
||||
str(x) for x in out
|
||||
]), ' '.join([str(x) for x in nodes]), rmin, rmax, name))
|
||||
namespace.Dump()
|
||||
print "\n"
|
||||
print("\n")
|
||||
errors += 1
|
||||
|
||||
def Main(args):
|
||||
@ -238,9 +239,9 @@ def Main(args):
|
||||
AddOkay(namespace, FooBar)
|
||||
|
||||
if errors:
|
||||
print 'Test failed with %d errors.' % errors
|
||||
print('Test failed with %d errors.' % errors)
|
||||
else:
|
||||
print 'Passed.'
|
||||
print('Passed.')
|
||||
return errors
|
||||
|
||||
|
||||
|
@ -100,7 +100,7 @@ def ParseOptions(args):
|
||||
if opt[0:2] == '--': opt = opt[2:]
|
||||
OptionMap[opt].Set(val)
|
||||
|
||||
except getopt.error, e:
|
||||
except getopt.error as e:
|
||||
ErrOut.Log('Illegal option: %s\n' % str(e))
|
||||
DumpHelp()
|
||||
sys.exit(-1)
|
||||
|
@ -140,8 +140,8 @@ class IDLOutFile(object):
|
||||
InfoOut.Log('Output %s written.' % self.filename)
|
||||
return True
|
||||
|
||||
except IOError as (errno, strerror):
|
||||
ErrOut.Log("I/O error(%d): %s" % (errno, strerror))
|
||||
except IOError as e:
|
||||
ErrOut.Log("I/O error(%d): %s" % (e.errno, e.strerror))
|
||||
except:
|
||||
ErrOut.Log("Unexpected error: %s" % sys.exc_info()[0])
|
||||
raise
|
||||
|
@ -10,6 +10,8 @@ This file defines the behavior of the AST namespace which allows for resolving
|
||||
a symbol as one or more AST nodes given a Release or range of Releases.
|
||||
"""
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import sys
|
||||
|
||||
from idl_log import ErrOut, InfoOut, WarnOut
|
||||
@ -272,7 +274,7 @@ def TestReleaseNode():
|
||||
assert Foo23.InRange('M14', 'M15A')
|
||||
assert Foo23.InRange('M15B', 'M17')
|
||||
assert not Foo23.InRange('M16', 'M17')
|
||||
print "TestReleaseNode - Passed"
|
||||
print("TestReleaseNode - Passed")
|
||||
|
||||
|
||||
def TestReleaseListWarning():
|
||||
@ -287,7 +289,7 @@ def TestReleaseListWarning():
|
||||
assert releases.AddNode(Foo23)
|
||||
assert releases.AddNode(Foo45)
|
||||
assert warning
|
||||
print "TestReleaseListWarning - Passed"
|
||||
print("TestReleaseListWarning - Passed")
|
||||
|
||||
|
||||
def TestReleaseListError():
|
||||
@ -303,7 +305,7 @@ def TestReleaseListError():
|
||||
assert releases.AddNode(Foo23)
|
||||
assert not releases.AddNode(Foo1X)
|
||||
assert error
|
||||
print "TestReleaseListError - Passed"
|
||||
print("TestReleaseListError - Passed")
|
||||
|
||||
|
||||
def TestReleaseListOK():
|
||||
@ -335,11 +337,11 @@ def TestReleaseListOK():
|
||||
assert releases.FindRange(None, None) == [FooXX, Foo1X, Foo23, Foo45]
|
||||
|
||||
# Verify we can find the correct versions
|
||||
print "TestReleaseListOK - Passed"
|
||||
print("TestReleaseListOK - Passed")
|
||||
|
||||
|
||||
def TestReleaseMap():
|
||||
print "TestReleaseMap- Passed"
|
||||
print("TestReleaseMap- Passed")
|
||||
|
||||
|
||||
def Main(args):
|
||||
@ -347,7 +349,7 @@ def Main(args):
|
||||
TestReleaseListWarning()
|
||||
TestReleaseListError()
|
||||
TestReleaseListOK()
|
||||
print "Passed"
|
||||
print("Passed")
|
||||
return 0
|
||||
|
||||
|
||||
|
@ -5,17 +5,19 @@
|
||||
|
||||
""" Test runner for IDL Generator changes """
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
def TestIDL(testname, args):
|
||||
print '\nRunning unit tests for %s.' % testname
|
||||
print('\nRunning unit tests for %s.' % testname)
|
||||
try:
|
||||
args = [sys.executable, testname] + args
|
||||
subprocess.check_call(args)
|
||||
return 0
|
||||
except subprocess.CalledProcessError as err:
|
||||
print 'Failed with %s.' % str(err)
|
||||
print('Failed with %s.' % str(err))
|
||||
return 1
|
||||
|
||||
def main(args):
|
||||
@ -36,7 +38,7 @@ def main(args):
|
||||
assert errors == 0
|
||||
|
||||
if errors:
|
||||
print '\nFailed tests.'
|
||||
print('\nFailed tests.')
|
||||
return errors
|
||||
|
||||
|
||||
|
@ -5,6 +5,8 @@
|
||||
|
||||
""" Generator for C++ style thunks """
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import glob
|
||||
import os
|
||||
import re
|
||||
@ -423,7 +425,7 @@ class TGen(GeneratorByFile):
|
||||
my_min, my_max = filenode.GetMinMax(releases)
|
||||
if my_min > releases[-1] or my_max < releases[0]:
|
||||
if os.path.isfile(savename):
|
||||
print "Removing stale %s for this range." % filenode.GetName()
|
||||
print("Removing stale %s for this range." % filenode.GetName())
|
||||
os.remove(os.path.realpath(savename))
|
||||
return False
|
||||
do_generate = filenode.GetProperty('generate_thunk')
|
||||
@ -493,7 +495,7 @@ class TGen(GeneratorByFile):
|
||||
for node in filenode.GetListOf('Interface'):
|
||||
# Skip if this node is not in this release
|
||||
if not node.InReleases(releases):
|
||||
print "Skipping %s" % node
|
||||
print("Skipping %s" % node)
|
||||
continue
|
||||
|
||||
# Generate Member functions
|
||||
@ -572,10 +574,10 @@ def Main(args):
|
||||
filenames = glob.glob(idldir)
|
||||
ast = ParseFiles(filenames)
|
||||
if tgen.GenerateRange(ast, ['M13', 'M14', 'M15'], {}):
|
||||
print "Golden file for M13-M15 failed."
|
||||
print("Golden file for M13-M15 failed.")
|
||||
failed = 1
|
||||
else:
|
||||
print "Golden file for M13-M15 passed."
|
||||
print("Golden file for M13-M15 passed.")
|
||||
|
||||
return failed
|
||||
|
||||
|
@ -3,6 +3,8 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import glob
|
||||
import optparse
|
||||
import os.path
|
||||
@ -226,7 +228,7 @@ def RunTestsOnce(url, options):
|
||||
file_mapping = dict(options.map_files)
|
||||
for filename in options.files:
|
||||
file_mapping[os.path.basename(filename)] = filename
|
||||
for server_path, real_path in file_mapping.iteritems():
|
||||
for _, real_path in file_mapping.items():
|
||||
if not os.path.exists(real_path):
|
||||
raise AssertionError('\'%s\' does not exist.' % real_path)
|
||||
mime_types = {}
|
||||
@ -385,7 +387,7 @@ def RunFromCommandLine():
|
||||
options, args = parser.parse_args()
|
||||
|
||||
if len(args) != 0:
|
||||
print args
|
||||
print(args)
|
||||
parser.error('Invalid arguments')
|
||||
|
||||
# Validate the URL
|
||||
|
@ -3,6 +3,8 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import os.path
|
||||
import re
|
||||
import shutil
|
||||
@ -193,8 +195,8 @@ class BrowserLauncher(object):
|
||||
self.options.nacl_exe_stdout, True)
|
||||
self.SetStandardStream(env, 'NACL_EXE_STDERR',
|
||||
self.options.nacl_exe_stderr, True)
|
||||
print 'ENV:', ' '.join(['='.join(pair) for pair in env.iteritems()])
|
||||
print 'LAUNCHING: %s' % ' '.join(cmd)
|
||||
print('ENV:', ' '.join(['='.join(pair) for pair in env.items()]))
|
||||
print('LAUNCHING: %s' % ' '.join(cmd))
|
||||
sys.stdout.flush()
|
||||
self.browser_process = RunCommand(cmd, env=env)
|
||||
|
||||
|
@ -3,6 +3,8 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import os
|
||||
import signal
|
||||
import subprocess
|
||||
@ -12,7 +14,7 @@ class BrowserProcessBase(object):
|
||||
|
||||
def __init__(self, handle):
|
||||
self.handle = handle
|
||||
print 'PID', self.handle.pid
|
||||
print('PID', self.handle.pid)
|
||||
|
||||
def GetReturnCode(self):
|
||||
return self.handle.returncode
|
||||
@ -36,7 +38,7 @@ class BrowserProcessBase(object):
|
||||
|
||||
def Kill(self):
|
||||
if self.IsRunning():
|
||||
print 'KILLING the browser'
|
||||
print('KILLING the browser')
|
||||
try:
|
||||
self.kill()
|
||||
# If it doesn't die, we hang. Oh well.
|
||||
@ -76,7 +78,7 @@ def RunCommandWithSubprocess(cmd, env=None):
|
||||
def RunCommandInProcessGroup(cmd, env=None):
|
||||
def SetPGrp():
|
||||
os.setpgrp()
|
||||
print 'I\'M THE SESSION LEADER!'
|
||||
print('I\'M THE SESSION LEADER!')
|
||||
|
||||
handle = subprocess.Popen(cmd, env=env, preexec_fn=SetPGrp)
|
||||
return BrowserProcessPosix(handle)
|
||||
|
||||
|
@ -59,17 +59,17 @@ class RequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
|
||||
return path
|
||||
|
||||
def guess_type(self, path):
|
||||
# We store the extension -> MIME type mapping in the server instead of the
|
||||
# request handler so we that can add additional mapping entries via the
|
||||
# command line.
|
||||
base, ext = posixpath.splitext(path)
|
||||
if ext in self.server.extensions_mapping:
|
||||
return self.server.extensions_mapping[ext]
|
||||
ext = ext.lower()
|
||||
if ext in self.server.extensions_mapping:
|
||||
return self.server.extensions_mapping[ext]
|
||||
else:
|
||||
return self.server.extensions_mapping['']
|
||||
# We store the extension -> MIME type mapping in the server instead of the
|
||||
# request handler so we that can add additional mapping entries via the
|
||||
# command line.
|
||||
_, ext = posixpath.splitext(path)
|
||||
if ext in self.server.extensions_mapping:
|
||||
return self.server.extensions_mapping[ext]
|
||||
ext = ext.lower()
|
||||
if ext in self.server.extensions_mapping:
|
||||
return self.server.extensions_mapping[ext]
|
||||
else:
|
||||
return self.server.extensions_mapping['']
|
||||
|
||||
def SendRPCResponse(self, response):
|
||||
self.send_response(200)
|
||||
@ -84,14 +84,14 @@ class RequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
|
||||
|
||||
def HandleRPC(self, name, query):
|
||||
kargs = {}
|
||||
for k, v in query.iteritems():
|
||||
for k, v in query.items():
|
||||
assert len(v) == 1, k
|
||||
kargs[k] = v[0]
|
||||
|
||||
l = self.server.listener
|
||||
try:
|
||||
response = getattr(l, name)(**kargs)
|
||||
except Exception, e:
|
||||
except Exception as e:
|
||||
self.SendRPCResponse('%r' % (e,))
|
||||
raise
|
||||
else:
|
||||
@ -139,7 +139,7 @@ class RequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
|
||||
try:
|
||||
data = self.rfile.read(int(self.headers.getheader('content-length')))
|
||||
outfile.write(data)
|
||||
except IOError, e:
|
||||
except IOError as e:
|
||||
outfile.close()
|
||||
try:
|
||||
os.remove(output_path)
|
||||
|
Reference in New Issue
Block a user