Re: [PATCH nft v5] tests: py: fix python3

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, May 28, 2019 at 9:57 PM Shivani Bhardwaj <shivanib134@xxxxxxxxx> wrote:
>
> On Tue, May 28, 2019 at 5:21 AM Shekhar Sharma <shekhar250198@xxxxxxxxx> wrote:
> >
> > This patch converts the 'nft-test.py' file to run on both python 2 and python3.
> >
> > The version hystory of this patch is:
> > v1:conversion to py3 by changing the print statements.
> > v2:add the '__future__' package for compatibility with py2 and py3.
> > v3:solves the 'version' problem in argparse by adding a new argument.
> > v4:uses .format() method to make print statements clearer.
> > v5: updated the shebang and corrected the sequence of import statements.
> >
> >
> > Signed-off-by: Shekhar Sharma <shekhar250198@xxxxxxxxx>
> > ---
> >  tests/py/nft-test.py | 44 +++++++++++++++++++++++---------------------
> >  1 file changed, 23 insertions(+), 21 deletions(-)
> >
> > diff --git a/tests/py/nft-test.py b/tests/py/nft-test.py
> > index 1c0afd0e..fe56340c 100755
> > --- a/tests/py/nft-test.py
> > +++ b/tests/py/nft-test.py
> > @@ -1,4 +1,4 @@
> > -#!/usr/bin/python2
> > +#!/usr/bin/python
> >  #
> >  # (C) 2014 by Ana Rey Botello <anarey@xxxxxxxxx>
> >  #
> > @@ -13,6 +13,7 @@
> >  # Thanks to the Outreach Program for Women (OPW) for sponsoring this test
> >  # infrastructure.
> >
> > +from __future__ import print_function
> >  import sys
> >  import os
> >  import argparse
> > @@ -436,7 +437,7 @@ def set_delete(table, filename=None, lineno=None):
> >      '''
> >      Deletes set and its content.
> >      '''
> > -    for set_name in all_set.keys():
> > +    for set_name in list(all_set.keys()):
> What exactly is this list() for? This is not a generator expression.
>
The .keys() method returns a list in python2 whereas in python3 it
does not do that.
So, i just wanted to be sure that whatever is returned is used as a list.
(but now it turns out that even without that, the code is running
perfectly in python3!)

> >          # Check if exists the set
> >          if not set_exist(set_name, table, filename, lineno):
> >              reason = "The set %s does not exist, " \
> > @@ -1002,9 +1003,9 @@ def execute_cmd(cmd, filename, lineno, stdout_log=False, debug=False):
> >      :param debug: temporarily set these debug flags
> >      '''
> >      global log_file
> > -    print >> log_file, "command: %s" % cmd
> > +    print("command: {}".format(cmd), file = log_file)
> >      if debug_option:
> > -        print cmd
> > +        print(cmd)
> >
> >      if debug:
> >          debug_old = nftables.get_debug()
> > @@ -1198,7 +1199,7 @@ def run_test_file(filename, force_all_family_option, specific_file):
> >          sys.stdout.flush()
> >
> >          if signal_received == 1:
> > -            print "\nSignal received. Cleaning up and Exitting..."
> > +            print("\nSignal received. Cleaning up and Exitting...")
> >              cleanup_on_exit()
> >              sys.exit(0)
> >
> > @@ -1305,13 +1306,13 @@ def run_test_file(filename, force_all_family_option, specific_file):
> >
> >      if specific_file:
> >          if force_all_family_option:
> > -            print print_result_all(filename, tests, total_warning, total_error,
> > -                                   total_unit_run)
> > +            print(print_result_all(filename, tests, total_warning, total_error,
> > +                                   total_unit_run))
> >          else:
> > -            print print_result(filename, tests, total_warning, total_error)
> > +            print(print_result(filename, tests, total_warning, total_error))
> >      else:
> >          if tests == passed and tests > 0:
> > -            print filename + ": " + Colors.GREEN + "OK" + Colors.ENDC
> > +            print(filename + ": " + Colors.GREEN + "OK" + Colors.ENDC)
> >
> >      f.close()
> >      del table_list[:]
> > @@ -1322,7 +1323,7 @@ def run_test_file(filename, force_all_family_option, specific_file):
> >
> >
> >  def main():
> > -    parser = argparse.ArgumentParser(description='Run nft tests', version='1.0')
> > +    parser = argparse.ArgumentParser(description='Run nft tests')
> >
> >      parser.add_argument('filenames', nargs='*', metavar='path/to/file.t',
> >                          help='Run only these tests')
> > @@ -1341,6 +1342,10 @@ def main():
> >                          dest='enable_json',
> >                          help='test JSON functionality as well')
> >
> > +    parser.add_argument('-v', '--version', action='version',
> > +                        version= '1.0',
> > +                        help='prints the version information')
> Since this message is for the user, it should be "print" IMO.
>

True. Will change it.

> > +
> >      args = parser.parse_args()
> >      global debug_option, need_fix_option, enable_json_option
> >      debug_option = args.debug
> > @@ -1353,15 +1358,15 @@ def main():
> >      signal.signal(signal.SIGTERM, signal_handler)
> >
> >      if os.getuid() != 0:
> > -        print "You need to be root to run this, sorry"
> > +        print("You need to be root to run this, sorry")
> >          return
> >
> >      # Change working directory to repository root
> >      os.chdir(TESTS_PATH + "/../..")
> >
> >      if not os.path.exists('src/.libs/libnftables.so'):
> > -        print "The nftables library does not exist. " \
> > -              "You need to build the project."
> > +        print("The nftables library does not exist. "
> > +              "You need to build the project.")
> >          return
> >
> >      global nftables
> > @@ -1411,18 +1416,15 @@ def main():
> >              run_total += file_unit_run
> >
> >      if test_files == 0:
> > -        print "No test files to run"
> > +        print("No test files to run")
> >      else:
> >          if not specific_file:
> >              if force_all_family_option:
> > -                print "%d test files, %d files passed, %d unit tests, " \
> > -                      "%d total executed, %d error, %d warning" \
> > -                      % (test_files, files_ok, tests, run_total, errors,
> > -                         warnings)
> > +                print("{} test files, {} files passed, {} unit tests,".format(test_files, files_ok, tests))
> > +                print("{} total executed, {} error, {} warning".format(run_total, errors, warnings))
> >              else:
> > -                print "%d test files, %d files passed, %d unit tests, " \
> > -                      "%d error, %d warning" \
> > -                      % (test_files, files_ok, tests, errors, warnings)
> > +                print("{} test files, {} files passed, {} unit tests".format(test_files, files_ok, tests))
> > +                print("{} error, {} warning".format(errors, warnings))
> >
> >
> >  if __name__ == '__main__':
> > --
> > 2.17.1
> >
>
>
> --
> Shivani
> https://about.me/shivani.bhardwaj

Thanks!
Shekhar



[Index of Archives]     [Netfitler Users]     [Berkeley Packet Filter]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux