2016-06-05 7 views
7

में डाउनलोड की गई फ़ाइलों तक पहुंचें मैं एक सी पुस्तकालय के लिए होमब्री फ़ॉर्मूला बना रहा हूं जिसमें अपना स्वयं का परीक्षण सूट शामिल है। फॉर्मूला के लिए test ब्लॉक के हिस्से के रूप में, मैं डाउनलोड की गई फ़ाइलों के साथ शामिल परीक्षणों को चलाने के लिए चाहता हूं। परीक्षण make लक्ष्य (make test) के रूप में चलाए जाते हैं। हालांकि, होमब्रू test ब्लॉक अपनी अस्थायी निर्देशिका में चलते हैं और डाउनलोड की गई फ़ाइलें पथ में नहीं हैं। यही कारण है, निम्नलिखित काम नहीं करता है, क्योंकि यह फ़ाइलों नहीं मिल सकता है:किसी सूत्र के परीक्षण ब्लॉक

test do 
    system "make", "test" 
end 

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

+1

मैं के साथ वास्तविक टारबॉल उपयोग करने में सक्षम होना चाहिए 'self.cached_download', लेकिन मुझे एहसास है कि टैरबॉल उस अस्थायी निर्देशिका में अनपॅक किया गया है जिसमें निर्माण होता है, जिसका अर्थ है कि मुझे इसे' test' में फिर से अनपैक करना होगा। मुझे लगता है कि * इतना * बुरा नहीं है, लेकिन यह अभी भी बेकार है। –

+0

उह, लेकिन अगर मैं ऐसा करता हूं, तो मुझे यह देखने के लिए STDOUT को लिखी गई सभी सामग्री को पार्स करने की आवश्यकता होगी ताकि कोई भी चेक विफल हो जाए ताकि मैं एक बूलियन लौटा सकूं। (जब तक कि मैं पूरी तरह से गलत नहीं हूं कि 'टेस्ट' ब्लॉक कैसे काम करता है।) –

उत्तर

1

test do ब्लॉक परीक्षण करने के लिए है कि कोई सूत्र सही ढंग से स्थापित किया गया है, परीक्षण सूट चलाने के लिए नहीं। परीक्षण बहुत लंबा नहीं लेते हैं तो आप उन्हें के हिस्से के रूप में चला सकते हैं स्थापित:

def install 
    # ... 
    system "make", "test" 
    # ... 
end 

अपने प्रश्न का उत्तर देने वहाँ मूल पैक निर्देशिका क्योंकि यह बाद स्थापित नष्ट कर रहा है प्राप्त करने के लिए कोई विश्वसनीय तरीका है और उपयोगकर्ता हो सकता है कैश किए गए टैरबॉल को हटा दिया गया है (उदाहरण के साथ brew cleanup) ताकि आपको इसे फिर से डाउनलोड करना होगा।

एक समाधान आवश्यक परीक्षण फ़ाइलों कहीं, जब परीक्षण वर्तमान निर्देशिका में तो install चरण के दौरान नकल उन्हें सीधे का उपयोग करें या कॉपी उन्हें है जैसे:

def install 
    # ... 
    libexec.install "tests" 
end 

test do 
    cp_r (libexec/"tests"), "." 
    cd "tests" do 
    # I’m assuming the Makefile's paths can be given 
    # as variables here. 
    system "make", "test", "LIB=#{lib}", "INCLUDE=#{include}" 
    end 
end 
संबंधित मुद्दे