Я нашел решение этой проблемы. Используя:
env.AddPostAction(curTest, curTest[0].abspath)
похоже, что SCons пытается быть умным и добавлять зависимость сборки для curTest[0].abspath
к себе, вызывая эту проблему циклической зависимости. Решение состоит в том, чтобы «скрыть» выполнение команды от SCons, чтобы она не могла понять, что вы делаете:
env.AddPostAction(curTest, lambda *_, **__: os.system(curTest[0].abspath))
Для моей системы модульного тестирования (которая немного отличается от вашей, но имела ту же проблему) это дает желаемый эффект запуска модульного теста всякий раз, когда изменяется любая из его зависимостей, и не запускает его, если ничего не изменилось.