2021-12-08 MySQLはひどいデータベース? / Goで標準出力をテストする方法
MySQLはひどいデータベース?
Twitter で見た話題。
(Oracle からの離職に伴って) MySQL開発チームから去る開発者のメッセージ: MySQLはひどいデータベースであり、PostgreSQLを使うべきだ (MariaDBも同じ)。彼はMySQL開発者としてできる限りのことをやったが、それでもひどい設計であることには変わりがないという。https://t.co/822DGspDys
— 新山祐介 (Yusuke Shinyama) (@mootastic) December 6, 2021
DBの話で盛り上がっている火元はこれか。たしかに MySQLはもっと頑張れよって気持ちになることが多い。8.0でだいぶマシになって戦えるようになった印象 "MySQL is a pretty poor database, and you should strongly consider using Postgres instead." Steinar H. Gunderson https://t.co/23YEqXK0iG
— toshimaru (@toshimaru_e) December 8, 2021
Goで標準出力をテストする方法 - Qiita
captureStdout ヘルパー関数
package main
import (
"bytes"
"io"
"os"
)
func captureStdout(f func()) string {
r, w, err := os.Pipe()
if err != nil {
panic(err)
}
stdout := os.Stdout
os.Stdout = w
f()
os.Stdout = stdout
w.Close()
var buf bytes.Buffer
io.Copy(&buf, r)
return buf.String()
}
テスト部
package main
import "testing"
func TestRun(t *testing.T) {
var code int
out := captureStdout(func() {
code = run([]string{"-x", "2", "-y", "3"})
})
if code != ExitCodeOK {
t.Errorf("Unexpected exit code: %d", code)
}
if out != "2 + 3 = 5\n" {
t.Errorf("Unexpected output: %s", out)
}
}