1
0

03-spec-coverage.t 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #!perl
  2. use strict;
  3. use warnings;
  4. use Test::More;
  5. unless($ENV{RELEASE_TESTING}) {
  6. plan(skip_all=>"Author tests not required for installation.");
  7. }
  8. eval {use LWP::Simple;};
  9. skip_all("need LWP::Simple") if $@;
  10. use Selenium::Remote::Commands;
  11. my $uri = "http://selenium.googlecode.com/svn/wiki/JsonWireProtocol.wiki";
  12. my $data = get($uri);
  13. my $todo_list = {
  14. 'GET session/:sessionId/orientation' => 1,
  15. 'GET session/:sessionId/element/:id' => 1,
  16. 'POST session/:sessionId/modifier' => 1,
  17. 'POST session/:sessionId/buttonup' => 1,
  18. 'POST session/:sessionId/click' => 1,
  19. 'POST session/:sessionId/ime/deactivate' => 1,
  20. 'GET session/:sessionId/alert_text' => 1,
  21. 'POST session/:sessionId/execute_async' => 1,
  22. 'POST session/:sessionId/alert_text' => 1,
  23. 'POST session/:sessionId/buttondown' => 1,
  24. 'POST session/:sessionId/accept_alert' => 1,
  25. 'GET status' => 1,
  26. 'GET session/:sessionId/ime/activated' => 1,
  27. 'POST session/:sessionId/dismiss_alert' => 1,
  28. 'POST session/:sessionId/orientation' => 1,
  29. 'POST session/:sessionId/doubleclick' => 1,
  30. 'POST session/:sessionId/ime/activate' => 1,
  31. 'GET session/:sessionId/ime/active_engine' => 1,
  32. 'GET session/:sessionId/ime/available_engines' => 1,
  33. };
  34. my @lines = split(/\n/, $data);
  35. my @methods;
  36. for my $line (@lines) {
  37. if ($line =~
  38. /\|\|\s*(GET|POST|DELETE)\s*\|\|\s*\[\S*\s+\/([^\]]*)\]\s*\|\|\s*([^\|]*?)\s*\|\|/
  39. ) {
  40. my $method = {method => $1, path => $2, desc => $3};
  41. push @methods, $method;
  42. }
  43. }
  44. my $commands = Selenium::Remote::Commands->new;
  45. SOURCE_COMMAND: for my $method_source (@methods) {
  46. my $command = "$method_source->{method} $method_source->{path}";
  47. my $msg = "find $command";
  48. for my $method_local (values %{$commands}) {
  49. if ( $method_local->{url} eq $method_source->{path}
  50. and $method_local->{method} eq $method_source->{method}) {
  51. pass($msg);
  52. next SOURCE_COMMAND;
  53. }
  54. }
  55. TODO: {
  56. local $TODO = "need to create command" if $todo_list->{$command};
  57. fail($msg);
  58. }
  59. }
  60. LOCAL_COMMAND: for my $method_local (values %{$commands}) {
  61. my $msg = "extra command $method_local->{method} $method_local->{url}";
  62. for my $method_source (@methods) {
  63. if ( $method_local->{url} eq $method_source->{path}
  64. and $method_local->{method} eq $method_source->{method}) {
  65. next LOCAL_COMMAND;
  66. }
  67. }
  68. TODO: {
  69. local $TODO = "Investigate extra methods";
  70. fail($msg);
  71. }
  72. }
  73. done_testing;