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
890
雑につくるKPIツールのススメ
1syo
0
510
みなとRuby会議02やりたい
1syo
1
330
私を変えた1冊の本
1syo
0
860
普通のCSVアップロードフォームを作りたい(改)
1syo
9
1.1k
普通のCSVアップロードフォームを作りたい
1syo
17
3k
kaja-2013
1syo
0
540
untestable production code
1syo
0
560
authorization-for-buktorg
1syo
0
380
Featured
See All Featured
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.3k
A better future with KSS
kneath
240
18k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
22k
From π to Pie charts
rasagy
0
200
Building Applications with DynamoDB
mza
96
7.1k
A designer walks into a library…
pauljervisheath
211
24k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
200
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
240
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
220
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
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