c++ - boost::unit_test case fails because a child process exits with nonzero -


मेरे पास निम्न कोड है:

  bool f () {command = "mkdir - P / \ / \ / "; परिणाम = एक सिस्टमकॉल (कमांड); यदि (परिणाम == ...) BOOST_AUTO_TEST_CASE (BadDir) {BOOST_CHECK_EQUAL (गलत, एफ ())}}   

यदि मैं कमांड लाइन में कमांड निष्पादित करता हूं, मुझे एक अनुमति अस्वीकृत त्रुटि मिलती है। मुझे इस बारे में पता है। वही मैं परीक्षण करना चाहता हूं।
aSystemCall कमांड को एक बाल प्रक्रिया के रूप में कार्यान्वित करता है। यह आदेश, aSystemCall एक त्रुटि देता है। यह नहीं फेंकता है।
अगर मैं BadDir कमांड लाइन में टेस्ट केस चलाता हूं, तो कोड aSystemCall कभी निष्पादित नहीं होता है, और निम्नलिखित आउटपुट के साथ परीक्षण विफल रहता है:

  mkdir: निर्देशिका नहीं बना सकता / / \ / \ / ': अनुमति अस्वीकृत अज्ञात स्थान (0): "BadDir" में घातक त्रुटि: बच्चा निकाला गया है; पीआईडी: 25356; यूआईडी: 1 9 753; निकास मूल्य: 1 टेस्ट सीपीपी (100): अंतिम चेकपॉइंट टेस्ट केस छोड़कर "BadDir"; परीक्षण का समय: परीक्षण सूट "मास्टर टेस्ट सूट"   

अगर मैं BadDir परीक्षण केस जीडीबी में चलाता हूँ, aSystemCal L देता है, परिणाम की जांच की जा सकती है, और परीक्षा पास हो सकती है।

क्या बढ़ावा देने के लिए एक तरीका है: unit_test को इस तरह की संभावित त्रुटियों को फ़िल्टर करने के लिए, ताकि निष्पादन जारी हो सकता है? मैंने BOOST_AUTO_TEST_CASE_EXPECTED_FAILURE (blah, 1) की कोशिश की है, लेकिन यह सिर्फ बढ़ावा देने के लिए: unit_test को बताता है कि आप विफलता की उम्मीद कर रहे हैं यह जांच में विफलता का पता लगाता है (उम्मीद की उम्मीद है)। मैं इसके बजाय एक उत्तीर्ण परीक्षा की स्थिति चाहूंगा।

यह बूस्ट के बाद के संस्करण में हल किया जाता है।

Comments