Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

[correctness][confirmed-defect][sort] Conflicting repeated field separators are silently accepted

Chiusa Adatta ai principianti
#636 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
82/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
go
Ambito
cli, testing

Direzione di ricerca

Leggi builtins/sort/sort.go:154 e builtins/sort/sort.go:207-221 per seguire la registrazione e la convalida del flag del separatore. Aggiungi uno scenario di regressione in tests/scenarios/cmd/sort/flags/repeated_separator_conflict.yaml ed esegui gli scenari sort mirati; il lavoro è completato quando separatori ripetuti incompatibili producono il codice di uscita 2 e la diagnostica sort: incompatible tabs, mentre gli scenari sort esistenti continuano a passare.

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

Descrizione

Generated by the rshell behavior correctness scanner.

  • Contract: BEH-005
  • Classification: confirmed-defect
  • Impact: medium
  • Target: sort
  • Scanned commit: 514d1cb8188fda6b1accca5955dfab3b0e8aa34a

Conflicting repeated field separators silently use the final value instead of rejecting the invocation. GNU reports incompatible tabs and exits 2. This can silently sort by unintended keys. No applicable documented divergence was found.

Contract sources
  • docs/BEHAVIOR_CONTRACTS.md:51-55: Repeated, short, long, and attached flags must follow documented or reference behavior.
  • SHELL_FEATURES.md:33: Supports -t SEP and -k KEYDEF without a repeated-separator divergence.
  • /usr/bin/sort: Native GNU coreutils 9.4 reproducibly emitted the exact expected diagnostic and status.
Implementation references
  • builtins/sort/sort.go:154: Registers the separator as one string value, retaining only the final occurrence.
  • builtins/sort/sort.go:207-221: Validates only the final separator; does not detect conflicting prior values.

Fixture setup

No files required. Both engines were executed twice through Python subprocess.run with captured stdout/stderr/status, LC_ALL=C, and a new tempfile.TemporaryDirectory(prefix='zz_correctness_scan_') for each run.

Reproducer

printf 'b:2\na:1\n' | sort -t : --field-separator=, -k2,2n

Commands used:

  • GOENV_VERSION=1.26.3 timeout 300s go build -o /tmp/zz_correctness_scan_rshell ./cmd/rshell
  • /tmp/zz_correctness_scan_rshell --allowed-commands rshell:sort,rshell:printf -c "printf 'b:2\na:1\n' | sort -t : --field-separator=, -k2,2n"
  • LC_ALL=C bash -c "printf 'b:2\na:1\n' | sort -t : --field-separator=, -k2,2n"
  • GOENV_VERSION=1.26.3 timeout 300s go test ./tests -run '^TestShellScenarios$/^cmd$/^sort$/^(basic|flags|errors|help|pathological|zz_correctness_scan_cases)$' -count=2 -timeout 240s
Expected

Exit code: 2

stdout:


stderr:

sort: incompatible tabs
Actual

Exit code: 0

stdout:

a:1
b:2

stderr:


Verification

  • Reproduction runs: 2
  • Reference: GNU coreutils 9.4 under LC_ALL=C. Two clean direct reproductions; the GNU-derived exact YAML expectations also failed in both focused scenario runs.
  • Temporary test: tests/scenarios/cmd/sort/zz_correctness_scan_cases/zz_correctness_scan_repeated_separator.yaml; removed after verification. Script, stdout, and stderr used YAML |+ scalars.
  • Suggested regression-test location: tests/scenarios/cmd/sort/flags/repeated_separator_conflict.yaml

Fingerprint: 6d4358f484ac1b96dbd4011e33187a11575a8c6deb58d7a3bc317d247dd20537

Lingua principale
Go
Stelle
31
Fork
3
Merge medio
2g 23h
PR unite (30g)
13

Preparare l'ambiente

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 DataDog/rshell

Tutte le issue di DataDog/rshell

Issue simili

Altre issue su Go

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.