Alexander Belchenko wrote:
> > When I'm testing the recent patch from Lukas I found that almost
> > ALL blackbox non-ascii tests are failed with the same error KeyError:
...
> > File "C:\work\Bazaar\mydev\bzr.dev\bzrlib\dirstate.py", line 1231, in
> > get_lines
> > lines.extend(map(self._entry_to_line, self._iter_entries()))
> > File "C:\work\Bazaar\mydev\bzr.dev\bzrlib\dirstate.py", line 1000, in
> > _entry_to_line
> > entire_entry[tree_offset + 3] = DirState._to_yesno[tree_data[3]]
> > KeyError: None
> >
> > ----------------------------------------------------------------------
> >
> >
> > I'll try to run full selftest ASAP, but it seems that there is a BIG
> > regression on win32, either in bzrlib or tests.
> >
> > Alexander
It looks like something is setting "executable = None" rather than "executable
= True" or "executable = False".
Just to check, do you get the same result if you run "bzr selftest --no-plugins
..." ?
Otherwise I don't see how it is happening. When we "Dirstate.add()" we set the
executable field to False. And on win32 when we update_entry we use:
Does that fix the problem? I'm not sure why inv_entry.executable isn't being
set. Maybe we removed one of the "_read_state_from_tree()" calls, or something
else that was supposed to set it.
Analysis of problem from John:
Alexander Belchenko wrote:
> > When I'm testing the recent patch from Lukas I found that almost
> > ALL blackbox non-ascii tests are failed with the same error KeyError:
...
> > File "C:\work\ Bazaar\ mydev\bzr. dev\bzrlib\ dirstate. py", line 1231, in map(self. _entry_ to_line, self._iter_ entries( ))) Bazaar\ mydev\bzr. dev\bzrlib\ dirstate. py", line 1000, in entry[tree_ offset + 3] = DirState. _to_yesno[ tree_data[ 3]] ------- ------- ------- ------- ------- ------- ------- ------- -------
> > get_lines
> > lines.extend(
> > File "C:\work\
> > _entry_to_line
> > entire_
> > KeyError: None
> >
> > -------
> >
> >
> > I'll try to run full selftest ASAP, but it seems that there is a BIG
> > regression on win32, either in bzrlib or tests.
> >
> > Alexander
It looks like something is setting "executable = None" rather than "executable
= True" or "executable = False".
Just to check, do you get the same result if you run "bzr selftest --no-plugins
..." ?
Otherwise I don't see how it is happening. When we "Dirstate.add()" we set the
executable field to False. And on win32 when we update_entry we use:
def _is_executable_ win32(self, mode, saved_executable):
return saved_executable
I agree that this seems like a serious regression, I just don't quite
understand what is causing tree_data[3] to be set to None.
Ah.... maybe this one:
def _inv_entry_ to_details( self, inv_entry):
fingerprin t = inv_entry.text_sha1 or ''
executable = inv_entry. executable
...
elif kind == 'file':
size = inv_entry.text_size or 0
We could try:
executable = inv_entry. executable or False
Does that fix the problem? I'm not sure why inv_entry. executable isn't being state_from_ tree()" calls, or something
set. Maybe we removed one of the "_read_
else that was supposed to set it.
Can you investigate further?
John
=:->