C’est énervant votre truc j’avoue ![]()
Je viens de perdre 1h, je fais une pause…
C’est énervant votre truc j’avoue ![]()
Je viens de perdre 1h, je fais une pause…
Je viens de tester ton code de 3.9 a 3.14 ça marche, avec :
def test_stdout(capsys):
with ignore():
print("Error!")
out, err = capsys.readouterr()
assert not out
assert not err
def test_small_side_effect():
x = 1
with ignore():
x += 1
assert x == 1
def test_big_side_effect():
with ignore():
os._exit(1)
def test_ellipsis(capsys):
print(1)
with ignore():
...
print(2)
out, err = capsys.readouterr()
assert out == "1\n2\n"
assert not err
def test_pass(capsys):
print(1)
with ignore():
pass
print(2)
out, err = capsys.readouterr()
assert out == "1\n2\n"
assert not err
Plus dur maintenant :
with ignore() as ctx:
...
print(ctx)
Ça pique car l’exception est levée avant l’affectation de ctx, donc ce code donne un NameError (ou un UnboundLocalError).
Tu voudrais récupérer quel genre d’information depuis ce context manager ?
stdin et stdout, dans mon implem de Forking quelques messages plus haut.
Très cool, c’est quoi ton use case principal de ce genre de chose ?
Il se peut que je l’utilise pour isoler des tests sur Genepy, un genre de sandbox du pauvre, mais je ne sais pas encore : ça a un impact sur le temps de correction tout ces forks !
J’aurai certainement pu le faire avec le module multiprocessing, ou concurrent.future, mais ça n’aurait pas été aussi compact qu’un simple with je pense.