আমি বিশ্বাস করতে পারি না যে ওএসএইচটি নিয়ে কেউ কথা বলেনি ! এটি 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
। আমার জন্য, এই কাঠামোটি সর্বনিম্ন ওভারহেডের জন্য সর্বাধিক লাভ সরবরাহ করে।