読者です 読者をやめる 読者になる 読者になる

Wercker で Scheme なモジュールのテストした

全国七千万の自動テストファンのみなさんこんばんは! 昨日ね、wercker でテストしたのでそんな感じのことを書くよ。

wercker.yml はこんな感じ:

# This references a standard debian container from the
# Docker Hub https://registry.hub.docker.com/_/debian/
# Read more about containers on our dev center
# http://devcenter.wercker.com/docs/containers/index.html
box: debian
# You can also use services such as databases. Read more on our dev center:
# http://devcenter.wercker.com/docs/services/index.html
# services:
    # - postgres
    # http://devcenter.wercker.com/docs/services/postgresql.html

    # - mongodb
    # http://devcenter.wercker.com/docs/services/mongodb.html

# This is the build pipeline. Pipelines are the core of wercker
# Read more about pipelines on our dev center
# http://devcenter.wercker.com/docs/pipelines/index.html
build:
    # Steps make up the actions in your pipeline
    # Read more about steps on our dev center:
    # http://devcenter.wercker.com/docs/steps/index.html
  steps:
    - script:
        name: update apt
        code: |
          sudo apt-get update
    - script: 
        name: install Make
        code: |
          sudo apt-get install -y make
    - script:
        name: install Guile
        code: |
          sudo apt-get install -y guile-2.0
    - script:
        name: perform test
        code: |
          make check

makeguile も無い状態なので、いったん apt-get update した後、それぞれインストールする。
2 つ同時にインストールしても多分大丈夫そう:

% sudo apt-get install make guile-2.0

気をつけなきゃいけないのが -y というオプション。
これが無いと、永久にインストールが終わらないので、自動で y してくれるこのオプションを忘れないようにしよう。

いっちゃん上の Makefile はこう:

# $(srcdir)/Makefile
check:
    make -C ./test

test/Makefile はこうなっている:

# $(srcdir)/test/Makefile
all: check

check: 01-simple

01-simple:
    guile -L ../lib -s ./01-simple.scm

それで srfi-64 ではテストが失敗しても、$? は必ず 0 なので、失敗したかどうかわからない。
応急処置としてとりあえず、失敗したテストの個数を返すようにした:

(let ((runner (test-runner-current)))
  (exit (test-runner-fail-count runner)))

そしたら、失敗した。