oscript-library icon indicating copy to clipboard operation
oscript-library copied to clipboard

Не проходят тесты, если пользователь системы задан не латиницей

Open JohnyDeath opened this issue 9 years ago • 14 comments

Если пользователь системы задан кириллицей, то некоторые тесты падают. Причина - кодировка генерируемых батников. Вот здесь: https://github.com/EvilBeaver/oscript-library/blob/develop/src/gitsync/tests/git-sync-test.os#L475 задается вин-кодировка. Батник имя пользователя превращает в крякозябры и ес-но ничего не выполняется. Если поменять на 866, то все отрабатывает корректно. Но тогда и выходные логи формируются в дос-кодировке.

Также похожая проблема наблюдается в других классах библиотеки. Нужно внимательно все просмотреть.

JohnyDeath avatar May 24 '16 10:05 JohnyDeath

Как вариант, предлагаю следующее:

  • Добавить спец.метод для преобразования файла из 866 в вин1251, например, через Чтение и ЗаписьТекста.
  • Тогда можно будет использовать штатный вывод в 866 в командных файлах.
  • Далее вызов этого метода преобразования нужно вставить в метод ВывестиТекстФайла
  • Проверить на всех скриптах библиотеки поиском по 1251 или chcp 1251

artbear avatar May 24 '16 10:05 artbear

батники кроме как в gitsync нигде больше не генерируются, насколько я помню. исправление-то простое, сам батник писать в cp866 и вывод батника (который перенаправляется в файл) открывать в cp866 и читать. Все.

EvilBeaver avatar May 24 '16 11:05 EvilBeaver

вывод батника (который перенаправляется в файл) открывать в cp866 и читать

такой вариант ребят вчера не устроил. Думаю оптимальным вариантом будет идея Артура

JohnyDeath avatar May 24 '16 11:05 JohnyDeath

Я немного не в контексте, но почему нельзя просто жестко устанавливать utf-8 и соответственно 65001?

nixel2007 avatar May 24 '16 11:05 nixel2007

можно, но переписывать больше. В предлагаемом варианте просто надо в местах записи батника и чтения его выхлопа нужную кодировку проставить и все

EvilBeaver avatar May 24 '16 11:05 EvilBeaver

@JohnyDeath

такой вариант ребят вчера не устроил.

А можно подробнее, что и где не устроило?

EvilBeaver avatar May 24 '16 11:05 EvilBeaver

Чтения выхлопа нет. Там в файл все записывается, которые скорее всего далее используются в билд серверах, настройки которых не хочется менять.

JohnyDeath avatar May 24 '16 11:05 JohnyDeath

@JohnyDeath в гитсинке всегда есть чтение выхлопа. Вполне возможно, оно сделано не в той кодировке

EvilBeaver avatar May 24 '16 11:05 EvilBeaver

Собственно, вот оно:

https://github.com/EvilBeaver/oscript-library/blob/develop/src/gitsync/src/core/%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D1%8B/%D0%9C%D0%B5%D0%BD%D0%B5%D0%B4%D0%B6%D0%B5%D1%80%D0%A1%D0%B8%D0%BD%D1%85%D1%80%D0%BE%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8.os#L1032

Этот метод часто используется для чтения выхлопа, а файл читается без указания кодировки

EvilBeaver avatar May 24 '16 11:05 EvilBeaver

@EvilBeaver А еще есть аналогичный метод ВывестиТекстФайла который юзается для обработки других команд Гит :(

дублирование, тех.долг, понимаешь

artbear avatar May 24 '16 11:05 artbear

Выполнял поиск по исходникам по ЗапуститьПриложение И нашел еще:

Есть метод ПрочитатьФайл, который также юзается для чтения логов

Например, в config-storage.os в методе ВыгрузитьВерсиюКонфигурации или в файле table-reader.os

artbear avatar May 24 '16 11:05 artbear

Метод "ПрочитатьФайл", похоже,кандидат сюда: https://github.com/oscript-library/files-common

EvilBeaver avatar May 24 '16 11:05 EvilBeaver

@EvilBeaver

https://github.com/oscript-library/files-common

опаньки, это интересно. когда добавил этот ресурс?

artbear avatar May 24 '16 13:05 artbear

Там бы тоже небольшой ридми вставить, чтобы знать для чего вообще создан модуль

JohnyDeath avatar May 24 '16 19:05 JohnyDeath