Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 1d96a95

Browse files
committed
TST: disable tests that fail due to bad alignment on sparc
(debian) sparc system malloc does not provide the alignment required by 16 byte long double types this means the inout intent cannot be satisfied and several tests fail as the alignment flag can be randomly true or fals when numpy gains an aligned allocator the tests could be enabled again.
1 parent 9bdd5d4 commit 1d96a95

2 files changed

Lines changed: 54 additions & 36 deletions

File tree

numpy/core/tests/test_numeric.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from decimal import Decimal
66
import warnings
77
import itertools
8+
import platform
89

910
import numpy as np
1011
from numpy.core import *
@@ -1049,7 +1050,15 @@ def test_array_equiv(self):
10491050
def assert_array_strict_equal(x, y):
10501051
assert_array_equal(x, y)
10511052
# Check flags
1052-
assert_(x.flags == y.flags)
1053+
if 'sparc' not in platform.platform().lower():
1054+
assert_(x.flags == y.flags)
1055+
else:
1056+
# sparc arrays may not be aligned for long double types
1057+
assert_(x.flags.owndata == y.flags.owndata)
1058+
assert_(x.flags.writeable == y.flags.writeable)
1059+
assert_(x.flags.c_contiguous == y.flags.c_contiguous)
1060+
assert_(x.flags.f_contiguous == y.flags.f_contiguous)
1061+
assert_(x.flags.updateifcopy == y.flags.updateifcopy)
10531062
# check endianness
10541063
assert_(x.dtype.isnative == y.dtype.isnative)
10551064

numpy/f2py/tests/test_array_from_pyobj.py

Lines changed: 44 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import os
55
import sys
66
import copy
7+
import platform
78

89
import nose
910

@@ -81,37 +82,45 @@ def is_intent_exact(self,*names):
8182

8283
intent = Intent()
8384

84-
class Type(object):
85-
_type_names = ['BOOL', 'BYTE', 'UBYTE', 'SHORT', 'USHORT', 'INT', 'UINT',
86-
'LONG', 'ULONG', 'LONGLONG', 'ULONGLONG',
87-
'FLOAT', 'DOUBLE', 'LONGDOUBLE', 'CFLOAT', 'CDOUBLE',
88-
'CLONGDOUBLE']
89-
_type_cache = {}
90-
91-
_cast_dict = {'BOOL':['BOOL']}
92-
_cast_dict['BYTE'] = _cast_dict['BOOL'] + ['BYTE']
93-
_cast_dict['UBYTE'] = _cast_dict['BOOL'] + ['UBYTE']
94-
_cast_dict['BYTE'] = ['BYTE']
95-
_cast_dict['UBYTE'] = ['UBYTE']
96-
_cast_dict['SHORT'] = _cast_dict['BYTE'] + ['UBYTE', 'SHORT']
97-
_cast_dict['USHORT'] = _cast_dict['UBYTE'] + ['BYTE', 'USHORT']
98-
_cast_dict['INT'] = _cast_dict['SHORT'] + ['USHORT', 'INT']
99-
_cast_dict['UINT'] = _cast_dict['USHORT'] + ['SHORT', 'UINT']
100-
101-
_cast_dict['LONG'] = _cast_dict['INT'] + ['LONG']
102-
_cast_dict['ULONG'] = _cast_dict['UINT'] + ['ULONG']
103-
104-
_cast_dict['LONGLONG'] = _cast_dict['LONG'] + ['LONGLONG']
105-
_cast_dict['ULONGLONG'] = _cast_dict['ULONG'] + ['ULONGLONG']
106-
107-
_cast_dict['FLOAT'] = _cast_dict['SHORT'] + ['USHORT', 'FLOAT']
108-
_cast_dict['DOUBLE'] = _cast_dict['INT'] + ['UINT', 'FLOAT', 'DOUBLE']
109-
_cast_dict['LONGDOUBLE'] = _cast_dict['LONG'] + ['ULONG', 'FLOAT', 'DOUBLE', 'LONGDOUBLE']
110-
111-
_cast_dict['CFLOAT'] = _cast_dict['FLOAT'] + ['CFLOAT']
85+
_type_names = ['BOOL', 'BYTE', 'UBYTE', 'SHORT', 'USHORT', 'INT', 'UINT',
86+
'LONG', 'ULONG', 'LONGLONG', 'ULONGLONG',
87+
'FLOAT', 'DOUBLE', 'CFLOAT']
88+
89+
_cast_dict = {'BOOL':['BOOL']}
90+
_cast_dict['BYTE'] = _cast_dict['BOOL'] + ['BYTE']
91+
_cast_dict['UBYTE'] = _cast_dict['BOOL'] + ['UBYTE']
92+
_cast_dict['BYTE'] = ['BYTE']
93+
_cast_dict['UBYTE'] = ['UBYTE']
94+
_cast_dict['SHORT'] = _cast_dict['BYTE'] + ['UBYTE', 'SHORT']
95+
_cast_dict['USHORT'] = _cast_dict['UBYTE'] + ['BYTE', 'USHORT']
96+
_cast_dict['INT'] = _cast_dict['SHORT'] + ['USHORT', 'INT']
97+
_cast_dict['UINT'] = _cast_dict['USHORT'] + ['SHORT', 'UINT']
98+
99+
_cast_dict['LONG'] = _cast_dict['INT'] + ['LONG']
100+
_cast_dict['ULONG'] = _cast_dict['UINT'] + ['ULONG']
101+
102+
_cast_dict['LONGLONG'] = _cast_dict['LONG'] + ['LONGLONG']
103+
_cast_dict['ULONGLONG'] = _cast_dict['ULONG'] + ['ULONGLONG']
104+
105+
_cast_dict['FLOAT'] = _cast_dict['SHORT'] + ['USHORT', 'FLOAT']
106+
_cast_dict['DOUBLE'] = _cast_dict['INT'] + ['UINT', 'FLOAT', 'DOUBLE']
107+
108+
_cast_dict['CFLOAT'] = _cast_dict['FLOAT'] + ['CFLOAT']
109+
110+
# (debian) sparc system malloc does not provide the alignment required by
111+
# 16 byte long double types this means the inout intent cannot be satisfied and
112+
# several tests fail as the alignment flag can be randomly true or fals
113+
# when numpy gains an aligned allocator the tests could be enabled again
114+
if 'sparc' not in platform.platform().lower():
115+
_type_names.extend(['LONGDOUBLE', 'CDOUBLE', 'CLONGDOUBLE'])
116+
_cast_dict['LONGDOUBLE'] = _cast_dict['LONG'] + \
117+
['ULONG', 'FLOAT', 'DOUBLE', 'LONGDOUBLE']
118+
_cast_dict['CLONGDOUBLE'] = _cast_dict['LONGDOUBLE'] + \
119+
['CFLOAT', 'CDOUBLE', 'CLONGDOUBLE']
112120
_cast_dict['CDOUBLE'] = _cast_dict['DOUBLE'] + ['CFLOAT', 'CDOUBLE']
113-
_cast_dict['CLONGDOUBLE'] = _cast_dict['LONGDOUBLE'] + ['CFLOAT', 'CDOUBLE', 'CLONGDOUBLE']
114121

