record.pl 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #! /usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use Cwd qw/abs_path/;
  5. use FindBin;
  6. # We can only dzil from the root of the repository.
  7. my $this_folder = $FindBin::Bin . '/../../'; # t/bin/../../
  8. my $repo_root = abs_path($this_folder) . '/';
  9. reset_env();
  10. start_server();
  11. print 'Cleaning...and building...
  12. ';
  13. print `cd $repo_root && dzil build`;
  14. if ($^O eq 'linux') {
  15. print "Headless and need a webdriver server started? Try\n\n\tDISPLAY=:1 xvfb-run --auto-servernum java -jar /usr/lib/node_modules/protractor/selenium/selenium-server-standalone-2.42.2.jar\n\n";
  16. }
  17. my $built_lib = $repo_root . glob('Selenium-Remote-Driver-*/lib');
  18. my $export = $^O eq 'MSWin32' ? 'set' : 'export';
  19. my $wait = $^O eq 'MSWin32' ? 'START /WAIT' : '';
  20. print `$export WD_MOCKING_RECORD=1 && cd $repo_root && prove -I$built_lib -rv t/`;
  21. reset_env();
  22. sub start_server {
  23. if ($^O eq 'MSWin32') {
  24. system('start "TEMP_HTTP_SERVER" /MIN perl ' . $repo_root . 't/http-server.pl');
  25. }
  26. else {
  27. system('perl ' . $repo_root . 't/http-server.pl > /dev/null &');
  28. }
  29. }
  30. sub kill_server {
  31. if ($^O eq 'MSWin32') {
  32. system("taskkill /FI \"WINDOWTITLE eq TEMP_HTTP_SERVER\"");
  33. }
  34. else {
  35. `ps aux | grep [h]ttp-server\.pl | awk '{print \$2}' | xargs kill`;
  36. }
  37. }
  38. sub reset_env {
  39. `cd $repo_root && dzil clean`;
  40. kill_server();
  41. }