2011-11-21 8 views
5

SCons में का कारण बनता है, मैं एक unittest प्रणाली बनाने के लिए प्रयास कर रहा हूँ (नीचे दिए गए कोड को देखें), यहां से महान उदाहरण के आधार पर: http://spacepants.org/blog/scons-unit-testSCons AddPostAction निर्भरता चेक त्रुटि काम के आसपास

हालांकि हाल SCons में किसी समस्या के कारण 2.0.1 और नए, इस मामले में एक निर्भरता चक्र, जैसा कि यहां दस्तावेज किया गया है: http://old.nabble.com/AddPostAction-executes-on-first-build-but-not-subsequent-td18360675.html (और कहीं और)।

क्या किसी को इस समस्या के लिए एक अच्छा काम-आसपास या प्रतिस्थापन समाधान पता है?

कोड:

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) 

उत्तर

5

मैं इस समस्या के लिए एक समाधान मिल गया। का उपयोग करके:

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

ऐसा लगता है कि SCons चालाक हो सकता है और अपने आप को curTest[0].abspath के लिए एक निर्माण निर्भरता जोड़ने के लिए, इस सर्कुलर निर्भरता समस्या खड़ी कर रहा करने के लिए कोशिश करता है।

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

मेरी इकाई परीक्षण प्रणाली के लिए (जो तुम्हारा से थोड़ा भिन्न है, लेकिन एक ही समस्या थी: समाधान तो यह समझ नहीं तुम क्या कर रहे SCons से आदेश के निष्पादन "छिपाने" करने के लिए है), जब भी इसकी कोई भी निर्भरता बदलती है, तो यूनिट परीक्षण चलाने का वांछित प्रभाव होता है, और कुछ भी प्रासंगिक नहीं होने पर इसे नहीं चलाया जाता है।

संबंधित मुद्दे