понедельник, 29 марта 2010 г.

Вывод лога DUnit в файл

Иногда нет возможности запускать тесты из консольного приложения, что делает невозможным логгирование вывода стандартными средствами. Что бы, к примеру, запущенная после коммита процедура сборки/тестирования, в случае ошибки, бросила в почту разработчикам лог с непрошедшими тестами.

Для решения на скорую руку был набросан простенький класс (чуть более чем полностью слизанный с TextTestRunner), позволяющий логгировать все в файл - FileTestRunner

Проверен на D2009.

среда, 24 марта 2010 г.

Упрощение CheckException в DUnit с помощью анонимных функций

К сожалению, для проверки функции на возврат исключения возможен только для процедуры типа:
TTestMethod  = procedure of object;
procedure CheckException(AMethod: TTestMethod; AExceptionClass: TClass; msg :string = '');
Легким движением руки(наследником или правкой оригинального класса) для свежих версий Delphi упрощаем написание таких тестов:

TTestProc2  = reference to procedure;
TTestCase2 = class(TTestCase)
public
  procedure CheckException2(AMethod: TTestProc2; AExceptionClass: TClass; msg :string = '');
end;
Пример использования:
...
CheckException2(procedure begin DirDelete(TestDir); end, EInOutError);

понедельник, 8 марта 2010 г.

Разработка - это борьба с антивирусами

На днях, Касперский начал ругаться на один из пакетов нашей системы обновлений. В пакете (7z архив), от 11 сентября 2009 года лежал инсталятор сделанный InnosSetup, внутри которого и лежал якобы зараженный файл.

Беглый анализ этого яйца КБ на VirusTotal показал, что ругается только Касперский, на какой-то никому известный троян, что явно указывало на ложное срабатывание. Проблемы была отложена на неделю, в надежде что рассосется :)

Но практика показала, что даже ложные сигнатуры, как те вирусы, расползаются по мелким антивирусным компаниям безо всяких проверок. Через 2 недели уже 10-ток антивирусов определяли файл как зараженный! Но при этом среди них не было ни одной крупной компании.

Приятно был поражен, что после отправки комплейна в лабораторию Касперского, ложное срабатывание было подтверждено в течение часа (и это 8-го марта!).

вторник, 2 марта 2010 г.

97 заметок архитекторам и разработчикам

Уж не знаю, откуда возник такой формат, но есть две замечательные серии статей, по 97 штук, с краткими заметками в области разработки и проектирования ПО. В оригинале они на английском, но есть частичный перевод от avl:

97 Things Every Programmer Should Know
97 Things Every Software Architect Should Know

понедельник, 1 марта 2010 г.

MindTheBird! - УпомяниПроПтица!

Как многие помнят, я, в силу исторических причин, большой любитель, и более того фанат, такого замечательного продукта, как СУБД Firebird.

В скором времени, выходит его новая версия 2.5, в которой разработчики в очередной раз радуют нас множеством вкусностей:
  • новая промежуточная архитектура SuperClassic
  • управление пользователями из SQL
  • долгожданный многими ALTER VIEW
  • автономные транзакции
  • гетерогенные запросы к внешним базам FB через EXECUTE STATEMENT
  • роль RDB$ADMIN
  • трассировка работы

    В поддержку сего события, запущен проект MindTheBird! - нацеленный на как можно более широкое освещение релиза и всего проекта в целом. Соответственно пассивным вкладом нас, разработчиков использующих эту СУБД может (а лучше должно быть) размещение баннера на сайте/блоге.

    А желающие принять более активное участи, могут заработать 500$ за работу с логотипом ФБ, или получить лицензию FastReport за привлечение новых участником.