Mercurial の make tests を走らせてみた #mercurialjp

この記事は Mercurial Advent Calendar 2012 の 16 日目です。


Mercurial のヘルプにミスを見付けた〜とツイートしたら、開発 ML にパッチ送っちゃいなYO! 念のために make tests も動かしなさいよという声が。
ということで make tests を実行できるようにしてみる。

環境作り

Windows 上だと何かと面倒事がありそうなので、VMLinuxを動かしてそこで実行させることにする。
WindowsVirtualBox をインストールしているので、そこに Ubuntu server 12.04.1 を入れてみた。
Ubuntu は Openssh server でインストール。

まずは

$ sudo apt-get update && sudo apt-get upgrade

そして Mercurial をインストー

$ sudo apt-get install mercurial

make に必要なパッケージもインストー

$ sudo apt-get install python-dev
$ sudo apt-get install gettext
$ sudo apt-get install make
$ sudo apt-get install unzip

make tests 実行

Mercurial のソースをクローンして、先に i18n/hg.pot を作ってみようと思ったらエラーになってしまった。

$ hg clone http://selenic.com/hg
$ make update-pot

osutil が使えないらしい。

$ make local
$ make update-pot

これで動いた。
さて、目的の make tests 実行。

$ make tests
cd tests && python run-tests.py
......................................s.s....s....................sssssss.ssssss..s...ssss.sssssssss..............................................................s..............................s..........................................................................................................................s........s...........................................................................................s....s..............................
Skipped test-casecollision-merge.t: missing feature: case insensitive file system
Skipped test-casefolding.t: missing feature: case insensitive file system
Skipped test-check-pyflakes.t: missing feature: Pyflakes python linter
Skipped test-convert-baz.t: missing feature: GNU Arch baz client
Skipped test-convert-bzr-114.t: missing feature: Canonical's Bazaar client >= 1.14
Skipped test-convert-bzr-directories.t: missing feature: Canonical's Bazaar client
Skipped test-convert-bzr-ghosts.t: missing feature: Canonical's Bazaar client
Skipped test-convert-bzr-merges.t: missing feature: Canonical's Bazaar client
Skipped test-convert-bzr-treeroot.t: missing feature: Canonical's Bazaar client
Skipped test-convert-bzr.t: missing feature: Canonical's Bazaar client
Skipped test-convert-cvs-branch.t: missing feature: cvs client/server
Skipped test-convert-cvs-detectmerge.t: missing feature: cvs client/server
Skipped test-convert-cvs-synthetic.t: missing feature: cvs client/server
Skipped test-convert-cvs.t: missing feature: cvs client/server
Skipped test-convert-cvsnt-mergepoints.t: missing feature: cvs client/server
Skipped test-convert-darcs.t: missing feature: darcs client
Skipped test-convert-git.t: missing feature: git command line client
Skipped test-convert-hg-svn.t: missing feature: subversion python bindings
Skipped test-convert-mtn.t: missing feature: monotone client (>= 1.0)
Skipped test-convert-p4-filetypes.t: missing feature: Perforce server and client
Skipped test-convert-p4.t: missing feature: Perforce server and client
Skipped test-convert-svn-branches.t: missing feature: subversion python bindings
Skipped test-convert-svn-encoding.t: missing feature: subversion python bindings
Skipped test-convert-svn-move.t: missing feature: subversion python bindings
Skipped test-convert-svn-sink.t: missing feature: subversion client and admin tools >= 1.3
Skipped test-convert-svn-source.t: missing feature: subversion python bindings
Skipped test-convert-svn-startrev.t: missing feature: subversion python bindings
Skipped test-convert-svn-tags.t: missing feature: subversion python bindings
Skipped test-convert-tagsbranch-topology.t: missing feature: git command line client
Skipped test-convert-tla.t: missing feature: GNU Arch tla client
Skipped test-gendoc.t: missing feature: Docutils text processing library
Skipped test-highlight.t: missing feature: Pygments source highlighting library
Skipped test-mq-subrepo-svn.t: missing feature: subversion client and admin tools >= 1.3
Skipped test-no-symlinks.t: system supports symbolic links
Skipped test-subrepo-git.t: missing feature: git command line client
Skipped test-subrepo-svn.t: missing feature: subversion client and admin tools >= 1.5
# Ran 417 tests, 36 skipped, 0 failed.

一時間くらいかかったかな。長いなぁ。結構スキップされてしまった。
今回スキップされちゃまずそうなものもあったので、パッケージを追加して再テスト。

$ sudo apt-get install python-docutils
$ make test-gendoc.t
cd tests && python run-tests.py  test-gendoc.t
.
# Ran 1 tests, 0 skipped, 0 failed.

ソースコードの管理

ソースコードの変更は Windows でしたいので、下のような感じで Ubuntuリポジトリに対して clone, pull, push するようにしてみる。

┌───────────┐
│http://selenic.com/hg │
└───────────┘
   ↓ clone, pull
┌───────────┐
│        Ubuntu        │
└───────────┘
  ↓clone, pull   ↑push
┌───────────┐
│        Windows       │
└───────────┘

ローカルで使うだけなので、SSL も使わず、誰でも push できるようにしてしまう。
~/.hgrc に以下を追加。

[web]
push_ssl = false
allow_push = *

これで Web サーバを起動。

$ hg serve

Windows から clone, pull, push ができるようになった。
ソースコードを変更して push したら適宜 make tests を実行するということで。

パッチを投げる

パッチを投げよう - TortoiseHg Advent Calendar 2012 という記事が書かれていたので、参考にさせてもらいました。