Skip to content

Commit e6690c2

Browse files
slozierBCSharp
andauthored
Re-enable some tests (#1515)
* Re-enable test_hashlib * Re-enable test_grammar * Fix test_ssl.ThreadedTests.test_rude_shutdown on Mono/macOS * Fix test_timeout * Disable test_timeout on Mono * Disable failing test on macos+mono * Fix if check Co-authored-by: Pavel Koneski <pavel.koneski@gmail.com>
1 parent f67e997 commit e6690c2

6 files changed

Lines changed: 118 additions & 28 deletions

File tree

Src/IronPython.Modules/_socket.cs

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -709,22 +709,24 @@ public void setblocking(int shouldBlock) {
709709
// NOTE: The above IronPython specific timeout behavior is due to the underlying
710710
// .Net Socket.SendTimeout behavior and is outside of our control.
711711
public void settimeout(object? timeout) {
712-
try {
713-
if (timeout == null) {
714-
_socket.Blocking = true;
715-
_socket.SendTimeout = 0;
716-
} else {
717-
double seconds;
718-
seconds = Converter.ConvertToDouble(timeout);
719-
if (seconds < 0) {
720-
throw PythonOps.ValueError("Timeout value out of range");
721-
}
722-
_socket.Blocking = seconds > 0; // 0 timeout means non-blocking mode
723-
_socket.SendTimeout = (int)(seconds * MillisecondsPerSecond);
724-
_timeout = (int)(seconds * MillisecondsPerSecond);
712+
bool blocking = true;
713+
int timeoutVal = 0;
714+
if (timeout is not null) {
715+
double seconds;
716+
seconds = Converter.ConvertToDouble(timeout);
717+
if (seconds < 0) {
718+
throw PythonOps.ValueError("Timeout value out of range");
725719
}
720+
blocking = seconds > 0; // 0 timeout means non-blocking mode
721+
timeoutVal = (int)(seconds * MillisecondsPerSecond);
722+
}
723+
724+
try {
725+
_socket.Blocking = blocking;
726+
_socket.SendTimeout = timeoutVal;
726727
_socket.ReceiveTimeout = _socket.SendTimeout;
727-
} catch (ObjectDisposedException ex) {
728+
_timeout = timeoutVal;
729+
} catch (Exception ex) {
728730
throw MakeException(_context, ex);
729731
}
730732
}
@@ -1778,7 +1780,7 @@ internal static Exception MakeException(CodeContext/*!*/ context, Exception exce
17781780
}
17791781
} else if (exception is ObjectDisposedException) {
17801782
return PythonExceptions.CreateThrowable(error, PythonErrorNumber.EBADF, "Socket is closed");
1781-
} else if (exception is InvalidOperationException) {
1783+
} else if (exception is InvalidOperationException or ArgumentException) {
17821784
return MakeException(context, new SocketException((int)SocketError.InvalidArgument));
17831785
} else {
17841786
return exception;

Src/IronPython/Runtime/Exceptions/PythonExceptions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -889,7 +889,7 @@ internal static void RemoveTraceBack(this Exception e) {
889889

890890
string sourceLine = PythonContext.GetSourceLine(e);
891891
string fileName = e.GetSymbolDocumentName();
892-
object column = (e.Column == 0 || e.Data[PythonContext._syntaxErrorNoCaret] != null) ? null : (object)e.Column;
892+
int column = e.Data[PythonContext._syntaxErrorNoCaret] is not null ? 0 : e.Column;
893893

894894
se.args = PythonTuple.MakeTuple(e.Message, PythonTuple.MakeTuple(fileName, e.Line, column, sourceLine));
895895

Src/IronPythonTest/Cases/CPythonCasesManifest.ini

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -507,6 +507,9 @@ NotParallelSafe=true # Creates/deletes a directory with static name 'xx'
507507
RunCondition=NOT $(IS_POSIX) # TODO: figure out
508508
IsolationLevel=PROCESS # use app.config - https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/retargeting/4.6-4.6.2#changes-in-path-normalization
509509

510+
[CPython.test_grammar] # IronPython.test_grammar_stdlib
511+
Ignore=true
512+
510513
[CPython.test_grp]
511514
RunCondition=$(IS_POSIX)
512515
Reason=Only valid for Unix
@@ -991,7 +994,7 @@ Reason=unittest.case.SkipTest: Cant test signal on win32
991994
Ignore=true
992995

993996
[CPython.test_timeout]
994-
RunCondition=NOT $(IS_MONO) # TODO: investigate
997+
RunCondition=NOT $(IS_MONO) # https://github.com/IronLanguages/ironpython3/issues/1522
995998

996999
[CPython.test_tix] # new in 3.5
9971000
Ignore=true
@@ -1200,15 +1203,9 @@ Ignore=true # test_errors - https://github.com/IronLanguages/ironpython3/issues/
12001203
[CPython.test_global]
12011204
Ignore=true # AssertionError: 5 != 4
12021205

1203-
[CPython.test_grammar]
1204-
Ignore=true # blocked by https://github.com/IronLanguages/ironpython3/issues/98
1205-
12061206
[CPython.test_grp]
12071207
Ignore=true # 2 failures
12081208

1209-
[CPython.test_hashlib]
1210-
Ignore=true # AttributeError: 'module' object has no attribute 'shake_128'
1211-
12121209
[CPython.test_int]
12131210
Ignore=true # blocked by https://github.com/IronLanguages/ironpython3/issues/105
12141211

Src/StdLib/Lib/test/test_hashlib.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,11 @@ class HashLibTestCase(unittest.TestCase):
7575
supported_hash_names = ( 'md5', 'MD5', 'sha1', 'SHA1',
7676
'sha224', 'SHA224', 'sha256', 'SHA256',
7777
'sha384', 'SHA384', 'sha512', 'SHA512',
78-
'blake2b', 'blake2s',
79-
'sha3_224', 'sha3_256', 'sha3_384', 'sha3_512',
80-
'shake_128', 'shake_256')
78+
)
79+
# https://github.com/IronLanguages/ironpython3/issues/1429
80+
# 'blake2b', 'blake2s',
81+
# 'sha3_224', 'sha3_256', 'sha3_384', 'sha3_512',
82+
# 'shake_128', 'shake_256')
8183

8284
shakes = {'shake_128', 'shake_256'}
8385

Tests/test_grammar_stdlib.py

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
# Licensed to the .NET Foundation under one or more agreements.
2+
# The .NET Foundation licenses this file to you under the Apache 2.0 License.
3+
# See the LICENSE file in the project root for more information.
4+
5+
##
6+
## Run selected tests from test_grammar from StdLib
7+
##
8+
9+
import unittest
10+
import sys
11+
12+
from iptest import run_test
13+
14+
import test.test_grammar
15+
16+
def load_tests(loader, standard_tests, pattern):
17+
if sys.implementation.name == 'ironpython':
18+
suite = unittest.TestSuite()
19+
suite.addTest(test.test_grammar.GrammarTests('testAssert2'))
20+
suite.addTest(test.test_grammar.GrammarTests('test_additive_ops'))
21+
suite.addTest(test.test_grammar.GrammarTests('test_assert'))
22+
suite.addTest(test.test_grammar.GrammarTests('test_atoms'))
23+
suite.addTest(test.test_grammar.GrammarTests('test_binary_mask_ops'))
24+
suite.addTest(test.test_grammar.GrammarTests('test_break_continue_loop'))
25+
suite.addTest(test.test_grammar.GrammarTests('test_break_in_finally'))
26+
suite.addTest(test.test_grammar.GrammarTests('test_break_stmt'))
27+
suite.addTest(test.test_grammar.GrammarTests('test_classdef'))
28+
suite.addTest(test.test_grammar.GrammarTests('test_comparison'))
29+
suite.addTest(test.test_grammar.GrammarTests('test_comprehension_specials'))
30+
suite.addTest(test.test_grammar.GrammarTests('test_continue_stmt'))
31+
suite.addTest(test.test_grammar.GrammarTests('test_del_stmt'))
32+
suite.addTest(test.test_grammar.GrammarTests('test_dictcomps'))
33+
suite.addTest(test.test_grammar.GrammarTests('test_eval_input'))
34+
suite.addTest(test.test_grammar.GrammarTests('test_expr_stmt'))
35+
suite.addTest(test.test_grammar.GrammarTests('test_for'))
36+
suite.addTest(test.test_grammar.GrammarTests('test_former_statements_refer_to_builtins'))
37+
suite.addTest(test.test_grammar.GrammarTests('test_funcdef'))
38+
suite.addTest(test.test_grammar.GrammarTests('test_genexps'))
39+
suite.addTest(test.test_grammar.GrammarTests('test_global'))
40+
suite.addTest(test.test_grammar.GrammarTests('test_if'))
41+
suite.addTest(test.test_grammar.GrammarTests('test_if_else_expr'))
42+
suite.addTest(test.test_grammar.GrammarTests('test_import'))
43+
suite.addTest(test.test_grammar.GrammarTests('test_lambdef'))
44+
suite.addTest(test.test_grammar.GrammarTests('test_listcomps'))
45+
suite.addTest(test.test_grammar.GrammarTests('test_matrix_mul'))
46+
suite.addTest(test.test_grammar.GrammarTests('test_multiplicative_ops'))
47+
suite.addTest(test.test_grammar.GrammarTests('test_nonlocal'))
48+
suite.addTest(test.test_grammar.GrammarTests('test_paren_evaluation'))
49+
suite.addTest(test.test_grammar.GrammarTests('test_pass_stmt'))
50+
suite.addTest(test.test_grammar.GrammarTests('test_raise'))
51+
suite.addTest(test.test_grammar.GrammarTests('test_return'))
52+
suite.addTest(test.test_grammar.GrammarTests('test_return_in_finally'))
53+
suite.addTest(test.test_grammar.GrammarTests('test_selectors'))
54+
suite.addTest(test.test_grammar.GrammarTests('test_shift_ops'))
55+
suite.addTest(test.test_grammar.GrammarTests('test_simple_stmt'))
56+
suite.addTest(test.test_grammar.GrammarTests('test_suite'))
57+
suite.addTest(test.test_grammar.GrammarTests('test_test'))
58+
suite.addTest(test.test_grammar.GrammarTests('test_try'))
59+
suite.addTest(test.test_grammar.GrammarTests('test_unary_ops'))
60+
suite.addTest(unittest.expectedFailure(test.test_grammar.GrammarTests('test_var_annot_basic_semantics'))) # https://github.com/IronLanguages/ironpython3/issues/106
61+
suite.addTest(test.test_grammar.GrammarTests('test_var_annot_basics'))
62+
suite.addTest(unittest.expectedFailure(test.test_grammar.GrammarTests('test_var_annot_custom_maps'))) # https://github.com/IronLanguages/ironpython3/issues/106
63+
suite.addTest(test.test_grammar.GrammarTests('test_var_annot_in_module'))
64+
suite.addTest(unittest.expectedFailure(test.test_grammar.GrammarTests('test_var_annot_metaclass_semantics'))) # https://github.com/IronLanguages/ironpython3/issues/106
65+
suite.addTest(unittest.expectedFailure(test.test_grammar.GrammarTests('test_var_annot_module_semantics'))) # https://github.com/IronLanguages/ironpython3/issues/106
66+
suite.addTest(unittest.expectedFailure(test.test_grammar.GrammarTests('test_var_annot_refleak'))) # https://github.com/IronLanguages/ironpython3/issues/106
67+
suite.addTest(unittest.expectedFailure(test.test_grammar.GrammarTests('test_var_annot_simple_exec'))) # https://github.com/IronLanguages/ironpython3/issues/106
68+
suite.addTest(unittest.expectedFailure(test.test_grammar.GrammarTests('test_var_annot_syntax_errors'))) # https://github.com/IronLanguages/ironpython3/issues/106
69+
suite.addTest(test.test_grammar.GrammarTests('test_while'))
70+
suite.addTest(test.test_grammar.GrammarTests('test_with_statement'))
71+
suite.addTest(unittest.expectedFailure(test.test_grammar.GrammarTests('test_yield'))) # NotImplementedError: The method or operation is not implemented.
72+
suite.addTest(test.test_grammar.TokenTests('test_backslash'))
73+
suite.addTest(test.test_grammar.TokenTests('test_ellipsis'))
74+
suite.addTest(test.test_grammar.TokenTests('test_eof_error'))
75+
suite.addTest(test.test_grammar.TokenTests('test_float_exponent_tokenization'))
76+
suite.addTest(test.test_grammar.TokenTests('test_floats'))
77+
suite.addTest(test.test_grammar.TokenTests('test_long_integers'))
78+
suite.addTest(test.test_grammar.TokenTests('test_plain_integers'))
79+
suite.addTest(test.test_grammar.TokenTests('test_string_literals'))
80+
suite.addTest(unittest.expectedFailure(test.test_grammar.TokenTests('test_underscore_literals'))) # https://github.com/IronLanguages/ironpython3/issues/105
81+
return suite
82+
83+
else:
84+
return loader.loadTestsFromModule(test.test_grammar, pattern)
85+
86+
run_test(__name__)

Tests/test_httplib_stdlib.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import unittest
1010
import sys
1111

12-
from iptest import run_test
12+
from iptest import is_mono, is_osx, run_test
1313

1414
import test.test_httplib
1515

@@ -87,7 +87,10 @@ def load_tests(loader, standard_tests, pattern):
8787
#suite.addTest(test.test_httplib.HTTPSTest('test_local_unknown_cert')) # StackOverflowException
8888
suite.addTest(unittest.expectedFailure(test.test_httplib.HTTPSTest('test_networked'))) # AttributeError: 'SSLError' object has no attribute 'reason'
8989
suite.addTest(unittest.expectedFailure(test.test_httplib.HTTPSTest('test_networked_bad_cert'))) # AttributeError: 'SSLError' object has no attribute 'reason'
90-
suite.addTest(test.test_httplib.HTTPSTest('test_networked_good_cert'))
90+
if is_mono and is_osx:
91+
suite.addTest(unittest.expectedFailure(test.test_httplib.HTTPSTest('test_networked_good_cert'))) # https://github.com/IronLanguages/ironpython3/issues/1523
92+
else:
93+
suite.addTest(test.test_httplib.HTTPSTest('test_networked_good_cert'))
9194
suite.addTest(test.test_httplib.HTTPSTest('test_networked_noverification'))
9295
suite.addTest(test.test_httplib.HTTPSTest('test_networked_trusted_by_default_cert'))
9396
suite.addTest(test.test_httplib.HeaderTests('test_auto_headers'))

0 commit comments

Comments
 (0)