Есть тулза — генератор кода. На входе получает файл и опции для генерации в командной строке, на выходе — выдаёт файл.
Надо в ней поковыряться, но так, чтобы ничего не сломалось. Вариант — зашить входной и выходной файл в в виде массива char'ов в код и как-то запилить все тесты в одном сорцовом модуле — не прокатит — входной файл может подключать другие файлы, а делать затычку, эмулирующую файловую систему на массивах char'ов, и впиливать прослойку абстракции в уже существующий код желания нет.
Исходные данные для вызова утилиты — имя входного файла, имя выходного файла, и опции командной строки.
Есть эталонный генератор — зафиксированная последняя перед переделками рабочая версия. Нужно нужно для каждого входного кортежа вызвать эталонную версию, экспериментальную текущую версию, и сравнить выхлоп.
При сравнении выхлопа пустые строки, или строки только с пробелами — игнорировать (можно наверное перед сравнением прогонять тупо через фильтр, который их удалит). Оставшееся — сравнить.
Опять же — сравнивать по разному, в зависимости от настроек — либо игнорить изменения в пробелах, либо точно сравнивать.
Полного дифа не нужно, достаточно генерить ошибку на первом несоответствии.
Ну, и в комлексе — либо прогнать все тесты, даже если некоторые не прошли, и потом отрапортовать, сколько сфейлилось, либо остановится на первом же фейле.