/var/log/messages

debugging with sixth sense

昨日のもくもく

とりあえず燃料を入れつつ着手。とりあえずリポジトリを clone するなど。

1
$ git clone https://github.com/nulab/go-git-http-xfer

とりあえず

Dockerfile を見てみます。つうか、README.md にある test なナニを動かしてみます。

1
$ docker build -t git-http-xfer .

で、以下?

1
$ docker run --rm -v $PWD:/go/src/github.com/nulab/go-git-http-xfer git-http-xfer bash -c "gotestcover -v covermode=count -coverprofile=coverage.out ./..."

テスツの結果てどこに出力なんだろ。つうか docker の -v て何だったか。

その後

ええと、covermode なオプションに ‘–’ が付いていなかったようで。以下が正しいようです。

1
$ docker run --rm -v $PWD:/go/src/github.com/nulab/go-git-http-xfer git-http-xfer bash -c "gotestcover -v -covermode=count -coverprofile=coverage.out ./..."

当り前ですがテスツは PASS でした。

とりあえず

*_test.go を見てみます。つうか go の試験について理解が微妙。以下を確認している次第す。

実装見てると

1
2
3
if _, err := touchCmd.CombinedOutput(); err != nil {
  t.Errorf("Touch Coummand error: %s", err.Error())
}

なカンジすね。Errorf は

1
Errorf is equivalent to Logf followed by Fail.

とのこと。

もう少し

git_test.goTest_Git_getRequestFileInfo_should_return_RequestFileInfo という手続きを見てみます。手順てきにテンポラリなディレクトリを初期化して次に

1
git := newGit(gitRootPath, "/usr/bin/git", true, true)

してるのですがこれは git init なのかどうか。手続き定義は git.go にありますね。構造体を初期化してるだけなのかしら。

引き続き、テンポラリなディレクトリに foo ってディレクトリを掘るのですがその前に

1
absRepoPath := git.GetAbsolutePath(repoPath)

ってしてます。メソッド定義って以下な形なのですね、成程。

1
2
3
func (g *git) GetAbsolutePath(repoPath string) string {
  return path.Join(g.rootPath, repoPath)
}

で、ディレクトリを掘ったら README.txt を touch しています。で、確認事項としては

  • touchCmd.CombinedOutput の戻りの err が nil かどうか
  • git.GetRequestFileInfo の戻りの err が nil かどうか

を確認しています。基本的に touch が成功してれば問題なし、って事だろうと思うのですが、CombinedOutput て何でしょ。

ふむふむ、これは色々な意味でべんりですね。

というか

これ読んでくの、色々な意味で面白いので引き続き、な方向です。

Comments