Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Testing Wercker plugin with bats
Search
TAKAHASHI Kazunari
November 29, 2014
590
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Testing Wercker plugin with bats
TAKAHASHI Kazunari
November 29, 2014
More Decks by TAKAHASHI Kazunari
See All by TAKAHASHI Kazunari
fat-settings-yml
1syo
0
900
雑につくるKPIツールのススメ
1syo
0
510
みなとRuby会議02やりたい
1syo
1
330
私を変えた1冊の本
1syo
0
870
普通のCSVアップロードフォームを作りたい(改)
1syo
9
1.1k
普通のCSVアップロードフォームを作りたい
1syo
17
3k
kaja-2013
1syo
0
550
untestable production code
1syo
0
560
authorization-for-buktorg
1syo
0
380
Featured
See All Featured
Speed Design
sergeychernyshev
33
1.9k
A Tale of Four Properties
chriscoyier
163
24k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.3k
New Earth Scene 8
popppiees
3
2.4k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
62
55k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
Practical Orchestrator
shlominoach
191
11k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
4 Signs Your Business is Dying
shpigford
187
22k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
Transcript
!TZP 5PLZV3VCZ,BJHJ 5FTUJOH 8FSDLFSQMVHJO XJUICBUT
͓ͼ
͓Βͤ ౦ژ3VCZձ 4BU ւಓ্খ࿏ళ ߴڮձͱΛ࿑͓͏
None
8FSDLFSQMVHJOʹ CBUTͰ ςετΛॻ͘
8FSLFSͱ 5IF0QFOEFMJWFSZQMBUGPSN ϓϥΠϕʔτϦϙδτϦͷ$*͕ແྉ QMVHJOΛ3VCZ#BTIͰ࡞ νϟοτʹ$*ͷ݁ՌΛ௨
CBUTͱʁ #BTI"VUPNBUFE5FTUJOH4ZTUFN SCFOW SVCZCVJMEͰར༻
γΣϧεΫϦϓτͷ ςετͷͰ͢
JEPCBUBOPUJGZ
JEPCBUBOPUJGZ ݄WϦϦʔε JEPCBUBʹ$*ͷ݁ՌΛ௨ CVJMEEFQMPZʹରԠ ͍͢͝؆୯ͳ4IFMM4DSJQU
1MVHJOͷલఏ݅ XFSDLFSͷڥม ݸ͘Β͍ XFSDLFSͷGVODUJPO QMVHJOͷڥม
1MVHJOͷͬͯΔ͜ͱ ඞਢͷڥมΛνΣοΫ 50,&/ ڥม͔Βใऩूͯ͠จݴ࡞ CVJMEͷ൱
DVSMͰ1045
1MVHJOΛςετ͢Δૂ͍ લఏ݅Λίʔυʹ͍ͨ͠ લఏ݅Λίʔυʹ͍ͨ͠ લఏ݅Λίʔυʹ͍ͨ͠ લఏ݅Λίʔυʹ͍ͨ͠
ύϥϝʔλΛม͑ͯݕূ͍ͨ͠
ςετ͕ඞཁͳΒ3VCZ͍͑ ͍͡ΌΜͱࢥ͏͚ΕͲɺϓϩμ Ϋγϣϯίʔυγϯϓϧͳ༁ ͩ͠ɺલఏ݅ΛίʔυʹͰ͖Ε ͍͍ͷ͔ͩΒɺ4IFMM4DSJQU Ͱߦ͚ΔΜ͡Όͳ͍ߟ͑ͨ
ײ લఏ݅ΛίʔυʹͰ͖ͨ ׳ΕΔ·Ͱ͕͔͔࣌ؒͬͨ TUVC͕ະղܾ 4IFMM4DSJQUྗऑ͍
ݱঢ়ͩͱ3VCZͰͬͨ΄͏ָ͕
SVOTI
SVOTI source "$WERCKER_STEP_ROOT/functions.sh"! ! error_message=$(valid)! if [ $? = 1
]; then! warn "$error_message"! exit 0! fi! ! http_code=`curl \! --silent \! --data "format=html" \! --data-urlencode "source=$(message)" \! --output "$WERCKER_STEP_TEMP/result.txt" \! --write-out "%{http_code}" \! "https://idobata.io/hook/$WERCKER_IDOBATA_NOTIFY_TOKEN"`! ! if [ "$http_code" = "200" ]; then! success "Finished successfully!"! else! warn `cat $WERCKER_STEP_TEMP/result.txt`! warn "Finished unsuccessfully."! fi
GVODUJPOTTI ൈਮ valid() {! if [ ! -n "$WERCKER_IDOBATA_NOTIFY_TOKEN" ];
then! echo 'Please specify token property.'! exit 1! fi! }! ! build_result() {! result=$(tr '[a-z]' '[A-Z]' <<<"$WERCKER_RESULT")! if [ "$WERCKER_RESULT" = "passed" ]; then! echo "<span class=\"label label-success\">$result</span>"! else! echo "<span class=\"label label-important\">$result</span>"! fi! }
UFTUUFTU@IFMQFSCBTI
UFTUUFTU@IFMQFSCBTI export PATH="$BATS_TEST_DIRNAME/..:$PATH"! ! if [ ! -n "$WERCKER" ];
then! export WERCKER_GIT_DOMAIN="github.com"! export WERCKER_GIT_OWNER="1syo"! export WERCKER_GIT_REPOSITORY="wercker-step-idobata-notify"! export WERCKER_GIT_BRANCH="master"! export WERCKER_GIT_COMMIT="aff2f780d59346c0386d59db6aac62e02be2005a"! export WERCKER_STARTED_BY="TAKAHASHI Kazunari"! export WERCKER_APPLICATION_ID="5253e1053673929130009361"! export WERCKER_APPLICATION_NAME="wercker-step-idobata-notify"! export WERCKER_APPLICATION_OWNER_NAME="1syo"! export WERCKER_APPLICATION_URL=\! ! ! ! ”https://app.wercker.com/#applications/5253e1053673929130009361"! export WERCKER_STEP_ROOT="."! export WERCKER_STEP_TEMP=$BATS_TMPDIR! fi
UFTUUFTU@IFMQFSCBTI success() {! echo $1! }! ! fail() {! echo
$1! exit 1! }! ! warn() {! echo $1! }! ! export -f success! export -f fail! export -f warn
%FWDFOUFS &OWJSPONFOU7BSJBCMFT 8SJUJOHPVUQVU 1SFEFpOE7BSJBCMFT
UFTUUFTU@IFMQFSCBTI stub() {! local cmd=$1! local ret=$2! eval "$(echo -e
"${cmd}() {\n echo $ret\n}")"! export -f ${cmd}! }! ! unstub() {! local cmd=$1! unset -f "$cmd"! }
TUVC ୈҰҾʹTUVC͍ͨ͠ίϚϯυ ୈೋҾʹίϚϯυͷ࣮ߦ݁Ռ TUVCDVSM
UFTUSVOCBUT
UFTUSVOCBUT #!/usr/bin/env bats! load test_helper! ! @test "Token undefined" {!
WERCKER_IDOBATA_NOTIFY_TOKEN="" \! WERCKER_STEP_ROOT="." \! run run.sh! ! [ "$status" = "0" ]! [ "$output" = "Please specify token property." ]! }
ςετͷߏ ධՁ͍ͨ͠ڥมFYQPSU͠ͳ͍ TUBUVTʹऴྃίʔυ PVUQVUʹඪ४ग़ྗ͔ඪ४Τϥʔ
UFTUSVOCBUT @test "Send a message" {! stub curl 200! !
WERCKER_IDOBATA_NOTIFY_TOKEN=token \! WERCKER_BUILD_URL="http://example.com/build/1" \! WERCKER_BUILD_ID=1 \! WERCKER_RESULT="passed" \! WERCKER_STEP_ROOT="." \! CI=true \! run run.sh! ! [ "$status" = "0" ]! [ "$output" = "Finished successfully!" ]! unstub curl! }
UFTUSVOCBUT @test "Can not send a message" {! echo "Error"
> "$WERCKER_STEP_TEMP/result.txt"! stub curl 500! ! WERCKER_IDOBATA_NOTIFY_TOKEN=token \! WERCKER_RESULT="passed" \! WERCKER_STEP_ROOT="." \! CI=true \! run run.sh! ! [ "$status" = "0" ]! [ "${lines[0]}" = "Error" ]! [ "${lines[1]}" = "Finished unsuccessfully." ]! unstub curl! ! rm "$WERCKER_STEP_TEMP/result.txt"! }
CBUTUFTU 㾎5PLFOVOEFpOFE 㾎/PUJGZTLJQ 㾎#VJME1BTTFE 㾎%FQMPZQBTTFE 㾎#VJMEGBJMVSF 㾎%FQMPZGBJMVSF 㾎5PLFOVOEFpOFE 㾎4FOEBNFTTBHF 㾎$BOOPUTFOEB
NFTTBHF ! UFTUT GBJMVSFT
ײ લఏ݅ΛίʔυʹͰ͖ͨ ׳ΕΔ·Ͱ͕͔͔࣌ؒͬͨ 4IFMM4DSJQUྗऑ͍ TUVC͕ະղܾ
ݱঢ়ͩͱ3VCZͰͬͨ΄͏ָ͕
-FU`TXSJUJOH XSFDLFSQMVHJO XJUICBUT