[Python-Dev] Std test failures on WIndows: test_compare, test_minidom

Neil Schemenauer nas@arctrix.com
Tue, 2 Jan 2001 08:51:48 -0800


On Tue, Jan 02, 2001 at 06:19:14PM -0500, Tim Peters wrote:
> Neil, my platform doesn't even *have* a "make": are you saying the test
> passes for you when you run regrtest.py?

Yes. Isn't checking in code without running regrtest a capital
offence? :)
> Lang Ref 2.1.3 (Comparisons) says you can compare them, and
> guarantees they won't compare equal, but doesn't define it beyond that.

Okay, I'll use == rather than cmp(). When I was working on the coercion
patch I found cmp() useful. I guess it shouldn't be in the standard
test suite, especially since Jython may implement things differently.
[Neil]
> or, do you think that the results from cmp() should be clamped
> between -1 and 1?

[Tim]
> Not that either <wink>; cmp() isn't documented that way.
>> They're "bizarre" simply because they're not what Python returns!

They do on my box:
 Python 2.0 (#19, Nov 21 2000, 18:13:04) 
 [GCC 2.95.2 20000220 (Debian GNU/Linux)] on linux2
 Type "copyright", "credits" or "license" for more information.
 >>> cmp(1, None)
 -78
I guess MS uses a different strcmp than GNU. Do you mind trying the
attached C code? I get "-78" as output. I should have thought a little
more before checking in the patch. -78 is quite obviously a
machine/library dependent thing.
[Tim again]
> One of us is missing something obvious here <wink>.

I don't know about that. The implementation of coercion and comparison
is not simple. I've been studying it for some time now and I obviously
still don't know what the hell is going on.
AFAICT, the problem is that instances without a comparison method can
compare larger or smaller than numbers depending on where in memory the
objects are stored.
 Neil
#include <stdio.h>
#include <string.h>
int main()
{
 printf("%d\n", strcmp("", "None"));
}

AltStyle によって変換されたページ (->オリジナル) /