2011-08-21 16 views
5

जब आप स्रोत से perl बनाते हैं, तो आपके पास अंतिम गंतव्य में perl इंस्टॉल करने से पहले make test चलाने का विकल्प होता है।इसे स्थापित करने के बाद परीक्षण perl

क्या perl स्थापित होने के बाद make test के समतुल्य करना संभव है?

ध्यान दें कि मेरे पास मूल स्रोत नहीं होगा। मैं जो करना चाहता हूं वह है कि मैंने स्थापित पर्ल के उसी संस्करण के लिए स्रोत टैर आर्काइव डाउनलोड करना है और फिर इंस्टॉल किए गए पर्ल के विरुद्ध परीक्षण (स्रोत टैर आर्काइव से) चलाएं।

संभावित/असंभव? आसान कठिन? मैं इसे किस तरह लूं?

उत्तर

1

आप पीएलएल स्रोत कोड में टी/टेस्ट फ़ाइल पढ़कर शुरू कर सकते हैं।

सूचना निम्नलिखित:

  1. यह चारों ओर लाइन 142 पर फिर वह-बैंग

  2. के रूप में "! # ./ पर्ल" का उपयोग करता है, यह टी निर्देशिका में एक chdir करता है।

एक शुरुआत के रूप में आप संशोधित कर सकते हैं कि वह-बैंग लाइन अपने स्थापित पर्ल निष्पादन करने के लिए यह इंगित करने के लिए, और perl कोर संकुल निर्देशिका के लिए 'टी' निर्देशिका की सामग्री (या दूसरी तरह के आसपास) की प्रतिलिपि ।

इस तरह मैं इसे शुरू करूंगा।

एक और तरीका यह है कि जब आप इंस्टॉल करते हैं तो सभी स्थापित फ़ाइलों की एक सूची बनाना है (इसे बनाने के लिए यह एक अस्थायी निर्देशिका में perl स्थापित करता है और फिर उस निर्देशिका पर ls -lR को सूची में ge करने के लिए) और फिर प्रतिलिपि बनाएँ आपके perl स्रोत निर्देशिका में स्थापित perl से उन फ़ाइलों।

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

+0

हेवन; अभी तक यह कोशिश नहीं की है, लेकिन मुझे लगता है कि मुझे पहले 'कॉन्फ़िगर करें' और 'मेक' करना है ... हम्मम्म .... – ErikR

2
  • संभव।
  • हार्ड।
  • इसके लायक नहीं है।

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

आप ऐसा क्यों करना चाहते हैं? यदि आप सिस्टम पर्ल पर भरोसा नहीं करते हैं, तो इसका उपयोग न करें। अपना खुद का निर्माण करें, इसका परीक्षण करें, और इसे सिस्टम स्थान के बजाय अपने स्थान पर इंस्टॉल करें। मैं ज्यादातर समय करता हूं; मैं इसे संशोधित करके और स्वयं का उपयोग करके सिस्टम के पर्ल को तोड़ने का जोखिम नहीं उठाता। बेशक, मेरे पास खेलने के लिए 5.10.0, 5.10.1, 5.12.1, 5.14.0 और 5.14.1 निर्मित (मेरे द्वारा) हैं। मेरे पास आमतौर पर कम से कम एक 5.8.x संस्करण होता है, लेकिन इस समय इस मशीन पर नहीं।

साथ ही, याद रखें कि सिस्टम पर्ल स्थापित करने वाले लोग सचेत हैं। वे परीक्षण चलाते हैं और पर्ल स्थापित नहीं करते हैं जब तक कि सभी परीक्षण पास न हों (या काफी हद तक सभी पास)।

+0

यही कारण है कि मुझे आश्चर्य है कि आपको 'कॉन्फ़िगर करें' और पहले 'बनाओ'। फिर केवल निर्मित पर्ल के बजाय अपने perl का उपयोग करने में परीक्षण दोहन की चाल करें। क्यों कोई भी ऐसा करना चाहेगा - मान लें कि आपको पहले से इंस्टॉल किए गए पर्ल की टैर-बॉल मिलती है। इसे अनपॅक करने के बाद मैं इसका परीक्षण करने में सक्षम होना चाहता हूं। मेरे पास मेरे कारण हैं :-) – ErikR

+0

