Make `UnexpectedNilError` un-rescueable from tests

Aperta
#20 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
25/100
Tipo di issue
Funzionalità
Chiarezza
Da chiarire
Stato di attività
Ferma
Stack tecnologico
ruby
Ambito
testing

Direzione di ricerca

Inizia individuando UnexpectedNilError e l’implementazione di not_nil!, quindi esamina come il progetto invoca minitest o RSpec. Determina come i test possano impedire che un semplice rescue => e nasconda questo errore senza mandare in crash il test runner. Il lavoro è completo quando l’errore rimane non intercettabile dal normale codice di test, mentre minitest e RSpec continuano a essere eseguiti.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

It currently inherits from Exception, so that a bare rescue => e doesn't unintentionally rescue it. We've already run into a real-world case where that proved useful, where a fork of the not_nil! implementation made it derive from StandardError, which indeed hid a test failure (only detected because we switched that copy of the code to use Type Toolkit).

To make it truly uncatchable, we can do something like throw Object.new. In a production app, this would crash your Rails app with UncaughtThrowError, so we'd have to limit it to tests. But we also don't want to crash minitest/RSpec, so we'd need to wrap the test runner in a catch call. We would need some kind of secret-ish tag to throw, that only the test runner can catch.

Lingua principale
Ruby
Stelle
3
Fork
5
Merge medio
8g 23h
PR unite (30g)
8

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di Shopify/type_toolkit

Tutte le issue di Shopify/type_toolkit

Issue simili

Altre issue su Ruby

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.