RunCi.hx 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. import runci.TestTarget;
  2. import runci.System;
  3. import runci.System.*;
  4. import runci.Config.*;
  5. import runci.Deployment.*;
  6. using StringTools;
  7. /**
  8. Will be run by CI services, currently TravisCI and AppVeyor.
  9. TravisCI:
  10. Setting file: ".travis.yml".
  11. Build result: https://travis-ci.org/HaxeFoundation/haxe
  12. AppVeyor:
  13. Setting file: "appveyor.yml".
  14. Build result: https://ci.appveyor.com/project/HaxeFoundation/haxe
  15. */
  16. class RunCi {
  17. static function main():Void {
  18. Sys.putEnv("OCAMLRUNPARAM", "b");
  19. var args = Sys.args();
  20. var tests:Array<TestTarget> = switch (args.length==1 ? args[0] : Sys.getEnv("TEST")) {
  21. case null:
  22. [Macro];
  23. case env:
  24. [for (v in env.split(",")) v.trim().toLowerCase()];
  25. }
  26. infoMsg('Going to test: $tests');
  27. if (isCi()) {
  28. changeDirectory('echoServer');
  29. runCommand('haxe', ['build.hxml']);
  30. changeDirectory(cwd);
  31. }
  32. for (test in tests) {
  33. switch (ci) {
  34. case TravisCI:
  35. Sys.println('travis_fold:start:test-${test}');
  36. case _:
  37. //pass
  38. }
  39. switch (systemName) {
  40. case "Windows":
  41. // change codepage to UTF-8
  42. runCommand("chcp", ["65001"]);
  43. case _:
  44. //pass
  45. }
  46. //run neko-based http echo server
  47. var echoServer = new sys.io.Process('nekotools', ['server', '-d', 'echoServer/www/', '-p', '20200']);
  48. infoMsg('test $test');
  49. var success = true;
  50. try {
  51. changeDirectory(unitDir);
  52. haxelibInstallGit("haxe-utest", "utest", "master");
  53. var args = switch (ci) {
  54. case null:
  55. [];
  56. case TravisCI:
  57. ["-D","travis"];
  58. case AppVeyor:
  59. ["-D","appveyor"];
  60. case AzurePipelines:
  61. ["-D","azure"];
  62. }
  63. args = args.concat(["-D", systemName]);
  64. switch (test) {
  65. case Macro:
  66. runci.targets.Macro.run(args);
  67. case Neko:
  68. runci.targets.Neko.run(args);
  69. case Php:
  70. runci.targets.Php.run(args);
  71. case Python:
  72. runci.targets.Python.run(args);
  73. case Lua:
  74. runci.targets.Lua.run(args);
  75. case Cpp:
  76. runci.targets.Cpp.run(args, true, true);
  77. case Cppia:
  78. runci.targets.Cpp.run(args, false, true);
  79. case Js:
  80. runci.targets.Js.run(args);
  81. case Java:
  82. runci.targets.Java.run(args);
  83. case Jvm:
  84. runci.targets.Jvm.run(args);
  85. case Cs:
  86. runci.targets.Cs.run(args);
  87. case Flash9:
  88. runci.targets.Flash.run(args);
  89. case Hl:
  90. runci.targets.Hl.run(args);
  91. case t:
  92. throw "unknown target: " + t;
  93. }
  94. } catch(f:Failure) {
  95. success = false;
  96. }
  97. switch (ci) {
  98. case TravisCI:
  99. Sys.println('travis_fold:end:test-${test}');
  100. case _:
  101. //pass
  102. }
  103. if (success) {
  104. successMsg('test ${test} succeeded');
  105. } else {
  106. failMsg('test ${test} failed');
  107. }
  108. echoServer.kill();
  109. echoServer.close();
  110. }
  111. if (success) {
  112. deploy();
  113. } else {
  114. Sys.exit(1);
  115. }
  116. }
  117. }