आपको मेकफ़ाइल प्राप्त करने के लिए कॉन्फ़िगर करना होगा। यदि आप पहले 'मेक' चलाने के बिना 'टेस्ट टेस्ट' चलाते हैं, तो 'मेक टेस्ट' आपके लिए 'सादे मेक' चलाएगा, इसलिए आप किसी भी परीक्षण से पहले सॉफ्टवेयर के निर्माण के साथ समाप्त हो जाएंगे। इसके अलावा, आपको निर्माण क्षेत्र में मॉड्यूल का परीक्षण करने और इसके बजाय स्थापित मॉड्यूल का परीक्षण करने के लिए कड़ी मेहनत करनी होगी। यह पर्ल परीक्षण सूट के लिए डिज़ाइन किया गया था जो घट रहा है। मुझे लगता है कि आप निर्माण पर स्थापित कोड की प्रतिलिपि बनाने का प्रयास कर सकते हैं, लेकिन यह भी गैर-तुच्छ है, खासकर अगर लेआउट मानक नहीं है। –

+0

मुझे लगता है कि आपको अपने स्थापित पर्ल के साथ 'इंस्टॉल इंस्टॉल' के विपरीत करना होगा। यह मनमाने ढंग से जटिल या असंभव भी हो सकता है। – musiKk

2

संभव है, केवल एक छोटा सा कठिन (कोई Configure या make आवश्यक), हो सकता है उपयोगी:

निर्देशिका /path/to/src/distribution/lib'. The key to running your existing perl installation against this test suite is to put all of the install libraries into this lib` निर्देशिका से बाहर स्रोत वितरण भार में सब कुछ परीक्षण योजना।

cd /path/to/src/distribution 
mv lib lib-original 
mkdir lib 
/path/to/installed/perl -e 'system qq{cp -prv "$_/." lib/}' \ 
     -e 'for "lib-original",grep /../,reverse(@INC)' 

(वहाँ शायद एक और अधिक मजबूत perl आदेश -MFile::Copy का उपयोग करता है, लेकिन इस त्वरित और गंदे एक लाइनर मुझे जा रहा मिला): कुछ इस तरह से किया जा सकता। हम reverse @INC का उपयोग करते हैं ताकि @INC के सामने से पुस्तकालय बाद के पुस्तकालयों को ओवरराइट कर सकें, न कि दूसरी तरफ। grep /../,... खंड हमें . को lib में कॉपी करने से रोकता है, जो शायद सहायक नहीं होगा।

मुझे कुछ परीक्षण मिले जो perl, psed और s2p पर स्रोत निर्देशिका में हार्ड-कोड किए गए पथ का उपयोग करते हैं। आप यह सुनिश्चित करना चाहते हैं कि ये फ़ाइलें मौजूद हैं और परीक्षण इन कार्यक्रमों के स्थापित संस्करणों को लक्षित करते हैं। इसलिए कुछ विफलताओं निर्माण से स्रोत प्रक्रिया की अखंडता का परीक्षण के बारे में

cd t 
/path/to/installed/perl -MExtUtils::Command::MM \ 
     -e 'test_harness(0,"../lib")' */*.t 

कुछ परीक्षण हो सकता है स्पष्ट रूप से,:

rm -f perl t/perl psed t/psed x2p/s2p 
ln -s /path/to/installed/perl perl 
ln -s /path/to/installed/perl t/perl 
ln -s /path/to/installed/psed psed 
ln -s /path/to/installed/psed t/psed 
ln -s /path/to/installed/s2p x2p/s2p 

अब एक पर्ल टेस्ट स्वीट चलाने के लिए नियमित रूप से यूनिक्स-y मुहावरा का उपयोग उम्मीद की जा रही है।

(इस प्रक्रिया v5.14.0, v5.8.9, v5.10.1 पर परीक्षण)

अद्यतन: कठिन अभी भी। एक विशिष्ट स्रोत वितरण के अंदर कई अन्य t निर्देशिकाएं हैं। आपको शायद यह भी पता करने की कोशिश करना चाहते हैं:

cd /path/to/source/distribution 

for dir in */*/ 
do 
     if [ -d $dir/t ] ; then 
      pushd $dir 
      echo Testing $dir 
      /path/to/installed/perl -MExtUtils::Command::MM \ 
        -e 'test_harness(0,"../../lib","lib")' t/*.t 
      popd 
     fi 
done 

इन परीक्षणों में से कई स्पष्ट रूप से, निर्माण की अखंडता का परीक्षण कर रहे हैं ताकि आप इन परीक्षणों विफल के कई उम्मीद कर सकते हैं।

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