2012-06-26 9 views
8

मुझे लगता है कि यहां कुछ समान प्रश्न हैं और http://www.perlmonks.org पर लेकिन मुझे अभी भी यह नहीं मिला है। कल्पना कीजिए कि मेरे पास एक 'lib /' और 't' निर्देशिकाओं वाला एक प्रोजेक्ट है। मैं 'साबित' के साथ अपने परीक्षण चलाने:साबित करने के साथ डेवेल :: कवर का उपयोग कैसे करें?

$ cd $PROJECT_ROOT 
$ prove ./*.t 

मैं 'lib /' निर्देशिका में एक या अधिक फ़ाइलों के लिए html में एक रिपोर्ट प्राप्त करना चाहते हैं। मैं 'टी' निर्देशिका में फ़ाइलों के लिए रिपोर्ट नहीं चाहता। एक साधारण उदाहरण पर्याप्त होना चाहिए। धन्यवाद

उत्तर

6
  1. perl Makefile.PL या perl Build.PL
  2. cover -test
+0

यह एक वितरण योग्य परियोजना नहीं है। * .pm और "टी" कोई मेकफ़ाइल से भरा एक निर्देशिका "lib" है। –

+1

@ बेरोव, मेरे पास एक ही समस्या थी और डेक्सिम का सुझाव सही है। आप अभी भी अपनी परियोजना में कंकाल Makefile.PL या Build.PL जोड़ सकते हैं और फिर अपनी कवरेज रिपोर्ट प्राप्त कर सकते हैं। अगर यह मदद करता है, तो मैंने डेवेल :: कवर के लेखक से संपर्क किया और उसने पुष्टि की कि यह इसके बारे में जाने का तरीका है। – oalders

+0

आश्चर्यजनक रूप से यह ठीक काम किया। मैंने एक नंगे हड्डियों को बनाया है Makefile.PL, कवर -टेस्ट चलाया, और अब मेरे पास फ़ोल्डर cover_db फ़ोल्डर में HTML पृष्ठों का एक संपूर्ण सेट है। जो अनुमान लगाएगा कि यह इतना आसान होगा .... बहुत बहुत धन्यवाद। –

4

उचित तरीके से चयनित जवाब पता चलता है बस के रूप में हमेशा Makefile.PL/Build.PL के साथ शुरू करना है। लेकिन, कभी कभी आप एक है जो बाहर शुरू कर दिया नहीं हैं, इसलिए ...

मैं एक नकली makefile बनाने के लिए इस्तेमाल:

% cat Makefile 
test: 
     prove -Ilib -r t 

निम्नलिखित भी लगता है (काम करने के लिए/डिस्क पर किसी भी फाइल को छू ओ डब्ल्यू):

cover -t -make 'prove -Ilib -r t; echo >/dev/null' 

यह एक बदसूरत हैक तथापि है और अगर कवर लेखकों अधिक सख्ती से बनाओ का विकल्प उद्धृत करने के लिए तय काम करना बंद कर सकते हैं। इसके अलावा यह खिड़कियों के नीचे काम नहीं करना चाहिए। मेरी इच्छा है कि cover के बजाय -prove विकल्प था।

यह अभी भी गैर-मानक स्थानों पर * .t के साथ ही सीपीएएन मॉड्यूल के लिए कवरेज उत्पन्न करता है। यह व्यवहार का उपयोग कर ठीक किया जा सकता + चयन/+ उपेक्षा विकल्प (Devel::Cover's manpage देखें):

cover -t +select ^lib +ignore^

तो tl; डॉ "जादू" कमांड

cover -t +select ^lib +ignore^-make 'prove -Ilib -r t; exit $?' 

संपादित निम्नलिखित नहीं किया है

PERL5OPT="$PERL5OPT -MDevel::Cover" prove -Ilib -r t 
cover -t +select ^lib +ignore^

कि नोट prove -MSomethingSomethingपर लागू होता है: - मेरे लिए काम यह केवल संक्षिप्त सारांश प्रिंटस्वयं और इसे पास नहीं करता है (आईआई के विपरीत)।

+1

मैं का उपयोग करने की सलाह देता हूं- 'साबित करें- v -Ilib; वापसी $ ?; ' ... "गूंज" के बजाए, अन्यथा परीक्षण विफलताओं में गैर-शून्य निकास कोड नहीं होता है। –

+0

वास्तव में 'साबित करें- v -Ilib; $ बाहर निकलें ?; ' अन्यथा यह बैश के तहत विफल रहता है - आप केवल फ़ंक्शन या सोर्स की गई स्क्रिप्ट से 'वापसी' कर सकते हैं। यह ज्यादातर अन्य गोले में काम करता है। –

+0

@ChrisLamb आपकी टिप्पणियों के अनुसार अद्यतन किया गया। – Dallaylaen

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