monotone-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Monotone-devel] Updated Issue 97 - test diff_on_missing_trailing_newlin


From: code
Subject: [Monotone-devel] Updated Issue 97 - test diff_on_missing_trailing_newline_at_end_of_file fails on Cygwin (monotone)
Date: Thu, 28 Oct 2010 00:51:48 GMT

Hello,

The following issue has been updated:

97 - test diff_on_missing_trailing_newline_at_end_of_file fails on Cygwin
Project: monotone
Status: New
Reported by: Stephen Leake
URL: http://code.monotone.ca/p/monotone/issues/97/
Labels:
 Type:Defect
 Priority:Critical

Comments (last first):

# By Stephen Leake, Oct 28, 2010:

> How can "attrs can be set after a commit"?

'mtn attr set'

> Or, more precisely, how's that different from "file contents can be
> changed after a commit"?

I thought it was; apparently I'm wrong.

> Attributes are part of the manifest and thus of course part of the
> revision hash. Do you propose to change this?

No, I was just wrong; attrs are part of the revision hash.

This is discussed in monotone.info; I've just missed it before now.

So the issue resolves to ensuring that attrs are consistently applied
within a project, and specifically for this and other tests.

There is no way to make an automatic execute attr detector get the
'right' answer on all platforms (because there is no 'right' answer), so
that's not a solution for this test. Thus the issue of the execute attr
being set incorrectly on Cygwin (and other platforms) is a separate
issue; I'll file a separate bug report for that.

The attr_init_functions I provide below is a reasonable solution for
this bug. It should be in test_hooks.lua, so all the tests
benefit from it.

We should do the same for attr_init_functions["mtn:manual_merge"], so
future changes to that don't break tests.

Those are the only attr_init_functions in std_hooks.lua

# By Richard Levitte, Oct 27, 2010:

Further analysis shows that, in fact, Cygwin is regarded as unix by 
configure.ac.  This is probably normally a good thing, since it tries to 
emulate unix...  but when it comes to is_executable, maybe that's not the best 
idea.

So we have a choice.  Either add *-pc-cygwin in the case that catches Win32 
platforms in configure.ac, or make is_executable in unix/process.cc a special 
case for Cygwin.

# By Richard Levitte, Oct 27, 2010:

Looking at the source, I'd say that the problem lies in the added lua routine 
called is_executable().  The actual function that implements that routine can 
be found in unix/process.cc and win32/process.cc.  win32/process.cc does 
nothing (it just returns false), while unix/process.cc does what's sensible for 
Unix.

So, the question in the end is, which of those two does Cygwin use?  I'm 
guessing it uses unix/process.cc.  Doesn't seem to be the right thing to do, 
but I don't know enough about Cygwin to have an opinion, all I wanted was to 
point at where the problem should be.

# By Thomas Moschny, Oct 27, 2010:

How can "attrs can be set after a commit"?

Or, more precisely, how's that different from "file contents can be changed 
after a commit"?

Attributes are part of the manifest and thus of course part of the revision 
hash. Do you propose to change this?

# By Stephen Leake, Oct 27, 2010:

this test is also broken in the same way in version 0.48.

overriding the execute attr init function lets the test pass in 
8f507884dab9bab6b439cec51f6adc6d006d3e66:

attr_init_functions["mtn:execute"] =
   function(filename)
        return nil
   end

# By Stephen Leake, Oct 27, 2010:

Steps to reproduce the problem:
-------------------------------

1. checkout nvm.monotone rev 8f507884dab9bab6b439cec51f6adc6d006d3e66
2. configure for Cygwin
3. run test 

Expected result:
----------------
pass

Actual results:
---------------
fail on line 39

The immediate cause of failure is that the revid for the commit is different 
from the expected:

stdout:
#
# old_revision [b0598d59ea7c3b8b4a6f27e5ac80c1337c33f1c3]
#

file13.diff:
#
# old_revision [40ea110392539e19c2d251569a3610c0051e0c64]
#

This may be caused by Cygwin setting the executable attribute, while MinGW and 
Debian do not:

cygwin:
$../../../mtn.exe au get_manifest_of 
format_version "1"

dir ""

   file "file1"
content [a43dc27b1c92cccc533ceb3a27035128e26e5b07]
   attr "mtn:execute" "true"

   file "file2"
content [4f8091d2fa31b0598dd0ff6dc936f8d0b47b59d1]
   attr "mtn:execute" "true"


mingw:
../../../mtn.exe au get_manifest_of 
format_version "1"

dir ""

   file "file1"
content [a43dc27b1c92cccc533ceb3a27035128e26e5b07]

   file "file2"
content [4f8091d2fa31b0598dd0ff6dc936f8d0b47b59d1]

But that should not affect the revid; attrs can be set after a commit, so they 
should not change the revid.

Output of `mtn version --full`:
-------------------------------



--
Issue: http://code.monotone.ca/p/monotone/issues/97/



reply via email to

[Prev in Thread] Current Thread [Next in Thread]