Как проверить модификации SCons - PullRequest
3 голосов
/ 28 июня 2010

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

Моя задача - создавать и запускать тесты для нашего кода, используя 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)

Я добавляю Строителя или Команду? Или что-то еще?

1 Ответ

2 голосов
/ 28 июня 2010

Я думаю, что наилучшим подходом было бы использование кода настройки теста от самого SCons . Это требует SVN проверки SCons, так как тестовые файлы не поставляются с обычными архивами SCons. Это, вероятно, выполнимо, так как не все в вашей команде будут писать инструменты и запускать на них тесты.

Например, это тест для 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. Информация в вики все еще полезна, и есть несколько хороших примеров того, как писать тесты для пользовательских инструментов SCons.

...