2011-11-21 18 views
5

scons ortaya çıkma nedenleri bir UnitTest sistemini yapmaya çalışılıyor buradan büyük bir örnek dayalı (aşağıdaki kodu bakınız) 2.0.1 ve daha yeni, bu, burada belgelendiği gibi bir bağımlılık döngüsü: http://old.nabble.com/AddPostAction-executes-on-first-build-but-not-subsequent-td18360675.html (ve başka yerlerde).Scons AddPostAction Bağımlılık kontrol hatası iş çevresinde

Bu sorunla ilgili iyi bir çalışma ya da değiştirme çözümü bilen var mı?

Kodu:

def UnitTest(env, target, source, **kwargs): 
    curTest = env.Program(target, source, **kwargs) 
    env.AddPostAction(curTest, curTest[0].abspath) 
    env.Alias('unit_tests', curTest) 
    env.AlwaysBuild(curTest) 
    return curTest 

SConsEnvironment.UnitTest = UnitTest 

mandolineTest = env.UnitTest(target='./codeTest', 
    source = mix(['test.cc', 'base.cc'), 
    LIBS = default_libs + ['bgl',], 
    LIBPATH = default_libs_path, 
    CPPPATH = default_includes) 

cevap

5

bu sorun için bir çözüm buldular. kullanarak:

env.AddPostAction(curTest, curTest[0].abspath) 

o Scons zeki olmak ve bu döngüsel bağımlılık soruna neden, kendisine curTest[0].abspath için bir yapı bağımlılığı eklemeye çalışır anlaşılmaktadır. Benim birim test sistemi için

env.AddPostAction(curTest, lambda *_, **__: os.system(curTest[0].abspath)) 

(sizinkinden biraz farklı olan ancak aynı sorun vardı: çözüm ne yaptığını bilemiyorum böylece Scons gelen komutun yürütülmesini "gizlemek" için) Bu, bağımlılıklardan herhangi biri değiştiğinde ünite testini çalıştırmanın istenen bir etkisine sahiptir ve ilgili hiçbir şey değişmediyse onu çalıştırmaz.