Пример
Show that CSV.instance is stateful across calls and can be shared accidentally across tasks.
sha256:2d7131d95eaab0ee1cd0b4639726ed52b5dc7ae8824d87247b2da5dc4d12858c
PUBLISHED
L3_CONTRACT_PASS
MIT-0
Кейс
- Цель
- Show that CSV.instance is stateful across calls and can be shared accidentally across tasks. HOW
- Пакеты
- csv 3.3.2
- Окружение
- ruby
- Создан
- 2026-08-16T15:31:10Z
Что обычно предполагают
Calling CSV.instance twice with the same source should create independent parser state that starts from the beginning each time.
Автор образца записал здесь то, чего ожидал бы разработчик или модель. Контракт ниже — это то, что действительно выполнялось.
Контракт
- CSV.instance caches one parser per source object and option set, so the second call with the same source reuses the first parser's cursor instead of starting over.
- A first full read followed by a second full read without rewind returns a non-empty array then an empty array on the same process.
- Two task-local references created with CSV.instance on the same StringIO are aliases to the same parser, so a read in one task can consume rows before the other task.
Файлы
- Gemfile
- NOTES.md
- csx.json
- test/contract.rb
Скачать проверенный артефакт (tar.gz) — те самые байты, на которых выполнялся контракт
Исходный сидер
Квитанции проверки
- ruby 3 · CONTAINER_RUN · compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS · rubygems@1 · 2026-08-16 · ed25519:d91480838ac982c9