/
EvilBeaver
/
OneScript
Обзор
Документация
Войти
/
EvilBeaver
/
OneScript
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
tests/null-character-handling.os
110 строк
6 KB
Copilot
Strip null characters from file paths to fix Windows WebDAV compatibility (#1649)
21 янв 2026, 18:09
Не верифицирован
21 янв 2026, 18:09
87eff88
Код
Авторство
О чём код?
Перем юТест; Функция Версия() Экспорт Возврат "0.1"; КонецФункции Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт юТест = ЮнитТестирование; ВсеТесты = Новый Массив; ВсеТесты.Добавить("ТестДолжен_СоздатьФайлСНулевымСимволом"); ВсеТесты.Добавить("ТестДолжен_ВыполнитьНайтиФайлыСНулевымСимволом"); ВсеТесты.Добавить("ТестДолжен_ПолучитьСвойстваФайлаСНулевымСимволом"); Возврат ВсеТесты; КонецФункции Процедура ТестДолжен_СоздатьФайлСНулевымСимволом() Экспорт ВремФайл = ПолучитьИмяВременногоФайла("txt"); ЗаписьТекста = Новый ЗаписьТекста(ВремФайл); ЗаписьТекста.ЗаписатьСтроку("тестовое содержимое"); ЗаписьТекста.Закрыть(); Попытка // Добавляем нулевой символ в путь, как это делает Windows WebDAV клиент ПутьСНулевымСимволом = ВремФайл + Символ(0); Файл = Новый Файл(ПутьСНулевымСимволом); // Проверяем, что файл доступен и не выбрасывает исключение юТест.ПроверитьИстину(Файл.Существует(), "Файл должен существовать"); юТест.ПроверитьРавенство("txt", Прав(Файл.Расширение, 3), "Расширение должно быть txt"); Исключение УдалитьФайлы(ВремФайл); ВызватьИсключение; КонецПопытки; УдалитьФайлы(ВремФайл); КонецПроцедуры Процедура ТестДолжен_ВыполнитьНайтиФайлыСНулевымСимволом() Экспорт ВремКаталог = КаталогВременныхФайлов(); ИмяТестовогоФайла = "test_null_char_" + Формат(ТекущаяДата(), "ДФ=yyyyMMddHHmmss") + ".txt"; ВремФайл = ОбъединитьПути(ВремКаталог, ИмяТестовогоФайла); ЗаписьТекста = Новый ЗаписьТекста(ВремФайл); ЗаписьТекста.ЗаписатьСтроку("тестовое содержимое"); ЗаписьТекста.Закрыть(); Попытка // Добавляем нулевой символ в путь к каталогу ПутьКаталогаСНулевымСимволом = ВремКаталог + Символ(0); // Проверяем, что НайтиФайлы не выбрасывает исключение НайденныеФайлы = НайтиФайлы(ПутьКаталогаСНулевымСимволом, ИмяТестовогоФайла); // Проверяем, что файл был найден юТест.ПроверитьРавенство(1, НайденныеФайлы.Количество(), "Должен быть найден один файл"); юТест.ПроверитьРавенство(ИмяТестовогоФайла, НайденныеФайлы[0].Имя, "Имя файла должно совпадать"); Исключение УдалитьФайлы(ВремФайл); ВызватьИсключение; КонецПопытки; УдалитьФайлы(ВремФайл); КонецПроцедуры Процедура ТестДолжен_ПолучитьСвойстваФайлаСНулевымСимволом() Экспорт ВремФайл = ПолучитьИмяВременногоФайла("txt"); ЗаписьТекста = Новый ЗаписьТекста(ВремФайл); ЗаписьТекста.ЗаписатьСтроку("тестовое содержимое"); ЗаписьТекста.Закрыть(); Попытка // Добавляем нулевой символ в конец пути ПутьСНулевымСимволом = ВремФайл + Символ(0); Файл = Новый Файл(ПутьСНулевымСимволом); // Проверяем, что все свойства доступны без исключений ПолноеИмя = Файл.ПолноеИмя; юТест.ПроверитьНеравенство("", ПолноеИмя, "ПолноеИмя не должно быть пустым"); Имя = Файл.Имя; юТест.ПроверитьНеравенство("", Имя, "Имя не должно быть пустым"); Путь = Файл.Путь; юТест.ПроверитьНеравенство("", Путь, "Путь не должен быть пустым"); Расширение = Файл.Расширение; юТест.ПроверитьРавенство(".txt", Расширение, "Расширение должно быть .txt"); Размер = Файл.Размер(); юТест.ПроверитьБольше(Размер, 0, "Размер должен быть больше 0"); Исключение УдалитьФайлы(ВремФайл); ВызватьИсключение; КонецПопытки; УдалитьФайлы(ВремФайл); КонецПроцедуры