Improve python3 compatibility

Use proper print() function to make scripts compatible with both python
2 and 3. This paves the way to deprecating python 2 support altogether.

Change-Id: I80e5850a8978d78cda793e2192ef4bd3fd54a121
This commit is contained in:
Max 2018-01-03 17:35:59 +01:00
parent 566f2a7590
commit 2f266e0cec
5 changed files with 31 additions and 29 deletions

View File

@ -16,7 +16,7 @@ done
rm -rf ./build
PY3=python3
PY3_LIST="osmopy scripts/osmo_ctrl.py scripts/osmo_interact_ctrl.py scripts/osmo_interact_vty.py scripts/osmo_verify_transcript_ctrl.py scripts/osmo_verify_transcript_vty.py scripts/soap.py scripts/twisted_ipa.py"
PY3_LIST="osmopy scripts/osmo_ctrl.py scripts/osmodumpdoc.py scripts/osmotestvty.py scripts/osmotestconfig.py scripts/osmo_interact_ctrl.py scripts/osmo_interact_vty.py scripts/osmo_verify_transcript_ctrl.py scripts/osmo_verify_transcript_vty.py scripts/soap.py scripts/twisted_ipa.py"
$PY3 ./setup.py install
$PY3 tests/test_py3.py
for f in $PY3_LIST

View File

