You are viewing a plain text version of this content. The canonical link for it is here.
Posted to general@gump.apache.org by aj...@apache.org on 2004/07/23 17:23:33 UTC

cvs commit: gump/python/gump/test model.py

ajack       2004/07/23 08:23:33

  Modified:    python/gump/utils domutils.py
               python/gump/model object.py property.py builder.py
               python/gump/test/resources/full1 module1.xml module2.xml
               project  bsf.xml
               python/gump/test model.py
  Log:
  Whew, tracking down the problem w/ blank properties took way more
  time than it oughta...
  
  Revision  Changes    Path
  1.5       +1 -1      gump/python/gump/utils/domutils.py
  
  Index: domutils.py
  ===================================================================
  RCS file: /home/cvs/gump/python/gump/utils/domutils.py,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- domutils.py	14 Jul 2004 23:36:28 -0000	1.4
  +++ domutils.py	23 Jul 2004 15:23:33 -0000	1.5
  @@ -163,7 +163,7 @@
       
   def hasDomAttribute(element,name):
       if element.hasAttributes():
  -        if element.getAttribute(name): return True
  +        return element.hasAttribute(name)
       return False
   
   def getDomAttributeValue(element,name,default=None):
  
  
  
  1.27      +9 -7      gump/python/gump/model/object.py
  
  Index: object.py
  ===================================================================
  RCS file: /home/cvs/gump/python/gump/model/object.py,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- object.py	19 Jul 2004 16:07:56 -0000	1.26
  +++ object.py	23 Jul 2004 15:23:33 -0000	1.27
  @@ -67,7 +67,13 @@
       	
           self.resolutionPerformed=False
           self.completionPerformed=False
  -    	
  +        	
  +    def __repr__(self):
  +        return str(self)
  +        
  +    def __str__(self):
  +        return self.__class__.__name__
  +        
       def __del__(self):
           Annotatable.__del__(self)
           Workable.__del__(self)
  @@ -151,8 +157,7 @@
       
       # Helper methods
       def hasDomAttribute(self,name):
  -        if hasDomAttribute(self.element,name): return True
  -        return False   
  +        return hasDomAttribute(self.element,name)
       
       def getDomAttributeValue(self,name,default=None):
           return self.expandVariables(
  @@ -302,10 +307,7 @@
       def __hash__(self):
           if self.hash: return self.hash
           self.hash=hash(self.name)
  -        return self.hash
  -        
  -    def __repr__(self):
  -        return str(self)
  +        return self.hash        
           
       def __str__(self):
           return self.__class__.__name__+':'+self.name
  
  
  
  1.25      +41 -12    gump/python/gump/model/property.py
  
  Index: property.py
  ===================================================================
  RCS file: /home/cvs/gump/python/gump/model/property.py,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- property.py	19 Jul 2004 16:07:56 -0000	1.24
  +++ property.py	23 Jul 2004 15:23:33 -0000	1.25
  @@ -20,32 +20,52 @@
   
   from gump.model.object import *
   from gump.utils.domutils import *
  +from types import NoneType
   
   # represents a <property/> element
   class Property(NamedModelObject):
       
       def __init__(self,name,dom,parent):
       	NamedModelObject.__init__(self,name,dom,parent)
  -    	self.value=self.getDomAttributeValue('value')
  +        
  +        self.value=None
  +        
       	
       def setValue(self,value):
  +        """
  +        Set a value for this property
  +        """
           self.value = value
           
       def getValue(self):
  +        """
  +        Get a value
  +        """
           return self.value
           
       # provide default elements when not defined in xml
       def complete(self,parent,workspace):
           if self.isComplete(): return
       
  +        if self.hasDomAttribute('value'):
  +            self.value=self.getDomAttributeValue('value','')
  +            if not self.value:
  +                self.value=''
  +        else:
  +            self.value=None
  +            
           # Properties are either on the workspace, or on
           # an ant entry within a project. Pick workspace or project.
           responsibleParty=workspace
           if not parent==workspace: responsibleParty=parent.getOwner()    
               
  -        project=self.getDomAttributeValue('project')   
  -            
  +        # Get what this might refer to.
  +        project=self.getDomAttributeValue('project')               
           reference=self.getDomAttributeValue('reference')
  +        
  +        #
  +        # Do we have a reference to process?
  +        #
           if reference=='home':         
               if not workspace.hasProject(project):
                   responsibleParty.addError('Cannot resolve homedir of *unknown* [' + project + ']')                
  @@ -61,8 +81,8 @@
           elif reference=='jarpath' or reference=='jar':            
               if self.hasDomAttribute('project'):
                   if not workspace.hasProject(project):
  -                    responsibleParty.addError('Cannot resolve jar/jarpath of *unknown* [' \
  -                        + project + ']')
  +                    responsibleParty.addError( \
  +                        'Cannot resolve jar/jarpath of *unknown* [' + project + ']')
                   else:
                       targetProject=workspace.getProject(project)
                   
  @@ -80,6 +100,7 @@
                               responsibleParty.addError(	\
                                  ("jar with id %s was not found in project %s ") % \
                                   (id, targetProject.getName()))
  +                                
                       elif targetProject.getJarCount()==1:
                           # There is only one, so pick it...
                           self.setValue(targetProject.getJars()[0].getPath())
  @@ -120,15 +141,17 @@
                               relativeProject.getModule().getWorkingDirectory(),
                               path))
               else:
  -                responsibleParty.addError('Can\'t have path on property on workspace: ' + \
  -                    + self.getName())
  +                responsibleParty.addError( \
  +                    'Can\'t have path on property on workspace: ' + self.getName())
           
  -        if not self.value:
  -            responsibleParty.addError('Unhandled Property: ' + self.getName() + ' on: ' + \
  -                    str(parent))
  +        #
  +        # Do we have a value yet?
  +        #
  +        if isinstance(self.value,NoneType):
  +            responsibleParty.addError('Unhandled Property: ' + self.getName() + ' on: ' + str(parent))
               self.value='*Unset*'
                   
  -        self.setComplete(1)
  +        self.setComplete(True)
           
       def dump(self, indent=0, output=sys.stdout):
           """ Display the property """
  @@ -166,9 +189,15 @@
           return False
           
       def getProperties(self):
  +        """
  +        Get a list of all the property objects
  +        """
           return self.properties.values()
               
  -    def importProperty(self,pdom):        
  +    def importProperty(self,pdom):     
  +        """
  +        Import a project from the DOM   
  +        """
           property=None
           
           if hasDomAttribute(pdom,'name'):
  
  
  
  1.4       +9 -0      gump/python/gump/model/builder.py
  
  Index: builder.py
  ===================================================================
  RCS file: /home/cvs/gump/python/gump/model/builder.py,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- builder.py	19 Jul 2004 16:07:56 -0000	1.3
  +++ builder.py	23 Jul 2004 15:23:33 -0000	1.4
  @@ -45,6 +45,15 @@
           # Store owning project
           self.project=project
               	
  +    def __str__(self):
  +        """
  +        Display what project this is on, if possible.
  +        """       
  +        if not self.project:
  +            return self.__class__.__name__
  +        else:
  +            return self.__class__.__name__ + ' on ' + `self.project`
  +        
       #
       # expand properties - in other words, do everything to complete the
       # entry that does NOT require referencing another project
  
  
  
  1.8       +1 -0      gump/python/gump/test/resources/full1/module1.xml
  
  Index: module1.xml
  ===================================================================
  RCS file: /home/cvs/gump/python/gump/test/resources/full1/module1.xml,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- module1.xml	21 May 2004 23:15:01 -0000	1.7
  +++ module1.xml	23 Jul 2004 15:23:33 -0000	1.8
  @@ -7,6 +7,7 @@
   
     <cvs repository="repository1" tag="module1Tag"/>
   
  +  <!-- leave here to allow test of <nag on module -->
     <nag from="Ms. Dev 1 &lt;dev1@jakarta.apache.org&gt;"
            to="project1@jakarta.apache.org"/>
            
  
  
  
  1.13      +3 -0      gump/python/gump/test/resources/full1/module2.xml
  
  Index: module2.xml
  ===================================================================
  RCS file: /home/cvs/gump/python/gump/test/resources/full1/module2.xml,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- module2.xml	12 Feb 2004 13:41:52 -0000	1.12
  +++ module2.xml	23 Jul 2004 15:23:33 -0000	1.13
  @@ -13,6 +13,8 @@
       <ant target="gump">
         <property name="ant.home" reference="home" project="project1"/>
         <property name="containsSpaces" value="a b c '' d e"/>      
  +      <property name="blank-ok" value=""/>      
  +      <property name="blank-bogus"/>      
         <depend property="project1.jar" project="project1"/>
       </ant>
   
  @@ -26,6 +28,7 @@
   
       <license name="LICENSE"/>
   
  +	<!-- leave here to allow test of <nag on project -->
       <nag from="Mr Dev 2 &lt;dev2@jakarta.apache.org&gt;"
            to="project2@jakarta.apache.org"/>
     </project>
  
  
  
  1.19      +1 -1      gump/project/bsf.xml
  
  Index: bsf.xml
  ===================================================================
  RCS file: /home/cvs/gump/project/bsf.xml,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- bsf.xml	22 Jul 2004 19:50:54 -0000	1.18
  +++ bsf.xml	23 Jul 2004 15:23:33 -0000	1.19
  @@ -24,7 +24,7 @@
     <redistributable/>
   
     <project name="bsf">
  - 
  +
       <jar  name="lib/bsf.jar"/>
       <license name="license.html"/>
     </project>
  
  
  
  1.24      +17 -2     gump/python/gump/test/model.py
  
  Index: model.py
  ===================================================================
  RCS file: /home/cvs/gump/python/gump/test/model.py,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- model.py	14 Jul 2004 20:47:02 -0000	1.23
  +++ model.py	23 Jul 2004 15:23:33 -0000	1.24
  @@ -79,6 +79,21 @@
           self.assertTrue('Has Jars', self.package1.hasJars())
           self.assertTrue('Is a package', self.packagedModule1.isPackaged())
           
  +    def testNotifys(self):
  +        
  +        self.assertTrue('Project1 has notifications', self.project1.hasNotifys())
  +        self.assertTrue('Module1 has notifications', self.module1.hasNotifys())
  +        self.assertTrue('Project2 has notifications', self.project2.hasNotifys())
  +        self.assertFalse('Module2 has NO notifications', self.module2.hasNotifys())
  +        
  +    def testProperties(self):
  +        properties=project2.getProperties()
  +        self.assertNotNone('Project2 has properties', project2.hasProperties())
  +        self.assertNotNone('Project2 has properties', properties)
  +        self.assertNotEmpty('Project2 has some properties', properties)
  +        self.assertEqual('Explicit blank is ok', properties.getProperty('blank-ok'), "")
  +        self.assertNotNone('Explicit blank is NOT ok', properties.getProperty('blank-bogus'))
  +        
       def testRepository(self):
           repo1 = self.repo1
           
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: general-unsubscribe@gump.apache.org
For additional commands, e-mail: general-help@gump.apache.org