cosmetic changes only
[tests.git] / system / utils.py
index e6700f1..701ad3f 100644 (file)
@@ -1,4 +1,6 @@
-# $Id$
+# Thierry Parmentelat <thierry.parmentelat@inria.fr>
+# Copyright (C) 2010 INRIA 
+#
 import time, os, re, glob, sys
 from pprint import PrettyPrinter
 
@@ -20,29 +22,35 @@ def pprint(message,spec,depth=2):
 
 
 
-def system(command,background=False):
-    if background: command += " &"
-    if options.dry_run:
+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
+        else: command += " 2> /dev/null"
+    if background: command += " &"
+    if silent:
+        print '.',
+        sys.stdout.flush()
     else:
         now=time.strftime("%H:%M:%S", time.localtime())
-        print "*",now,'--',
+        # don't show in summary
+        print "->",now,'--',
         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)
 
 
-
 # convenience: translating shell-like pattern into regexp
 def match (string, pattern):
     # tmp - there's probably much simpler
@@ -51,7 +59,7 @@ def match (string, pattern):
     pattern=pattern.replace("?",".")
     return re.compile(pattern).match(string)
     
-def locate_hooks_scripts (message,path,extensions):
+def locate_hooks_scripts (message, path, extensions):
     print message,'searching',path,'for extensions',extensions
     scripts=[]
     for ext in extensions:
@@ -62,7 +70,7 @@ def locate_hooks_scripts (message,path,extensions):
 # 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):
+def show_options (message, options):
     now=time.strftime("%H:%M:%S", time.localtime())
     print ">",now,"--",message
     for k in dir(options):