Changeset 1326

Show
Ignore:
Timestamp:
05/11/08 12:07:22 (2 months ago)
Author:
klattimer
Message:

Completed unit testing of preferences.py fixed bugs

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • wine-doors/branches/0.2/src/preferences.py

    r1324 r1326  
    55from urllib import quote, unquote 
    66 
    7 class ParsePreferences
     7class ParsePreferences( ContentHandler )
    88    """ 
    99    XML parser for the preferences file, the spec for this can be found at 
    1010    http://www.wine-doors.org/trac/wiki/Preferences02 
    1111    """ 
    12     def __init__ ( self, preferences, repositories, bottles ): 
     12    def __init__ ( self, preferences, repositories ): 
    1313        self.preferences = preferences 
    1414        self.repositories = repositories 
    15         self.bottles = bottles 
    1615        self.data = [] 
    1716        self.in_conf_file = False 
    1817        self.in_repo_list = False 
    19         self.in_bottles = False 
    2018        self.repo_name = None 
    2119        self.repo_uri = None 
    2220        self.repo_username = None 
    2321        self.repo_password = None 
    24         self.bottle_path = None 
    25         self.bottles_base = None 
    2622     
    2723    def startElement( self, name, attrs ): 
    28         if name == "prefernces": 
     24        if name == "preferences": 
    2925            self.in_conf_file = True 
    3026        elif name == "repositories" and self.in_conf_file: 
    3127            self.in_repo_list = True 
    32         elif name == "bottles" and self.in_conf_file: 
    33             self.in_bottles = True 
    34             self.bottles_base = attrs.get( 'root' ) 
    3528        elif name == "repository" and self.in_repo_list: 
    3629            self.repo_name = attrs.get( 'name' ) 
    3730            self.repo_name = self.repo_name.rstrip() 
    3831 
    39             self.repo_uri = attrs.get( 'uri' ) 
     32            self.repo_uri = attrs.get( 'src' ) 
    4033            self.repo_uri = self.repo_uri.rstrip() 
    4134 
    4235            self.repo_username = attrs.get( 'username' ) 
    43             self.repo_username = self.repo_username.rstrip() 
     36            if self.repo_username: 
     37                self.repo_username = self.repo_username.rstrip() 
    4438 
    4539            self.repo_password = attrs.get( 'password' ) 
    46             self.repo_password = self.repo_password.rstrip() 
     40            if self.repo_password: 
     41                self.repo_password = self.repo_password.rstrip() 
    4742 
    4843    def characters ( self, string ): 
     
    5449        elif name == "repositories" and self.in_conf_file: 
    5550            self.in_repo_list = False 
    56         elif name == "repo" and self.in_repo_list: 
    57             self.repositories.append( [self.repo_name, self.repo_uri, 
    58                                        self.repo_username, self.repo_password]
     51        elif name == "repository" and self.in_repo_list: 
     52            self.repositories.append( (self.repo_name, self.repo_uri, 
     53                                       self.repo_username, self.repo_password)
    5954        elif self.in_conf_file: 
    6055            text = ''.join( self.data ) 
     
    6661    def __init__( self, parent=None, preferences_file=None ): 
    6762        self.parent = parent 
    68         self.bottles = [] 
    6963        self.repositories = [] 
    7064        self.licenses = [] 
     
    9993 
    10094    def Default( self ): 
    101         self['winebinary'] = os.popen( "which wine" ).read().rstrip() 
    102         self['updateonstart'] = "1" 
     95        pass 
    10396   
    10497    def DefaultRepos ( self ): 
    105         preferences.AddRepository( "Applications", "http://www.wine-doors.org/repositories/applications.repo/" ) 
    106         preferences.AddRepository( "System Base", "http://www.wine-doors.org/repositories/base.repo/" ) 
    107         preferences.AddRepository( "Games", "http://www.wine-doors.org/repositories/games.repo/" ) 
    108         preferences.AddRepository( "Libraries and Fonts", "http://www.wine-doors.org/repositories/libraries.repo/" ) 
     98        self.AddRepository( "Applications", "http://www.wine-doors.org/repositories/applications.repo/" ) 
     99        self.AddRepository( "System Base", "http://www.wine-doors.org/repositories/base.repo/" ) 
     100        self.AddRepository( "Games", "http://www.wine-doors.org/repositories/games.repo/" ) 
     101        self.AddRepository( "Libraries and Fonts", "http://www.wine-doors.org/repositories/libraries.repo/" ) 
    109102 
    110     def AddRepository( self, name, uri, username=None, password=None ): 
    111         for item in self.repositories: 
    112             if ''.join( item[0:1] ) == name: 
    113                 index = self.repositories.index( item ) 
    114                 self.repositories[index] = [name, value, username, password] 
     103    def AddRepository( self, name, src, username=None, password=None ): 
     104        name = ''.join( name ) 
     105        src = ''.join( src ) 
     106 
     107        for index, (ename, esrc, eusername, epassword) in enumerate(self.repositories): 
     108            if ename == name: 
     109                self.repositories[index] = (name, src, username, password) 
    115110                return 
    116         self.repositories.append( [name, value, username, password]
     111        self.repositories.append( (name, src, username, password)
    117112 
    118113    # TODO  
    119114    def DelRepository( self, name ): 
    120115        pass 
     116 
     117    def Reset( self ): 
     118        self.preferences = {} 
    121119 
    122120    def Load( self ): 
     
    125123        """ 
    126124        temp_repos = [] 
    127         temp_bottles = [] 
    128         handler = ParsePreferences( self.preferences, temp_repos, temp_bottles ) 
     125        handler = ParsePreferences( self.preferences, temp_repos ) 
    129126        parser = make_parser() 
    130127        parser.setContentHandler( handler ) 
    131128        parser.parse( self.preferences_file ) 
    132129 
    133         for repo in temp_repos: 
    134             self.AddRepo( ''.join( repo[0:1] ), ''.join( repo[1:2] ), 
    135                           ''.join( repo[2:3] ), ''.join( repo[3:] ) ) 
    136  
    137         for bottle in temp_bottles: 
    138             self.AddBottle( ''.join( repo[0:1] ), ''.join( repo[1:2] ), ''.join( repo[2:] ) ) 
     130        for name, src, username, password in temp_repos: 
     131            self.AddRepository( name, src, username, password ) 
    139132 
    140133    def Save( self, preferences_file=None ): 
    141134        """ Spit out an xml file, this could do with some sanity checking, to make sure its a valid file """ 
    142         if not prefernces_file and self.preferences_file: 
     135        if not preferences_file and self.preferences_file: 
    143136            preferences_file = self.preferences_file 
    144137        elif not preferences_file and not self.preferences_file: 
     
    158151 
    159152        f.write( "  <repositories>\n" ) 
    160         for name, uri, username, password in self.repositories: 
    161             f.write( "    <repo name=\"%s\" uri=\"%s\" "
     153        for name, src, username, password in self.repositories: 
     154            f.write( "    <repository name=\"%s\" src=\"%s\" " % ( name, src )
    162155            if username: 
    163                 f.write( "username=\"%s\" password=\"%s\" />\n" % ( name, uri, username, password ) ) 
     156                f.write( "username=\"%s\" password=\"%s\" />\n" % ( username, password ) ) 
    164157            else: 
    165158                f.write( "/>\n" ) 
     
    172165    print "Unit testing: Preferences" 
    173166    print "------------------------------------------------" 
    174     preferences = Preferences() 
     167    preferences = Preferences(None, "../testing/preferences.xml") 
     168    preferences.Load() 
    175169    print "Keys/Values:" 
    176170    for key, value in preferences.preferences.iteritems(): 
     
    178172    print 
    179173    print "Repositories:" 
    180     for name, uri, username, password in preferences.repositories: 
    181         print "Repository, name: " + name + " URI: " + uri 
     174    for name, src, username, password in preferences.repositories: 
     175        print "Repository, name: " + name + " URI: " + src 
    182176    print 
    183     print "Bottles:" 
    184     for name, path, icon in preferences.bottles: 
    185         print "Bottle, name: " + name + " path: " + path 
    186     print 
    187  
    188177    print "Testing load/save:" 
    189178    print "Setting name to \"testing\"" 
     
    191180    preferences["name"] = "testing" 
    192181    preferences.Save() 
     182    preferences.Reset() 
    193183    print "Saved" 
     184    print 
    194185    print "Loading" 
    195186    preferences.Load()