evans icon indicating copy to clipboard operation
evans copied to clipboard

'\u0000' в изход от тестове води до невъзможност за завършване на тестовете

Open mstoykov opened this issue 7 years ago • 0 comments

Санитизиран лог от sidekiq-а на golang сайта:

2016-12-29T13:47:20Z 30451 TID-REMOVED TaskCheckWorker JID-REMOVED INFO: start
2016-12-29T13:47:45Z 30451 TID-REMOVED TaskCheckWorker JID-REMOVED INFO: fail: 24.501 sec
2016-12-29T13:47:45Z 30451 TID-REMOVED WARN: {"retry"=>true, "queue"=>"default", "class"=>"TaskCheckWorker", "args"=>["4"], "jid"=>"REMOVED", "enqueued_at"=>1483019064.9113793, "error_message"=>"string contains null byte", "error_class"=>"ArgumentError", "failed_at"=>1483019089.485739, "retry_count"=>2, "retried_at"=>1483019265.313762}
2016-12-29T13:47:45Z 30451 TID-REMOVED WARN: string contains null byte
2016-12-29T13:47:45Z 30451 TID-REMOVED WARN:/ruby/2.3.0/gems/activerecord-4.0.13/lib/active_record/connection_adapters/postgresql_adapter.rb:806:in `send_query_prepared'

Това се случва, защото едно от решенията на студент не е вярно и при изписването на какво е върнал се изпизва и 0-лев байт в изхода. Този нулев байт съответно се вижда в изхода от go run /path/to/runner.go -- solution_test.go (с правено копирани файлове) като нещо от вида на : but got 'T\u0000'\nFAIL Това съответно си се парсва и подава наляво надясно като в края на краищата довежда до горната грешка.

Търсейки решения достигнах до това issue, което обаче е оправя само за bytea колони в по нови rails-и, а log е text и преминаването към по нови версии на rails поне при мен доведе до страхотни грешки и аларми че разни неща вече ги няма.

Практически моя проблем ще си го реша с escape-ване какво пиша към изхода в тестовете.

Това обаче не пречи на студент, случайно или нарочно, да пише нулеви байтове в изхода. Също така теоритично това би трябвало да се escape-ва и да може да влезе в text колоната като се unescape-не като се вади, но ruby/rails познанията ми не достигат до такива разбирания на activerecord и неговите магии :)

Дори горното да не е възможно ще е хубаво да се хваща и да е проблем само за студента, а не тестовете да се пускат наново и наново без успех.

mstoykov avatar Dec 29 '16 17:12 mstoykov