Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Testing Wercker plugin with bats
Search
TAKAHASHI Kazunari
November 29, 2014
600
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
910
雑につくるKPIツールのススメ
1syo
0
530
みなとRuby会議02やりたい
1syo
1
370
私を変えた1冊の本
1syo
0
880
普通のCSVアップロードフォームを作りたい(改)
1syo
9
1.1k
普通のCSVアップロードフォームを作りたい
1syo
17
3k
kaja-2013
1syo
0
550
untestable production code
1syo
0
580
authorization-for-buktorg
1syo
0
380
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
55
13k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Being A Developer After 40
akosma
92
590k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
77k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
320
The browser strikes back
jonoalderson
0
1.8k
Designing for humans not robots
tammielis
254
26k
Why Our Code Smells
bkeepers
PRO
340
58k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.4k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
530
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