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
520
みなとRuby会議02やりたい
1syo
1
370
私を変えた1冊の本
1syo
0
870
普通の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
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
280
The Cost Of JavaScript in 2023
addyosmani
55
10k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
How to train your dragon (web standard)
notwaldorf
97
6.8k
Code Reviewing Like a Champion
maltzj
528
40k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
230
Everyday Curiosity
cassininazir
0
320
Paper Plane (Part 1)
katiecoart
PRO
2
11k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.1k
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