user creation is done with new sfi options instead of xml-based
[tests.git] / system / TestMain.py
index f78407c..ae69fd8 100755 (executable)
@@ -24,37 +24,53 @@ class Step:
 
     natives=TestPlc.__dict__
 
+    def display (self): return self.name.replace('_','-')
+    def internal (self): return self.name.replace('-','_')
+
     def __init__ (self, name):
-        self.name=name.replace('-','_')
+        self.name=name
         # a native step is implemented as a method on TestPlc
-        self.native = name in Step.natives
+        self.native = self.internal() in Step.natives
         if self.native:
-            self.method=Step.natives[self.name]
+            self.method=Step.natives[self.internal()]
         else:
             try:
-                self.substeps=sequences[self.name]
+                self.substeps=sequences[self.internal()]
             except Exception,e:
-                print "macro step %s not found in macros.py (%s) - exiting"%(self.name,e)
+                print "macro step %s not found in macros.py (%s) - exiting"%(self.display(),e)
                 raise
 
-    def norm_name (self): return self.name.replace('_','-')
-
-    def print_doc (self):
+    def print_doc (self,level=0):
+        tab=32
+        trail=8
         if self.native:
-            print '*',self.norm_name(),"\r",4*"\t",
+            start=level*' '+'* '
+            # 2 is the len of '* '
+            width=tab-level-2
+            format="%%-%ds"%width
+            line=start+format%self.display()
+            print line,
             try:
                 print self.method.__doc__
             except:
                 print "*** no doc found"
         else:
-            print '*',self.norm_name(),"\r",3*"\t","========== BEG MACRO step"
+            beg_start=level*' '+'>>> '
+            end_start=level*' '+'<<< '
+            trailer=trail*'-'
+            # 4 is the len of '>>> '
+            width=tab-level-4-trail
+            format=("%%-%ds"%width)
+            beg_line=beg_start+format%self.display()+trail*'>'
+            end_line=end_start+format%self.display()+trail*'<'
+            print beg_line
             for step in self.substeps:
-                Step(step).print_doc()
-            print '*',self.norm_name(),"\r",3*"\t","========== END MACRO step"
+                Step(step).print_doc(level+1)
+            print end_line
 
     # return a list of (name, method) for all native steps involved
     def tuples (self):
-        if self.native: return [ (self.name, self.method,) ]
+        if self.native: return [ (self.internal(), self.method,) ]
         else:
             result=[]
             for substep in [ Step(name) for name in self.substeps ] :