मैंने हाल ही में अपने निर्माण सिस्टम को automake/autoconf में परिवर्तित कर दिया है। मेरी परियोजना में मेरे पास कुछ यूनिट परीक्षण हैं जिन्हें कुछ इनपुट डेटा फ़ाइलों को सख्त में जहां से वे चलाए जाते हैं, की आवश्यकता होती है। जब मैं रनशेक करता हूं और यह वीपीएटीएच बिल्ड की कोशिश करता है, तो ये परीक्षण विफल हो जाते हैं क्योंकि वे स्पष्ट रूप से निर्देशिका से नहीं चलते हैं जहां इनपुट फाइलें होती हैं। मैं सोच रहा था कि इसके लिए कुछ त्वरित समाधान है या नहीं। उदाहरण के लिए, क्या मैं किसी भी तरह सिस्टम को बता सकता हूं कि इन परीक्षणों को डिस्टचेक बनाने के लिए नहीं चलाया जा सकता है (लेकिन फिर भी उन्हें चेक बनाने पर चलाएं)? या निर्देशिका में सीडी करने के लिए जहां फाइलें परीक्षण चलाने से पहले हैं?डिस्चेक और परीक्षण करें जिन्हें इनपुट फ़ाइलों की आवश्यकता है
उत्तर
सामान्य समाधान परीक्षण लिखना है ताकि वे डेटा फ़ाइलों के लिए स्रोत निर्देशिका में देखें। उदाहरण के लिए, आप परीक्षण में $srcdir
का संदर्भ दे सकते हैं, या test
से test.in
पर परिवर्तित कर सकते हैं और @[email protected]
देखें।
अपने परीक्षण स्रोत निर्देशिका में सभी कर रहे हैं, तो आप Makefile.am में TESTS_ENVIRONMENT निर्धारित करके कि निर्देशिका में सभी परीक्षणों चला सकते हैं:
TESTS_ENVIRONMENT = cd $(srcdir) &&
यह असफल हो जायेगी अपने परीक्षण के कुछ कॉन्फ़िगर द्वारा बनाई गई हैं, तो और इसलिए निर्माण निर्देशिका में ही रहते हैं, ऐसी स्थिति में आप कर सकते हैं चुनिंदा तरह कुछ के साथ सीडी:
TESTS_ENVIRONMENT = { test $${tst} = mytest && cd $(srcdir); true; } &&
TESTS_ENVIRONMENT उपयोग करने के लिए की तरह इस पर सबसे अच्छा नाजुक है की कोशिश कर रहा है, और यह सबसे अच्छा होगा परीक्षण लिखने के लिए चाहते हैं, ताकि वे स्रोत सख्त में देखो डेटा फ़ाइलों के लिए ctory।
मुझे वही समस्या थी और विलियम के समान समाधान था।
EXTRA_DIST = testdata/test1.dat
AM_CPPFLAGS = -DDATADIR=\"$(srcdir)/\"
फिर, मेरी unittest में, मैं DATADIR का उपयोग को परिभाषित:
string path = DATADIR "/testdata/test1.dat"
यह make check
और make distcheck
साथ काम करता है मेरे Makefile.am कुछ इस तरह लग रहा है।
- 1. Mercurial - फ़ाइलों की सूची देखें जिन्हें मैन्युअल रूप से विलय करने की आवश्यकता है?
- 2. जावा वीएम जिन्हें ऑपरेटिंग सिस्टम की आवश्यकता नहीं है?
- 3. आवश्यक इनपुट की आवश्यकता नहीं है
- 4. परीक्षण लेखन के साथ की आवश्यकता है
- 5. मुझे क्लोजर फ़ाइलों की आवश्यकता और प्रदान करने की आवश्यकता कैसे है?
- 6. परीक्षण नोड.जेएस, एक मॉड्यूल की नकल और परीक्षण की आवश्यकता है?
- 7. rsync केवल उन फ़ाइलों को रिपोर्ट करें जिन्हें
- 8. एंड्रॉइड एप्लिकेशन को बड़ी डेटा फ़ाइलों की आवश्यकता है
- 9. अपलोड की गई फ़ाइलों की संख्या को सीमित और सीमित करें (HTML फ़ाइल इनपुट)
- 10. उस प्रोजेक्ट में कक्षाओं की सूची कैसे प्राप्त करें, जिन्हें उस परियोजना में किसी भी चीज की आवश्यकता नहीं है
- 11. डोजो की आवश्यकता है() और एएमडी (1.7)
- 12. क्या .dmg फ़ाइलों को हस्ताक्षरित करने की आवश्यकता है?
- 13. फोनगैप स्टार्टअप - क्या हमें उन सभी फ़ाइलों की आवश्यकता है?
- 14. हाइबरनेट 4.1.9: मुझे कौन सी जार फ़ाइलों की आवश्यकता है?
- 15. क्या ककड़ी इकाई परीक्षण लिखने की आवश्यकता से दूर है?
- 16. क्यों "{} \" की आवश्यकता है?
- 17. विंडोज के लिए कौन सा सबवर्जन क्लाइंट ऐसे हैं जिन्हें इंस्टॉलेशन की आवश्यकता नहीं है?
- 18. सत्र_ नष्ट क्यों करें() की आवश्यकता है?
- 19. getline() के साथ की आवश्यकता है
- 20. पर्ल मॉड्यूल स्थापित करें जिन्हें सीपीएएन
- 21. fopen'd फ़ाइलों के लिए डिफ़ॉल्ट इनपुट और आउटपुट बफरिंग?
- 22. RAILS_ROOT की आवश्यकता है?
- 23. 'rubygems' की आवश्यकता है
- 24. ड्रॉपडाउन से मूल्यों की सूची प्राप्त करें जिन्हें jquery
- 25. स्क्रैपिंग साइट्स जिन्हें पाइथन
- 26. कॉमन्स सीएलआई को समूहों की आवश्यकता है
- 27. एआईडीएल ट्यूटोरियल की आवश्यकता है
- 28. लिनक्स ग्लिब को pkg-config की आवश्यकता है और pkg-config को glib की आवश्यकता है?
- 29. क्या मोनैड हैं जिन्हें एक automaton की तरह इस्तेमाल किया जा सकता है?
- 30. रेल: एक सहायक का परीक्षण करें जिसे रेल पर्यावरण तक पहुंच की आवश्यकता है (उदा। Request.fullpath)
मेरे परीक्षण src/some/path में हैं और डेटा फाइलें एक ही निर्देशिका में हैं। मैंने TESTS_ENVIRONMENT = cd $ (srcdir) और चाल की कोशिश की है लेकिन यह काम नहीं कर रहा है क्योंकि अब यह परीक्षण निष्पादन योग्य नहीं है। मौजूदा डेटा फ़ाइलों को मौजूदा निर्देशिका में कॉपी करना भी काम नहीं करता है क्योंकि, वीपीएटीएच बिल्ड में, आपको स्पष्ट रूप से निर्देशिका में लिखने की अनुमति नहीं है जहां परीक्षण चल रहे हैं। –
@ मार्टिन, आपके पास स्रोत निर्देशिका में लेखन पहुंच नहीं है, लेकिन आपके पास बिल्ड निर्देशिका में लेखन पहुंच है। आप फाइल की प्रतिलिपि कैसे बना रहे हैं? Test.in में Makefile.am और 'cp $ {srcdir}/datafile .' में बस 'EXTRA_DIST = datafile' जोड़ना चाहिए। हालांकि, यदि परीक्षण स्रोत निर्देशिका से चल रहा है तो कॉपी करने का प्रयास लिखने की अनुमति के कारण विफल हो जाएगा। मुझे संदेह है कि आपके पास कुछ परीक्षण हैं जो बिल्ड डीआईआर से चलते हैं और कुछ जो स्रोत डीआईआर से चलते हैं। ('* .in' नामक टेस्ट (शायद) बिल्ड डीआईआर से चलते हैं, जबकि अन्य परीक्षण स्रोत डीआईआर से चलाए जाते हैं।) –
यह बिल्कुल वैसा ही दिखता था जो मैं ढूंढ रहा था, लेकिन यह ऑटोमैक के साथ काम नहीं कर रहा है 1.15, दुर्भाग्यवश: इसके साथ, यह स्रोत निर्देशिका में '* .log' और' * .trs' फ़ाइलों को बनाता है (जो पहले से ही खराब है), लेकिन फिर भी उन्हें बिल्ड निर्देशिका में ढूंढता है और, ज़ाहिर है, नहीं मिला वहां उन्हें (जो घातक है)। –