tests/basic: Split tests into working with small ints and not working.
Tests which don't work with small ints are suffixed with _intbig.py. Some of these may still work with long long ints and need to be reclassified later.
This commit is contained in:
parent
89e570a5b4
commit
3ab6aa3a6d
|
@ -4,11 +4,3 @@ print(abs(False))
|
||||||
print(abs(True))
|
print(abs(True))
|
||||||
print(abs(1))
|
print(abs(1))
|
||||||
print(abs(-1))
|
print(abs(-1))
|
||||||
|
|
||||||
# bignum
|
|
||||||
print(abs(123456789012345678901234567890))
|
|
||||||
print(abs(-123456789012345678901234567890))
|
|
||||||
|
|
||||||
# edge cases for 32 and 64 bit archs (small int overflow when negating)
|
|
||||||
print(abs(-0x3fffffff - 1))
|
|
||||||
print(abs(-0x3fffffffffffffff - 1))
|
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
# test builtin abs
|
||||||
|
|
||||||
|
# bignum
|
||||||
|
print(abs(123456789012345678901234567890))
|
||||||
|
print(abs(-123456789012345678901234567890))
|
||||||
|
|
||||||
|
# edge cases for 32 and 64 bit archs (small int overflow when negating)
|
||||||
|
print(abs(-0x3fffffff - 1))
|
||||||
|
print(abs(-0x3fffffffffffffff - 1))
|
|
@ -8,5 +8,4 @@ print(bin(-15))
|
||||||
print(bin(12345))
|
print(bin(12345))
|
||||||
print(bin(0b10101))
|
print(bin(0b10101))
|
||||||
|
|
||||||
print(bin(12345678901234567890))
|
|
||||||
print(bin(0b10101010101010101010))
|
print(bin(0b10101010101010101010))
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
# test builtin bin function
|
||||||
|
|
||||||
|
print(bin(12345678901234567890))
|
|
@ -9,19 +9,7 @@ try:
|
||||||
except ZeroDivisionError:
|
except ZeroDivisionError:
|
||||||
print("ZeroDivisionError")
|
print("ZeroDivisionError")
|
||||||
|
|
||||||
try:
|
|
||||||
divmod(1 << 65, 0)
|
|
||||||
except ZeroDivisionError:
|
|
||||||
print("ZeroDivisionError")
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
divmod('a', 'b')
|
divmod('a', 'b')
|
||||||
except TypeError:
|
except TypeError:
|
||||||
print("TypeError")
|
print("TypeError")
|
||||||
|
|
||||||
# bignum
|
|
||||||
l = (1 << 65) + 123
|
|
||||||
print(divmod(3, l))
|
|
||||||
print(divmod(l, 5))
|
|
||||||
print(divmod(l + 3, l))
|
|
||||||
print(divmod(l * 20, l + 2))
|
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
# test builtin divmod
|
||||||
|
|
||||||
|
try:
|
||||||
|
divmod(1 << 65, 0)
|
||||||
|
except ZeroDivisionError:
|
||||||
|
print("ZeroDivisionError")
|
||||||
|
|
||||||
|
# bignum
|
||||||
|
l = (1 << 65) + 123
|
||||||
|
print(divmod(3, l))
|
||||||
|
print(divmod(l, 5))
|
||||||
|
print(divmod(l + 3, l))
|
||||||
|
print(divmod(l * 20, l + 2))
|
|
@ -4,8 +4,6 @@ print(hash(False))
|
||||||
print(hash(True))
|
print(hash(True))
|
||||||
print({():1}) # hash tuple
|
print({():1}) # hash tuple
|
||||||
print({(1,):1}) # hash non-empty tuple
|
print({(1,):1}) # hash non-empty tuple
|
||||||
print({1 << 66:1}) # hash big int
|
|
||||||
print({-(1 << 66):2}) # hash negative big int
|
|
||||||
print(hash in {hash:1}) # hash function
|
print(hash in {hash:1}) # hash function
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -50,9 +48,3 @@ class E:
|
||||||
def __hash__(self):
|
def __hash__(self):
|
||||||
return True
|
return True
|
||||||
print(hash(E()))
|
print(hash(E()))
|
||||||
|
|
||||||
# __hash__ returning a large number should be truncated
|
|
||||||
class F:
|
|
||||||
def __hash__(self):
|
|
||||||
return 1 << 70 | 1
|
|
||||||
print(hash(F()) != 0)
|
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
# test builtin hash function
|
||||||
|
|
||||||
|
print({1 << 66:1}) # hash big int
|
||||||
|
print({-(1 << 66):2}) # hash negative big int
|
||||||
|
|
||||||
|
# __hash__ returning a large number should be truncated
|
||||||
|
class F:
|
||||||
|
def __hash__(self):
|
||||||
|
return 1 << 70 | 1
|
||||||
|
print(hash(F()) != 0)
|
|
@ -7,6 +7,3 @@ print(hex(-15))
|
||||||
|
|
||||||
print(hex(12345))
|
print(hex(12345))
|
||||||
print(hex(0x12345))
|
print(hex(0x12345))
|
||||||
|
|
||||||
print(hex(12345678901234567890))
|
|
||||||
print(hex(0x12345678901234567890))
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
# test builtin hex function
|
||||||
|
|
||||||
|
print(hex(12345678901234567890))
|
||||||
|
print(hex(0x12345678901234567890))
|
|
@ -7,6 +7,3 @@ print(oct(-15))
|
||||||
|
|
||||||
print(oct(12345))
|
print(oct(12345))
|
||||||
print(oct(0o12345))
|
print(oct(0o12345))
|
||||||
|
|
||||||
print(oct(12345678901234567890))
|
|
||||||
print(oct(0o12345670123456701234))
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
# test builtin oct function
|
||||||
|
|
||||||
|
print(oct(12345678901234567890))
|
||||||
|
print(oct(0o12345670123456701234))
|
|
@ -8,8 +8,6 @@ except NotImplementedError:
|
||||||
print("SKIP")
|
print("SKIP")
|
||||||
sys.exit()
|
sys.exit()
|
||||||
|
|
||||||
print(pow(555557, 1000002, 1000003))
|
|
||||||
|
|
||||||
# 3 arg pow is defined to only work on integers
|
# 3 arg pow is defined to only work on integers
|
||||||
try:
|
try:
|
||||||
print(pow("x", 5, 6))
|
print(pow("x", 5, 6))
|
||||||
|
@ -25,15 +23,3 @@ try:
|
||||||
print(pow(4, 5, "z"))
|
print(pow(4, 5, "z"))
|
||||||
except TypeError:
|
except TypeError:
|
||||||
print("TypeError expected")
|
print("TypeError expected")
|
||||||
|
|
||||||
# Tests for 3 arg pow with large values
|
|
||||||
|
|
||||||
# This value happens to be prime
|
|
||||||
x = 0xd48a1e2a099b1395895527112937a391d02d4a208bce5d74b281cf35a57362502726f79a632f063a83c0eba66196712d963aa7279ab8a504110a668c0fc38a7983c51e6ee7a85cae87097686ccdc359ee4bbf2c583bce524e3f7836bded1c771a4efcb25c09460a862fc98e18f7303df46aaeb34da46b0c4d61d5cd78350f3edb60e6bc4befa712a849
|
|
||||||
y = 0x3accf60bb1a5365e4250d1588eb0fe6cd81ad495e9063f90880229f2a625e98c59387238670936afb2cafc5b79448e4414d6cd5e9901aa845aa122db58ddd7b9f2b17414600a18c47494ed1f3d49d005a5
|
|
||||||
|
|
||||||
print(hex(pow(2, 200, x))) # Should not overflow, just 1 << 200
|
|
||||||
print(hex(pow(2, x-1, x))) # Should be 1, since x is prime
|
|
||||||
print(hex(pow(y, x-1, x))) # Should be 1, since x is prime
|
|
||||||
print(hex(pow(y, y-1, x))) # Should be a 'big value'
|
|
||||||
print(hex(pow(y, y-1, y))) # Should be a 'big value'
|
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
# test builtin pow() with integral values
|
||||||
|
# 3 arg version
|
||||||
|
|
||||||
|
try:
|
||||||
|
print(pow(3, 4, 7))
|
||||||
|
except NotImplementedError:
|
||||||
|
import sys
|
||||||
|
print("SKIP")
|
||||||
|
sys.exit()
|
||||||
|
|
||||||
|
print(pow(555557, 1000002, 1000003))
|
||||||
|
|
||||||
|
# Tests for 3 arg pow with large values
|
||||||
|
|
||||||
|
# This value happens to be prime
|
||||||
|
x = 0xd48a1e2a099b1395895527112937a391d02d4a208bce5d74b281cf35a57362502726f79a632f063a83c0eba66196712d963aa7279ab8a504110a668c0fc38a7983c51e6ee7a85cae87097686ccdc359ee4bbf2c583bce524e3f7836bded1c771a4efcb25c09460a862fc98e18f7303df46aaeb34da46b0c4d61d5cd78350f3edb60e6bc4befa712a849
|
||||||
|
y = 0x3accf60bb1a5365e4250d1588eb0fe6cd81ad495e9063f90880229f2a625e98c59387238670936afb2cafc5b79448e4414d6cd5e9901aa845aa122db58ddd7b9f2b17414600a18c47494ed1f3d49d005a5
|
||||||
|
|
||||||
|
print(hex(pow(2, 200, x))) # Should not overflow, just 1 << 200
|
||||||
|
print(hex(pow(2, x-1, x))) # Should be 1, since x is prime
|
||||||
|
print(hex(pow(y, x-1, x))) # Should be 1, since x is prime
|
||||||
|
print(hex(pow(y, y-1, x))) # Should be a 'big value'
|
||||||
|
print(hex(pow(y, y-1, y))) # Should be a 'big value'
|
|
@ -11,9 +11,6 @@ print(bytes(bytearray(4)))
|
||||||
print(bytes(array('b', [1, 2])))
|
print(bytes(array('b', [1, 2])))
|
||||||
print(bytes(array('h', [0x101, 0x202])))
|
print(bytes(array('h', [0x101, 0x202])))
|
||||||
|
|
||||||
# long ints
|
|
||||||
print(ord(bytes([14953042807679334000 & 0xff])))
|
|
||||||
|
|
||||||
# constructor value out of range
|
# constructor value out of range
|
||||||
try:
|
try:
|
||||||
bytes([-1])
|
bytes([-1])
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
# test construction of bytes from different objects
|
||||||
|
|
||||||
|
# long ints
|
||||||
|
print(ord(bytes([14953042807679334000 & 0xff])))
|
|
@ -12,18 +12,3 @@ print(a // b)
|
||||||
print(a // -b)
|
print(a // -b)
|
||||||
print(-a // b)
|
print(-a // b)
|
||||||
print(-a // -b)
|
print(-a // -b)
|
||||||
|
|
||||||
if True:
|
|
||||||
a = 987654321987987987987987987987
|
|
||||||
b = 19
|
|
||||||
|
|
||||||
print(a // b)
|
|
||||||
print(a // -b)
|
|
||||||
print(-a // b)
|
|
||||||
print(-a // -b)
|
|
||||||
a = 10000000000000000000000000000000000000000000
|
|
||||||
b = 100
|
|
||||||
print(a // b)
|
|
||||||
print(a // -b)
|
|
||||||
print(-a // b)
|
|
||||||
print(-a // -b)
|
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
# check modulo matches python definition
|
||||||
|
|
||||||
|
a = 987654321987987987987987987987
|
||||||
|
b = 19
|
||||||
|
|
||||||
|
print(a // b)
|
||||||
|
print(a // -b)
|
||||||
|
print(-a // b)
|
||||||
|
print(-a // -b)
|
||||||
|
a = 10000000000000000000000000000000000000000000
|
||||||
|
b = 100
|
||||||
|
print(a // b)
|
||||||
|
print(a // -b)
|
||||||
|
print(-a // b)
|
||||||
|
print(-a // -b)
|
|
@ -1,7 +1,6 @@
|
||||||
print((10).to_bytes(1, "little"))
|
print((10).to_bytes(1, "little"))
|
||||||
print((111111).to_bytes(4, "little"))
|
print((111111).to_bytes(4, "little"))
|
||||||
print((100).to_bytes(10, "little"))
|
print((100).to_bytes(10, "little"))
|
||||||
print((2**64).to_bytes(9, "little"))
|
|
||||||
print(int.from_bytes(b"\x00\x01\0\0\0\0\0\0", "little"))
|
print(int.from_bytes(b"\x00\x01\0\0\0\0\0\0", "little"))
|
||||||
print(int.from_bytes(b"\x01\0\0\0\0\0\0\0", "little"))
|
print(int.from_bytes(b"\x01\0\0\0\0\0\0\0", "little"))
|
||||||
print(int.from_bytes(b"\x00\x01\0\0\0\0\0\0", "little"))
|
print(int.from_bytes(b"\x00\x01\0\0\0\0\0\0", "little"))
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
print((2**64).to_bytes(9, "little"))
|
||||||
|
|
||||||
b = bytes(range(20))
|
b = bytes(range(20))
|
||||||
|
|
||||||
il = int.from_bytes(b, "little")
|
il = int.from_bytes(b, "little")
|
|
@ -7,19 +7,11 @@ print(+100)
|
||||||
# negation
|
# negation
|
||||||
print(-1)
|
print(-1)
|
||||||
print(-(-1))
|
print(-(-1))
|
||||||
print(-0x3fffffff) # 32-bit edge case
|
|
||||||
print(-0x3fffffffffffffff) # 64-bit edge case
|
|
||||||
print(-(-0x3fffffff - 1)) # 32-bit edge case
|
|
||||||
print(-(-0x3fffffffffffffff - 1)) # 64-bit edge case
|
|
||||||
|
|
||||||
# 1's complement
|
# 1's complement
|
||||||
print(~0)
|
print(~0)
|
||||||
print(~1)
|
print(~1)
|
||||||
print(~-1)
|
print(~-1)
|
||||||
print(~0x3fffffff) # 32-bit edge case
|
|
||||||
print(~0x3fffffffffffffff) # 64-bit edge case
|
|
||||||
print(~(-0x3fffffff - 1)) # 32-bit edge case
|
|
||||||
print(~(-0x3fffffffffffffff - 1)) # 64-bit edge case
|
|
||||||
|
|
||||||
# addition
|
# addition
|
||||||
print(1 + 2)
|
print(1 + 2)
|
||||||
|
@ -37,9 +29,3 @@ print(123 // 7, 123 % 7)
|
||||||
print(-123 // 7, -123 % 7)
|
print(-123 // 7, -123 % 7)
|
||||||
print(123 // -7, 123 % -7)
|
print(123 // -7, 123 % -7)
|
||||||
print(-123 // -7, -123 % -7)
|
print(-123 // -7, -123 % -7)
|
||||||
|
|
||||||
# zero big-num on rhs
|
|
||||||
print(1 + ((1 << 65) - (1 << 65)))
|
|
||||||
|
|
||||||
# negative big-num on rhs
|
|
||||||
print(1 + (-(1 << 65)))
|
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
# tests int constant folding in compiler
|
||||||
|
|
||||||
|
# negation
|
||||||
|
print(-0x3fffffff) # 32-bit edge case
|
||||||
|
print(-0x3fffffffffffffff) # 64-bit edge case
|
||||||
|
print(-(-0x3fffffff - 1)) # 32-bit edge case
|
||||||
|
print(-(-0x3fffffffffffffff - 1)) # 64-bit edge case
|
||||||
|
|
||||||
|
# 1's complement
|
||||||
|
print(~0x3fffffff) # 32-bit edge case
|
||||||
|
print(~0x3fffffffffffffff) # 64-bit edge case
|
||||||
|
print(~(-0x3fffffff - 1)) # 32-bit edge case
|
||||||
|
print(~(-0x3fffffffffffffff - 1)) # 64-bit edge case
|
||||||
|
|
||||||
|
# zero big-num on rhs
|
||||||
|
print(1 + ((1 << 65) - (1 << 65)))
|
||||||
|
|
||||||
|
# negative big-num on rhs
|
||||||
|
print(1 + (-(1 << 65)))
|
|
@ -5,11 +5,3 @@ for i in range(-2, 3):
|
||||||
for j in range(-4, 5):
|
for j in range(-4, 5):
|
||||||
if j != 0:
|
if j != 0:
|
||||||
print(i, j, i // j, i % j, divmod(i, j))
|
print(i, j, i // j, i % j, divmod(i, j))
|
||||||
|
|
||||||
# this tests bignum modulo
|
|
||||||
a = 987654321987987987987987987987
|
|
||||||
b = 19
|
|
||||||
print(a % b)
|
|
||||||
print(a % -b)
|
|
||||||
print(-a % b)
|
|
||||||
print(-a % -b)
|
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
# test integer floor division and modulo
|
||||||
|
|
||||||
|
# this tests bignum modulo
|
||||||
|
a = 987654321987987987987987987987
|
||||||
|
b = 19
|
||||||
|
print(a % b)
|
||||||
|
print(a % -b)
|
||||||
|
print(-a % b)
|
||||||
|
print(-a % -b)
|
|
@ -23,7 +23,6 @@ test_exc("bytearray() // 2", TypeError)
|
||||||
|
|
||||||
# object with buffer protocol needed on rhs
|
# object with buffer protocol needed on rhs
|
||||||
test_exc("bytearray(1) + 1", TypeError)
|
test_exc("bytearray(1) + 1", TypeError)
|
||||||
test_exc("(1 << 70) in 1", TypeError)
|
|
||||||
|
|
||||||
# unsupported subscription
|
# unsupported subscription
|
||||||
test_exc("1[0]", TypeError)
|
test_exc("1[0]", TypeError)
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
# test errors from bad operations (unary, binary, etc)
|
||||||
|
|
||||||
|
def test_exc(code, exc):
|
||||||
|
try:
|
||||||
|
exec(code)
|
||||||
|
print("no exception")
|
||||||
|
except exc:
|
||||||
|
print("right exception")
|
||||||
|
except:
|
||||||
|
print("wrong exception")
|
||||||
|
|
||||||
|
# object with buffer protocol needed on rhs
|
||||||
|
test_exc("(1 << 70) in 1", TypeError)
|
|
@ -37,34 +37,6 @@ s = struct.pack("BHBI", 10, 100, 200, 300)
|
||||||
v = struct.unpack("BHBI", s)
|
v = struct.unpack("BHBI", s)
|
||||||
print(v == (10, 100, 200, 300))
|
print(v == (10, 100, 200, 300))
|
||||||
|
|
||||||
# check maximum pack on 32-bit machine
|
|
||||||
print(struct.pack("<I", 2**32 - 1))
|
|
||||||
print(struct.pack("<I", 0xffffffff))
|
|
||||||
|
|
||||||
# long long ints
|
|
||||||
print(struct.pack("<Q", 2**64 - 1))
|
|
||||||
print(struct.pack(">Q", 2**64 - 1))
|
|
||||||
print(struct.pack("<Q", 0xffffffffffffffff))
|
|
||||||
print(struct.pack(">Q", 0xffffffffffffffff))
|
|
||||||
print(struct.pack("<q", -1))
|
|
||||||
print(struct.pack(">q", -1))
|
|
||||||
print(struct.pack("<Q", 1234567890123456789))
|
|
||||||
print(struct.pack("<q", -1234567890123456789))
|
|
||||||
print(struct.pack(">Q", 1234567890123456789))
|
|
||||||
print(struct.pack(">q", -1234567890123456789))
|
|
||||||
print(struct.unpack("<Q", b"\x12\x34\x56\x78\x90\x12\x34\x56"))
|
|
||||||
print(struct.unpack(">Q", b"\x12\x34\x56\x78\x90\x12\x34\x56"))
|
|
||||||
print(struct.unpack("<q", b"\x12\x34\x56\x78\x90\x12\x34\xf6"))
|
|
||||||
print(struct.unpack(">q", b"\xf2\x34\x56\x78\x90\x12\x34\x56"))
|
|
||||||
|
|
||||||
# check maximum unpack
|
|
||||||
print(struct.unpack("<I", b"\xff\xff\xff\xff"))
|
|
||||||
print(struct.unpack("<Q", b"\xff\xff\xff\xff\xff\xff\xff\xff"))
|
|
||||||
|
|
||||||
# check small int overflow
|
|
||||||
print(struct.unpack("<i", b'\xff\xff\xff\x7f'))
|
|
||||||
print(struct.unpack("<q", b'\xff\xff\xff\xff\xff\xff\xff\x7f'))
|
|
||||||
|
|
||||||
# network byte order
|
# network byte order
|
||||||
print(struct.pack('!i', 123))
|
print(struct.pack('!i', 123))
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
try:
|
||||||
|
import ustruct as struct
|
||||||
|
except:
|
||||||
|
try:
|
||||||
|
import struct
|
||||||
|
except ImportError:
|
||||||
|
import sys
|
||||||
|
print("SKIP")
|
||||||
|
sys.exit()
|
||||||
|
|
||||||
|
# check maximum pack on 32-bit machine
|
||||||
|
print(struct.pack("<I", 2**32 - 1))
|
||||||
|
print(struct.pack("<I", 0xffffffff))
|
||||||
|
|
||||||
|
# long long ints
|
||||||
|
print(struct.pack("<Q", 2**64 - 1))
|
||||||
|
print(struct.pack(">Q", 2**64 - 1))
|
||||||
|
print(struct.pack("<Q", 0xffffffffffffffff))
|
||||||
|
print(struct.pack(">Q", 0xffffffffffffffff))
|
||||||
|
print(struct.pack("<q", -1))
|
||||||
|
print(struct.pack(">q", -1))
|
||||||
|
print(struct.pack("<Q", 1234567890123456789))
|
||||||
|
print(struct.pack("<q", -1234567890123456789))
|
||||||
|
print(struct.pack(">Q", 1234567890123456789))
|
||||||
|
print(struct.pack(">q", -1234567890123456789))
|
||||||
|
print(struct.unpack("<Q", b"\x12\x34\x56\x78\x90\x12\x34\x56"))
|
||||||
|
print(struct.unpack(">Q", b"\x12\x34\x56\x78\x90\x12\x34\x56"))
|
||||||
|
print(struct.unpack("<q", b"\x12\x34\x56\x78\x90\x12\x34\xf6"))
|
||||||
|
print(struct.unpack(">q", b"\xf2\x34\x56\x78\x90\x12\x34\x56"))
|
||||||
|
|
||||||
|
# check maximum unpack
|
||||||
|
print(struct.unpack("<I", b"\xff\xff\xff\xff"))
|
||||||
|
print(struct.unpack("<Q", b"\xff\xff\xff\xff\xff\xff\xff\xff"))
|
||||||
|
|
||||||
|
# check small int overflow
|
||||||
|
print(struct.unpack("<i", b'\xff\xff\xff\x7f'))
|
||||||
|
print(struct.unpack("<q", b'\xff\xff\xff\xff\xff\xff\xff\x7f'))
|
|
@ -326,7 +326,7 @@ def run_tests(pyb, tests, args):
|
||||||
test_name = os.path.splitext(test_basename)[0]
|
test_name = os.path.splitext(test_basename)[0]
|
||||||
is_native = test_name.startswith("native_") or test_name.startswith("viper_")
|
is_native = test_name.startswith("native_") or test_name.startswith("viper_")
|
||||||
is_endian = test_name.endswith("_endian")
|
is_endian = test_name.endswith("_endian")
|
||||||
is_int_big = test_name.startswith("int_big_") or test_name.endswith("_intbig")
|
is_int_big = test_name.startswith("int_big") or test_name.endswith("_intbig")
|
||||||
is_set_type = test_name.startswith("set_") or test_name.startswith("frozenset")
|
is_set_type = test_name.startswith("set_") or test_name.startswith("frozenset")
|
||||||
is_async = test_name.startswith("async_")
|
is_async = test_name.startswith("async_")
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue