मैं विश्वास नहीं कर सकता कि कोई भी OSHT के बारे में बात नहीं करता है ! यह TAP और JUnit दोनों के साथ संगत है , यह शुद्ध शेल है (जो कि कोई अन्य भाषा शामिल नहीं है), यह स्टैंडअलोन भी काम करता है, और यह सरल और प्रत्यक्ष है।
परीक्षण इस तरह दिखता है (परियोजना पृष्ठ से लिया गया स्निपेट):
#!/bin/bash
. osht.sh
# Optionally, indicate number of tests to safeguard against abnormal exits
PLAN 13
# Comparing stuff
IS $(whoami) != root
var="foobar"
IS "$var" =~ foo
ISNT "$var" == foo
# test(1)-based tests
OK -f /etc/passwd
NOK -w /etc/passwd
# Running stuff
# Check exit code
RUNS true
NRUNS false
# Check stdio/stdout/stderr
RUNS echo -e 'foo\nbar\nbaz'
GREP bar
OGREP bar
NEGREP . # verify empty
# diff output
DIFF <<EOF
foo
bar
baz
EOF
# TODO and SKIP
TODO RUNS false
SKIP test $(uname -s) == Darwin
एक साधारण रन:
$ bash test.sh
1..13
ok 1 - IS $(whoami) != root
ok 2 - IS "$var" =~ foo
ok 3 - ISNT "$var" == foo
ok 4 - OK -f /etc/passwd
ok 5 - NOK -w /etc/passwd
ok 6 - RUNS true
ok 7 - NRUNS false
ok 8 - RUNS echo -e 'foo\nbar\nbaz'
ok 9 - GREP bar
ok 10 - OGREP bar
ok 11 - NEGREP . # verify empty
ok 12 - DIFF <<EOF
not ok 13 - TODO RUNS false # TODO Test Know to fail
अंतिम परीक्षण "ठीक नहीं" के रूप में दिखाता है, लेकिन निकास कोड 0 है क्योंकि यह ए है TODO
। एक क्रिया को भी सेट कर सकते हैं:
$ OSHT_VERBOSE=1 bash test.sh # Or -v
1..13
# dcsobral \!= root
ok 1 - IS $(whoami) != root
# foobar =\~ foo
ok 2 - IS "$var" =~ foo
# \! foobar == foo
ok 3 - ISNT "$var" == foo
# test -f /etc/passwd
ok 4 - OK -f /etc/passwd
# test \! -w /etc/passwd
ok 5 - NOK -w /etc/passwd
# RUNNING: true
# STATUS: 0
# STDIO <<EOM
# EOM
ok 6 - RUNS true
# RUNNING: false
# STATUS: 1
# STDIO <<EOM
# EOM
ok 7 - NRUNS false
# RUNNING: echo -e foo\\nbar\\nbaz
# STATUS: 0
# STDIO <<EOM
# foo
# bar
# baz
# EOM
ok 8 - RUNS echo -e 'foo\nbar\nbaz'
# grep -q bar
ok 9 - GREP bar
# grep -q bar
ok 10 - OGREP bar
# \! grep -q .
ok 11 - NEGREP . # verify empty
ok 12 - DIFF <<EOF
# RUNNING: false
# STATUS: 1
# STDIO <<EOM
# EOM
not ok 13 - TODO RUNS false # TODO Test Know to fail
.t
एक्सटेंशन का उपयोग करने के लिए इसे नाम दें और इसे एक t
उपनिर्देशिका में डालें , और prove(1)
इसे चलाने के लिए आप (पर्ल का हिस्सा) का उपयोग कर सकते हैं :
$ prove
t/test.t .. ok
All tests successful.
Files=1, Tests=13, 0 wallclock secs ( 0.03 usr 0.01 sys + 0.11 cusr 0.16 csys = 0.31 CPU)
Result: PASS
JUnit आउटपुट तैयार करने के लिए सेट OSHT_JUNIT
या पास करें -j
। JUnit को साथ भी जोड़ा जा सकता है prove(1)
।
मैंने इस लाइब्रेरी का उपयोग अपनी फ़ाइलों को सोर्स करने और IS
/ OK
और उनकी निगेटिव और / और स्क्रिप्ट्स का उपयोग करके RUN
/ या उनके साथ सोर्सिंग करके दोनों परीक्षण कार्यों में किया है NRUN
। मेरे लिए, यह ढांचा कम से कम ओवरहेड के लिए सबसे अधिक लाभ प्रदान करता है।