/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/config.py

  • Committer: Vincent Ladeuil
  • Date: 2011-06-20 13:58:54 UTC
  • mto: This revision was merged to the branch mainline in revision 5989.
  • Revision ID: v.ladeuil+lp@free.fr-20110620135854-venf3fbpk7ggqbc9
Proper error messages for config files with content in non-utf encoding or that cannot be parsed

Show diffs side-by-side

added added

removed removed

Lines of Context:
692
692
            self._parser = ConfigObj(co_input, encoding='utf-8')
693
693
        except configobj.ConfigObjError, e:
694
694
            raise errors.ParseConfigError(e.errors, e.config.filename)
 
695
        except UnicodeDecodeError:
 
696
            raise errors.ConfigContentError(self.file_name)
695
697
        # Make sure self.reload() will use the right file name
696
698
        self._parser.filename = self.file_name
697
699
        for hook in OldConfigHooks['load']:
1697
1699
            self._config = ConfigObj(self._input, encoding='utf-8')
1698
1700
        except configobj.ConfigObjError, e:
1699
1701
            raise errors.ParseConfigError(e.errors, e.config.filename)
1700
 
        except UnicodeError, e:
 
1702
        except UnicodeError:
1701
1703
            raise errors.ConfigContentError(self._filename)
1702
1704
        return self._config
1703
1705
 
2180
2182
        except errors.NoSuchFile:
2181
2183
            return StringIO()
2182
2184
 
 
2185
    def _external_url(self):
 
2186
        return urlutils.join(self._transport.external_url(), self._filename)
 
2187
 
2183
2188
    def _get_configobj(self):
2184
2189
        f = self._get_config_file()
2185
2190
        try:
2186
 
            return ConfigObj(f, encoding='utf-8')
 
2191
            try:
 
2192
                conf = ConfigObj(f, encoding='utf-8')
 
2193
            except configobj.ConfigObjError, e:
 
2194
                raise errors.ParseConfigError(e.errors, self._external_url())
 
2195
            except UnicodeDecodeError:
 
2196
                raise errors.ConfigContentError(self._external_url())
2187
2197
        finally:
2188
2198
            f.close()
 
2199
        return conf
2189
2200
 
2190
2201
    def _set_configobj(self, configobj):
2191
2202
        out_file = StringIO()
2387
2398
        except configobj.ConfigObjError, e:
2388
2399
            self._config_obj = None
2389
2400
            raise errors.ParseConfigError(e.errors, self.external_url())
 
2401
        except UnicodeDecodeError:
 
2402
            raise errors.ConfigContentError(self.external_url())
2390
2403
 
2391
2404
    def save(self):
2392
2405
        if not self.is_loaded():