122+
class Type(object):
123+
_type_cache = {}
115124

116125
def __new__(cls, name):
117126
if isinstance(name, dtype):
@@ -138,23 +147,23 @@ def _init(self, name):
138147
self.dtypechar = typeinfo[self.NAME][0]
139148

140149
def cast_types(self):
141-
return [self.__class__(_m) for _m in self._cast_dict[self.NAME]]
150+
return [self.__class__(_m) for _m in _cast_dict[self.NAME]]
142151

143152
def all_types(self):
144-
return [self.__class__(_m) for _m in self._type_names]
153+
return [self.__class__(_m) for _m in _type_names]
145154

146155
def smaller_types(self):
147156
bits = typeinfo[self.NAME][3]
148157
types = []
149-
for name in self._type_names:
158+
for name in _type_names:
150159
if typeinfo[name][3]<bits:
151160
types.append(Type(name))
152161
return types
153162

154163
def equal_types(self):
155164
bits = typeinfo[self.NAME][3]
156165
types = []
157-
for name in self._type_names:
166+
for name in _type_names:
158167
if name==self.NAME: continue
159168
if typeinfo[name][3]==bits:
160169
types.append(Type(name))
@@ -163,7 +172,7 @@ def equal_types(self):
163172
def larger_types(self):
164173
bits = typeinfo[self.NAME][3]
165174
types = []
166-
for name in self._type_names:
175+
for name in _type_names:
167176
if typeinfo[name][3]>bits:
168177
types.append(Type(name))
169178
return types
@@ -532,7 +541,7 @@ def test_inplace_from_casttype(self):
532541
assert_(obj.dtype.type is self.type.dtype) # obj type is changed inplace!
533542

534543

535-
for t in Type._type_names:
544+
for t in _type_names:
536545
exec('''\
537546
class test_%s_gen(unittest.TestCase,
538547
_test_shared_memory

0 commit comments

Comments
 (0)