`normalizeCase` duplicates the start of a relative reference

Aperta Adatta ai principianti
#92 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
70/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
haskell
Ambito
backend

Direzione di ricerca

L’issue indica normalizeCase e il ripiego ncScheme come origine del problema e afferma che sono necessari test di regressione. Leggi queste definizioni e i test esistenti per normalizeCase, quindi riproduci gli esempi di riferimenti relativi. Il lavoro è terminato quando i riferimenti relativi non vengono più duplicati né reindirizzati, mentre il comportamento degli URI assoluti continua a funzionare.

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

Descrizione

Hi! normalizeCase repeats the leading characters of a URI reference that has no scheme:

>>> normalizeCase "relative"
"relativerelative"
>>> normalizeCase "foo/bar"
"foofoo/bar"
>>> normalizeCase "./a:b"
"../a:b"

The last one changes which path the reference points to. Absolute URIs are fine, which is probably why the tests
don't catch it.

ncScheme lowercases characters while it looks for the scheme. When it finds no :, the fallback
ncScheme _ = ncEscape uristr starts again from the whole input, but the lowercased prefix is already in the output.

A fix is to check for a scheme first and lowercase only that part. I have a small patch with regression tests and can
open a PR.

Tested with network-uri 2.6.4.3 and current master, GHC 9.8.4.

Lingua principale
Haskell
Stelle
28
Fork
34
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

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 haskell/network-uri

Tutte le issue di haskell/network-uri

Issue simili

Altre issue su Haskell

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.