2010-06-28 3 views
3

Моя команда создает систему сборки, основанную на SCons. Мы создали кучу вспомогательных классов в нашей собственной папке site_scons/site_tools.Как протестировать модификации SCons

Моя задача - создать и запустить тесты нашего кода, используя pyunit. Тестовый код, вероятно, находиться в подкаталоге, с раскладка каталога ищет что-то вроде:

SConstruct 
our_source_code/ 
    Sconscript 
site_scons/ 
    site_tools/ 
     a.py 
     b.py 
     c.py 
     tests/ 
      test_a.py 
      test_b.py 
      test_c.py 

Теперь мой вопрос: Что такое лучший способ вызвать наши тесты, учитывая, что они, вероятно, потребуется набор среды правильные Scons вверх? (то есть a.py использует SCons.Environment)

Я могу добавить Builder или команду? Или что-то другое?

ответ

2

Я думаю, что наилучшим подходом было бы использовать test setup code from SCons itself. Для этого требуется SVN-проверка SCons, поскольку тестовые файлы не отправляются с обычными tarball-файлами SCons. Вероятно, это работает, поскольку не все в вашей команде будут писать инструменты и запускать тесты на них.

Например, this is the test for javac. В основном вы выписываете нужные файлы, запускаете SConstruct, а затем проверяете, что результаты ожидаются. Вы можете издеваться над инструментами с помощью скриптов Python, чтобы убедиться, что они действительно вызываются с флагами и файлами, которые вы ожидаете. Например:

import TestSCons 
test = TestSCons.TestSCons() 
test.write('SConstruct', '''env = Environment(tools = ["yourtool"]) 
env.RunYourTool()''') 

test.write('sourcefile.x', 'Content goes here') 
test.run(arguments = '.', stderr = None) 

test.must_match('outputfile', 'desired contents') 
test.pass_test() 

Есть также несколько инструкций по написанию Scons инструментов тестов на swtoolkit wiki, что является по-видимому несуществующим SCons расширения от Google. Информация в wiki по-прежнему полезна, и есть несколько хороших примеров того, как писать тесты для пользовательских инструментов SCons.

+0

Хорошая ссылка, спасибо. Мы очень рано разрабатываем, поэтому идея состоит в том, чтобы интегрировать наши «тесты с scons» в обычную сборку Continuous Integration, поэтому, к сожалению, каждый должен иметь возможность запускать тесты. – Justicle

+0

Ну, не все - разработчик инструмента + строительная машина. – richq

+0

Первая ссылка не работает: 'Неизвестное место: trunk/QMTest/TestSCons.py' – Sardathrion

Смежные вопросы