тестирую, зависит от переменной окружения. как во время прогона тестов поменять переменную окружения? или, там, mock-нуть её как-нибудь
замени функцию получения глобальной переменной на свою... Если ты только луашку тестишь... С си библиотеками такое не прокатит
спасибо. си для меня - это тёмный лес а чем менять? стабами? или, по-тупому, old_getenv = os.getenv; new_getenv = my_solution?
так первое, или второе?
выбирай тот вариант, который применим в твоём случае. Второй вполне можно, если у тебя нет никакой нестандартной шляпы вроде реальной многопоточности, изоляции глобальных окружений между скриптами и прочего.
Отрефакторить код так, чтоб тестируемый функционал мог быть замокан :)
да в том-то и дело, что единственное, что делает функция - плюётся в stdout, собирая вывод из неизменяемого массива
а если установлена определённая переменная окружения, то поднимает исключение
пытался хоть понять где и почему?
возможно, я не так выразился. тестируемая функция должна поднимать исключение, если определённая переменная окружения имеет некоторое значение. то есть, в 1 случае она пишет в stdin а в другой - поднимает исключение. чтобы покрыть все 2 сценария использования, я ищу / искал способ изменить / симулировать изменение этой переменной окружения
т.е. function() if certain_circumstance error(error_msg) end -- some more stuff end
интересное конечно у тебя использование переменных окружения.... Ну та ладно... Просто замени os.getenv на то, шо тебе надо, может даже на что-то такое : local myenv = { IMPORTANT=1 } function os.getenv(name) return myenv[name] end
я читаю os.getenv("NO_COLOR") и пинаю tput на linux. если цвета разрешены и терминал поддерживает их, подбираю количество доступных цветов. на виндоус всегда возвращаю 16, проверяя разделитель файлов в path (если \, то жто виндоус, и она всегда поддерживает цвета ascii sequences - если документация не врёт далее, если цвета разрешены, то выплёвываю в консоль примеры всех цветов. если цвета запрещены, то error("colors not available") или что-то такое
Обсуждают сегодня