@ -4,7 +4,7 @@
# Fixes may need to be applied to both.
"""Start the process and dump the documentation to the doc dir."""
from __future__ import print_function
import subprocess
import time
import os
@ -21,7 +21,7 @@ def dump_doc(name, port, filename):
out = open(filename, 'w')
out.write(xml)
out.close()
print 'generated %r' % filename
print('generated %r' % filename)
"""Dump the config of all the apps.
@ -40,22 +40,22 @@ def dump_configs(apps, configs, confpath):
for app in apps:
appname = app[3]
print "Starting app for %s" % appname
print("Starting app for %s" % appname)
proc = None
cmd = [app[1], "-c", os.path.join(confpath, configs[appname][0])]
print 'cd', os.path.abspath(os.path.curdir), ';', ' '.join(cmd)
print('cd', os.path.abspath(os.path.curdir), ';', ' '.join(cmd))
try:
proc = subprocess.Popen(cmd, stdin=None, stdout=None)
except OSError as e: # Probably a missing binary
print >> sys.stderr, e
print >> sys.stderr, "Skipping app %s" % appname
print(e, file=sys.stderr)
print("Skipping app %s" % appname, file=sys.stderr)
failures += 1
else:
try:
dump_doc(app[2], app[0], 'doc/%s_vty_reference.xml' % appname)
successes += 1
except IOError: # Generally a socket issue
print >> sys.stderr, "%s: couldn't connect, skipping" % appname
print("%s: couldn't connect, skipping" % appname, file=sys.stderr)
failures += 1
finally:
osmoutil.end_proc(proc)
@ -90,7 +90,7 @@ if __name__ == '__main__':
num_fails, num_sucs = dump_configs(
osmoappdesc.apps, osmoappdesc.app_configs, confpath)
if num_fails > 0:
print >> sys.stderr, "Warning: Skipped %s apps" % num_fails
print("Warning: Skipped %s apps" % num_fails, file=sys.stderr)
if 0 == num_sucs:
print >> sys.stderr, "Nothing run, wrong working dir? Set with -w"
print("Nothing run, wrong working dir? Set with -w", file=sys.stderr)
sys.exit(num_fails)

View File

@ -13,7 +13,7 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from __future__ import print_function
import os
import os.path
import time
@ -52,7 +52,7 @@ def test_config_atest(app_desc, config, run_test, verbose=True):
try:
cmd = app_desc[1].split(' ') + [ "-c", config]
if verbose:
print "Verifying %s, test %s" % (' '.join(cmd), run_test.__name__)
print("Verifying %s, test %s" % (' '.join(cmd), run_test.__name__))
proc = osmoutil.popen_devnull(cmd)
end = app_desc[2]
@ -61,10 +61,10 @@ def test_config_atest(app_desc, config, run_test, verbose=True):
ret = run_test(vty)
except IOError as se:
print >> sys.stderr, "Failed to verify %s" % ' '.join(cmd)
print >> sys.stderr, "Current directory: %s" % os.getcwd()
print >> sys.stderr, "Error was %s" % se
print >> sys.stderr, "Config was\n%s" % open(config).read()
print("Failed to verify %s" % ' '.join(cmd), file=sys.stderr)
print("Current directory: %s" % os.getcwd(), file=sys.stderr)
print("Error was %s" % se, file=sys.stderr)
print("Config was\n%s" % open(config).read(), file=sys.stderr)
raise se
finally:
@ -125,9 +125,8 @@ def verify_doc(vty):
all_errs.append(err_lines)
print >> sys.stderr, \
"Documentation error (missing docs): \n%s\n%s\n" % (
cmd_line, '\n'.join(err_lines))
print("Documentation error (missing docs): \n%s\n%s\n" % (
cmd_line, '\n'.join(err_lines)), file=sys.stderr)
return (len(all_errs), all_errs)
@ -157,7 +156,7 @@ def check_configs_tested(basedir, app_configs, ignore_configs):
if config in app_configs[app]:
found = True
if not found:
print >> sys.stderr, "Warning: %s is not being tested" % config
print("Warning: %s is not being tested" % config, file=sys.stderr)
def test_all_apps(apps, app_configs, tmpdir="writtenconfig", verbose=True,
@ -166,7 +165,7 @@ def test_all_apps(apps, app_configs, tmpdir="writtenconfig", verbose=True,
errors = 0
for app in apps:
if not app_exists(app):
print >> sys.stderr, "Skipping app %s (not found)" % app[1]
print("Skipping app %s (not found)" % app[1], file=sys.stderr)
continue
configs = app_configs[app[3]]
@ -178,7 +177,7 @@ def test_all_apps(apps, app_configs, tmpdir="writtenconfig", verbose=True,
remove_tmpdir(tmpdir)
if errors:
print >> sys.stderr, "ERRORS: %d" % errors
print("ERRORS: %d" % errors, file=sys.stderr)
return errors

View File

@ -13,7 +13,7 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from __future__ import print_function
import os
import time
import unittest
@ -36,11 +36,11 @@ class TestVTY(unittest.TestCase):
osmo_vty_cmd[cfi] = os.path.join(confpath, osmo_vty_cmd[cfi])
try:
print "Launch: %s from %s" % (' '.join(osmo_vty_cmd), os.getcwd())
print("Launch: %s from %s" % (' '.join(osmo_vty_cmd), os.getcwd()))
self.proc = osmoutil.popen_devnull(osmo_vty_cmd)
except OSError:
print >> sys.stderr, "Current directory: %s" % os.getcwd()
print >> sys.stderr, "Consider setting -b"
print("Current directory: %s" % os.getcwd(), file=sys.stderr)
print("Consider setting -b", file=sys.stderr)
appstring = osmoappdesc.vty_app[2]
appport = osmoappdesc.vty_app[0]
@ -94,9 +94,9 @@ if __name__ == '__main__':
osmoappdesc = osmoutil.importappconf_or_quit(confpath, "osmoappdesc",
args.p)
print "confpath %s, workdir %s" % (confpath, workdir)
print("confpath %s, workdir %s" % (confpath, workdir))
os.chdir(workdir)
print "Running tests for specific VTY commands"
print("Running tests for specific VTY commands")
suite = unittest.TestLoader().loadTestsFromTestCase(TestVTY)
res = unittest.TextTestRunner(verbosity=verbose_level).run(suite)
sys.exit(len(res.errors) + len(res.failures))

View File

@ -23,7 +23,10 @@ if sys.version_info.major == 2:
scripts = ["scripts/osmodumpdoc.py", "scripts/osmotestconfig.py",
"scripts/osmotestvty.py"]
elif sys.version_info.major == 3:
scripts = ["scripts/osmo_interact_vty.py",
scripts = ["scripts/osmodumpdoc.py",
"scripts/osmotestconfig.py",
"scripts/osmotestvty.py",
"scripts/osmo_interact_vty.py",
"scripts/osmo_interact_ctrl.py",
"scripts/osmo_ctrl.py",
"scripts/soap.py",