2013-03-27 8 views
10

मैं एक कबाल पैकेज है जिसके लिए मैं एक test-suiteexitcode-stdio-1.0 प्रकार का उपयोग कर सेट किया हुआ है, मुद्रित नहीं करता है:कबाल परीक्षण तो जैसे निष्पादन योग्य उत्पादन

जब मैं cabal test का उपयोग कर इसे चलाने के लिए, कबाल मानक आउटपुट प्रिंट नहीं करता/निष्पादन योग्य की मानक त्रुटि;

$ cabal test 

Running 1 test suites... 
Test suite test-foo: RUNNING... 
Test suite test-foo: PASS 
Test suite logged to: dist/test/foo-0.0.1-test-foo.log 
1 of 1 test suites (1 of 1 test cases) passed. 
$ 

उत्पादन मैं चाहता हूँ कि उस लॉग फ़ाइल में है:

$ cat dist/test/foo-0.0.1-test-fo.log 
Test suite test-foo: RUNNING... 
HUnit group 1: 
    Expected connect: [OK] 

     Test Cases Total  
Passed 1   1   
Failed 0   0   
Total 1   1   
Test suite test-foo: PASS 
Test suite logged to: dist/test/foo-0.0.1-test-foo.log 
$ 

मैं कैसे अपने आप ही मानक आउटपुट में इस उत्पादन मुद्रित करने के लिए कबाल मिलता है यह केवल अपने स्वयं के प्रवेश जानकारी प्रिंट? मुझे इसे प्रलेखन में नहीं मिला है।

+0

इस पोस्ट के लिए धन्यवाद।मैंने सोचा होगा कि मानक आउटपुट को निर्देशित करना सबसे आम उपयोग केस होगा। – sdasdadas

उत्तर

10

यहाँ एक तरीका है:

$ cabal test --log=/dev/stdout 

नोट तथापि, कि यह एक पूर्ण समाधान नहीं है, के बाद से कबाल पूरे उत्पादन बफ़र और इसे प्रदर्शित केवल एक बार परीक्षण कार्यक्रम से बाहर निकल गया है जाएगा।

$ cabal test --show-details=streaming 

--show-विवरण = फिल्टर

निर्धारित करता है कि अलग-अलग परीक्षण मामलों के परिणाम टर्मिनल पर दिखाए जाते हैं:

हाल कबाल संस्करणों उत्पादन स्ट्रीम किए जाने की अनुमति । हो सकता है हमेशा (हमेशा शो), कभी नहीं (शो कभी नहीं), विफलताओं (शो केवल परिणामों में विफल रहा है), या स्ट्रीमिंग (वास्तविक समय में सभी परिणाम बताते हैं)।

Cabal User Guide में और पढ़ें।

+0

मेरे लिए काफी अच्छा है! – jameshfisher

0

exitcode-stdio-1.0 कैबल का उपयोग करते समय केवल परीक्षण लॉग की रिपोर्ट होगी यदि परीक्षण प्रोग्राम निकास कोड लौटाता है (स्पष्ट रूप से "विफल रहता है")। एक समाधान अपने परीक्षण कार्यक्रम त्रुटि कोड जब परीक्षण के किसी भी विफल करने के लिए होगा:

import System.Exit (exitFailure, exitSuccess) 

main :: IO() 
main = do 
    result <- runTests 
    if result 
    then exitSuccess 
    else exitFailure 

runTests :: IO Bool 
runTests = do 
    ... 
    return True/False 

आप केवल जरूरत है कि जब एक "मैन्युअल" परीक्षण कार्यक्रम लेखन: सबसे परीक्षण रिपोर्टिंग चौखटे (जैसे: tasty, test-framework , hspec) पहले से ही स्वचालित रूप से ऐसा करते हैं।

तुम सच में चाहते हैं हमेशा परिणामों को देखने के, आप हमेशा उपयोग कर सकते हैं:

  • cabal test --log=/dev/stdout निष्पादन के अंत में
  • exitFailure (एक और जवाब में दी गई)
4

कुछ महीनों के लिए एक नया तरीका रहा है, और परीक्षण परिणामों को फ़ाइल पर stdout के लिए भी लिखा गया है, अंत में

पर फ़्लश नहीं किया गया है
cabal test --show-details=streaming 
संबंधित मुद्दे