मेरे पास कुछ कोड है जिसे मैं एक छोटी लिपि के साथ परीक्षण करना चाहता हूं। यह पूरी तरह से समाप्त नहीं हुआ है, लेकिन बाद में इसे कम से कम विफल होना चाहिए। यह स्क्रिप्ट है:

set -e
set -u
set -x

echo "Hello!"
"$1/contract" -i test_all.ini
h5diff FILE1 FILE2

जब मैं इसे कमांड लाइन से कॉल करता हूं

/usr/bin/bash \
    "/home/mu/Projekte/sLapH-contractions/integration-test-L4/run-integration-test" \
    "/home/mu/Build/sLapH-contractions"

यह अपेक्षा के अनुरूप काम करता है:

$ /usr/bin/bash "/home/mu/Projekte/sLapH-contractions/integration-test-L4/run-integration-test" "/home/mu/Build/sLapH-contractions"
+ echo 'Hello!'
Hello!
+ /home/mu/Build/sLapH-contractions/contract -i test_all.ini
CANNOT open input file: test_all.ini
+ h5diff FILE1 FILE2
h5diff: <FILE1>: unable to open file

अब मैं इस परीक्षण को अपने प्रोजेक्ट में ctest या make test से चलाना चाहता हूं। मैंने अपने CMakeLists.txt में निम्नलिखित को जोड़ा है:

enable_testing()

add_test(NAME sanity-1
    COMMAND bash -c "echo Sanity 1"
    WORKING_DIRECTORY /tmp)

add_test(NAME integration-L4
    COMMAND bash "${CMAKE_CURRENT_SOURCE_DIR}/integration-test-L4/run-integration-test" "${CMAKE_CURRENT_BINARY_DIR}"
    WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/integration-test-L4/integration-test-L4")

जब मैं इसे ctest के साथ चलाता हूं, तो यह परीक्षण भी नहीं चलाता है!

$ ctest -VV
UpdateCTestConfiguration  from :/home/mu/Build/sLapH-contractions/DartConfiguration.tcl
UpdateCTestConfiguration  from :/home/mu/Build/sLapH-contractions/DartConfiguration.tcl
Test project /home/mu/Build/sLapH-contractions
Constructing a list of tests
Done constructing a list of tests
Updating test list for fixtures
Added 0 tests to meet fixture requirements
Checking test dependency graph...
Checking test dependency graph end
test 1
    Start 1: sanity-1

1: Test command: /usr/bin/bash "-c" "echo Sanity 1"
1: Test timeout computed to be: 9.99988e+06
1: Sanity 1
1/2 Test #1: sanity-1 .........................   Passed    0.00 sec
test 2
    Start 2: integration-L4

2: Test command: /usr/bin/bash "/home/mu/Projekte/sLapH-contractions/integration-test-L4/run-integration-test" "/home/mu/Build/sLapH-contractions"
2: Test timeout computed to be: 9.99988e+06
2/2 Test #2: integration-L4 ...................***Not Run   0.00 sec

50% tests passed, 1 tests failed out of 2

Total Test time (real) =   0.01 sec

The following tests FAILED:
          2 - integration-L4 (BAD_COMMAND)
Errors while running CTest

मुझे BAD_COMMAND त्रुटि पर कुछ भी उपयोगी नहीं मिला।

ऐसा क्या हो सकता है जो इस परीक्षण को बिल्कुल भी चलने से रोकता है?

1
Martin Ueding 10 नवम्बर 2017, 16:39

2 जवाब

सबसे बढ़िया उत्तर

आप "${CMAKE_CURRENT_SOURCE_DIR}/integration-test-L4/integration-test-L4" को कार्यशील निर्देशिका के रूप में निर्दिष्ट कर रहे हैं। सुनिश्चित करें कि निर्देशिका वास्तव में मौजूद है (या यदि पुनरावृत्ति त्रुटि में है तो अंतिम बिट को हटा दें)।

3
Angew is no longer proud of SO 10 नवम्बर 2017, 17:26

मैंने विंडोज़ पर पुराने सीएमके (v2.8.12) के साथ इसी तरह के मुद्दों को देखा - एक कमांड जो प्रॉम्प्ट पर चलता है लेकिन सीटीएस्ट से BAD_COMMAND के साथ विफल रहता है। अंतर्निहित समस्या शेल द्वारा निष्पादित निष्पादन योग्य खोज के कारण थी - देखें यह उत्तर अधिक जानकारी के लिए।

इसलिए add_test(my_test c:/node_js/npm run test) के साथ एक परीक्षण जोड़ना काम नहीं करता है, हालांकि c:\node_js\npm मौजूद है, यह वास्तव में c:\node_js\npm.cmd को निष्पादित करता है। क्रियान्वित की जाने वाली कमांड में .cmd जोड़कर फिक्स्ड।

1
Das_Geek 20 सितंबर 2019, 18:24