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
How to Talk to Developers About Accessibility
jct
2
560
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
730
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.9k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Deep Space Network (abreviated)
tonyrice
0
350
How STYLIGHT went responsive
nonsquared
100
6.3k
Designing for humans not robots
tammielis
254
26k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.4k
How to make the Groovebox
asonas
2
2.5k
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