Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

Golang :: แก้ไขปัญหาเรื่องของ coverage report นิดหน่อย

$
0
0

ปัญหาที่พบเจอ เมื่อทำการทดสอบ และสร้าง coverage report ออกมาด้วยคำสั่ง [code] $go test -coverprofile=cover.out $go tool cover -html=cover.out -o coverage.html [/code] จะเกิดปัญหาประมาณนี้ [code] cover: can't find "api.go": cannot find package "_/Users/somkiat/data/slide/golang/poc/" in any of: /usr/local/Cellar/go/1.8.3/libexec/src/_/Users/somkiat/data/slide/golang/poc (from $GOROOT) /Users/somkiat/go/src/_/Users/somkiat/data/slide/golang/poc (from $GOPATH) [/code] ทำให้ไม่สามารถสร้างรายงานของ code coverage ในรูปแบบ HTML ได้ ดังนั้นเรามาแก้ไขปัญหากันหน่อย

เมื่อไปดูใน issue list ของ Golang พบว่า

มี issue 17269 ชื่อว่า cmd/cover: cannot find package in local directory outside GOPATH ซึ่งเป็นปัญหาตั้งแต่ Golang 1.7.1 แล้ว ตอนนี้ลองทดสอบบน Golang 1.9 beta 2 ก็ยังเกิดปัญหาอยู่ เพราะว่า issue ยังอยู่ในสถานะ open !! แต่จากที่อ่านเห็นว่าจะแก้ไขใน version 1.9 และ 1.10 นะ

ปัญหาหลัก ๆ คือ หาไฟล์ใน project ของเราไม่เจอนั่นเอง

นั่นคือ ปัญหาเกิดจากการเข้าไปอ่านข้อมูลของ code coverage จากไฟล์ cover.out มีข้อมูลดังนี้ [code] mode: set _/Users/somkiat/data/slide/golang/poc/api.go:13.53,16.2 1 0 _/Users/somkiat/data/slide/golang/poc/api.go:18.37,20.18 2 1 _/Users/somkiat/data/slide/golang/poc/api.go:23.2,23.10 1 1 _/Users/somkiat/data/slide/golang/poc/api.go:20.18,22.3 1 1 _/Users/somkiat/data/slide/golang/poc/api.go:26.13,29.2 2 0 [/code] ปัญหาที่เกิดคือ ไม่เข้าใจ _/Users/somkiat/data/slide/golang/poc/ จะไปแก้ไข code ที่ cmd/cover tool ก็ดูลำบาก

ดังนั้นเรามาแก้ไขปัญหาเฉพาะหน้ากันก่อนดีกว่า

ด้วยการแก้ไขข้อมูลในไฟล์ cover.out ดังนี้ [code] mode: set ./api.go:13.53,16.2 1 0 ./api.go:18.37,20.18 2 1 ./api.go:23.2,23.10 1 1 ./api.go:20.18,22.3 1 1 ./api.go:26.13,29.2 2 0 [/code] ก็สามารถสร้างไฟล์ HTML ออกมาได้ดังนี้

แต่ถ้าต้องมาแก้ไขเองด้วยมือตลอด คงไม่ดีแน่ ๆ

ดังนั้นก็เขียน script มาใช้งานนิดหน่อย ตามนิสัยคนขี้เกียจดังนี้ [code] go test -coverprofile=cover.out sed -i.bak 's/_\/Users\/somkiat\/data\/slide\/golang\/poc/./g' cover.out go tool cover -html=cover.out -o coverage.html [/code] เพียงเท่านี้ก็พอไปวัดไปวาได้บ้างแล้ว ขอให้สนุกกับการ coding ครับ

Viewing all articles
Browse latest Browse all 1997

Trending Articles