keep track of what has moved to py3
[tests.git] / system / utils.py
index cc03318..51205bd 100644 (file)
@@ -1,84 +1,92 @@
+# -*- python3 -*-
 # Thierry Parmentelat <thierry.parmentelat@inria.fr>
-# Copyright (C) 2010 INRIA 
+# Copyright (C) 2015 INRIA 
 #
-import time, os, re, glob, sys
+import sys
+import time
+import os
+import re
+import glob
+import subprocess
 from pprint import PrettyPrinter
 
 options={}
 
 def init_options(options_arg):
     global options
-    options=options_arg
+    options = options_arg
 
 # how could this accept a list again ?
 def header(message):
-    now=time.strftime("%H:%M:%S", time.localtime())
-    print "*",now,'--',message
+    now = time.strftime("%H:%M:%S", time.localtime())
+    print("*", now, '--', message)
 
-def pprint(message,spec,depth=2):
-    now=time.strftime("%H:%M:%S", time.localtime())
-    print ">",now,"--",message
-    PrettyPrinter(indent=8,depth=depth).pprint(spec)
+def pprint(message, spec, depth=2):
+    now = time.strftime("%H:%M:%S", time.localtime())
+    print(">", now, "--", message)
+    PrettyPrinter(indent=8, depth=depth).pprint(spec)
 
 
 
-def system(command,background=False,silent=False):
-    if getattr(options,'dry_run',None):
-        print 'dry_run:',command
+def system(command, background=False, silent=False, dry_run=None):
+    dry_run = dry_run if dry_run is not None else getattr(options, 'dry_run', False)
+    if dry_run:
+        print('dry_run:', command)
         return 0
     
     if silent :    
-        if command.find(';')>=0: command = "(%s) 2> /dev/null" % command
+        if command.find(';') >= 0:
+            command = "({}) 2> /dev/null".format(command)
         else: command += " 2> /dev/null"
-    if background: command += " &"
+    if background:
+        command += " &"
     if silent:
-        print '.',
+        print('.', end=' ')
         sys.stdout.flush()
     else:
-        now=time.strftime("%H:%M:%S", time.localtime())
+        now = time.strftime("%H:%M:%S", time.localtime())
         # don't show in summary
-        print "->",now,'--',
+        print("->", now, '--', end=' ')
         sys.stdout.flush()
-    return os.system("set -x; " + command)
+    if not silent:
+        command = "set -x; " + command
+    return os.system(command)
 
 ### WARNING : this ALWAYS does its job, even in dry_run mode
 def output_of (command):
-    import commands
-#    if options.dry_run:
-#        print 'dry_run',command
-#        return (0,'[[dry-run - fake output]]')
-#    else:
-    (code,string) = commands.getstatusoutput(command)
-    return (code,string)
-
+    import subprocess
+    (code, string) = subprocess.getstatusoutput(command)
+    return (code, string)
 
 
 # convenience: translating shell-like pattern into regexp
 def match (string, pattern):
     # tmp - there's probably much simpler
     # rewrite * into .*, ? into .
-    pattern=pattern.replace("*",".*")
-    pattern=pattern.replace("?",".")
+    pattern = pattern.replace("*",".*")
+    pattern = pattern.replace("?",".")
     return re.compile(pattern).match(string)
     
-def locate_hooks_scripts (message,path,extensions):
-    print message,'searching',path,'for extensions',extensions
-    scripts=[]
+def locate_hooks_scripts (message, path, extensions):
+    print(message, 'searching', path, 'for extensions', extensions)
+    scripts = []
     for ext in extensions:
         # skip helper programs
-        scripts += glob.glob (path+'/[a-zA-Z]*.'+ext)
+        scripts += glob.glob (path+'/[a-zA-Z]*.' + ext)
     return scripts
     
 # quick & dirty - should probably use the parseroption object instead
 # and move to TestMain as well
 exclude_options_keys = [ 'ensure_value' , 'read_file', 'read_module' ]
-def show_options (message,options):
-    now=time.strftime("%H:%M:%S", time.localtime())
-    print ">",now,"--",message
+def show_options (message, options):
+    now = time.strftime("%H:%M:%S", time.localtime())
+    print(">", now, "--", message)
     for k in dir(options):
-        if k.find("_")==0: continue
-        if k in exclude_options_keys: continue
-        print "    ",k,":",getattr(options,k)
+        if k.find("_") == 0:
+            continue
+        if k in exclude_options_keys:
+            continue
+        print("    ", k, ":", getattr(options, k))