test-project が動かないと思ったらそうでもなかった
android create test-project ってのがあるんだけど,
ant するだけでBUILD FAILD になるから変だなと思ったらバージョンの所為だった.
$ android create test-project --path . --main . $ ant run-tests : (略) BUILD FAILD : (略)
id=1, 2, 7 で失敗する.つまりは,バージョン1.5 以下か?
まぁ,普通に 2.1 とか使えよという話でした.
調べたコード
#!/usr/bin/env perl use strict; use warnings; use Test::More qw(no_plan); { my @emulators = grep {m/device$/} grep {m/emulator-/} `adb devices 2>&1`; unless (@emulators > 0) { die("you must execute emulator"); } my @targets = map {(split)[1]} grep {/^id/} (`android list target`); my $prefix = 'a'; my $project_suffix = 'p'; my $test_project_suffix = 't'; foreach my $t (@targets) { my $project_dir = $prefix . $t . $project_suffix; my $test_project_dir = $prefix . $t . $test_project_suffix; unless (-d $project_dir) { mkdir($project_dir); system("android create project --target $t --path $project_dir --activity AaaActivity --package cla.irvy 2>&1 > $project_dir.log"); } unless (-d $test_project_dir) { mkdir($test_project_dir); system("( cd $test_project_dir && android create test-project --path . --main ../$project_dir ) 2>&1 > $test_project_dir.log"); } my $log_fname = "$test_project_dir.test.log"; system("( cd $test_project_dir && ant run-tests 2>&1 ) > $log_fname"); my $result = `grep BUILD $log_fname`; chomp($result); my $expect = 'BUILD SUCCESSFUL'; is($result, $expect, "test target id=$t"); } }
avd のバージョンの方が新しいと転送すらできないかも.
最初シェルスクリプトで書いてたけど,目で見るの面倒になって,test にした.
makefile の方が楽かと思ったけどそうでもなかった.
参考
- http://gist.github.com/317135
- issue にあった http://code.google.com/p/android/issues/detail?id=6465&q=test%20project&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars
- ant run-tests なことをここで知った http://groups.google.com/group/android-developers/browse_thread/thread/55f67185336b9c93/217e76658dffea1c?lnk=gst&q=test+project#217e76658dffea1c