aboutsummaryrefslogtreecommitdiff
path: root/bin/mechnical-rob
blob: be223d94981d386689648fb90df1ca9892a532b4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#!/usr/bin/env ruby


USAGE = <<EOT
This is Mechanical-Rob - an automated web server tester for
                         Genenetwork.org that uses the brilliant
                         mechanize gem with minitest.

To use this software you need to install mechanize. Run it from
the root of the genenetwork2 source tree as, for example,

  ./bin/test-website http://localhost:5003/ (default)

If you are using the small deployment database you can use

  ./bin/test-website --skip -n

To run all tests

  ./bin/test-website --all

To run individual tests on localhost you can do

  ruby -Itest -Itest/lib test/lib/mapping.rb --name="/Mapping/"

For more information see http://genenetwork.org/

EOT
$stderr.print USAGE

require 'optparse'

options = { database: :small, link_checker: false}
opts = OptionParser.new do |o|
  o.banner = "Usage: #{File.basename($0)} [options] URL"

  o.on('-d','--database', String, 'Use database (default db_webqtl_s)') do |s|
    options[:database] =
      case s
      when 'xx'
        :unknown
      else
        :small
      end
  end

  o.on('--all', 'Run all tests') do
    options[:all] = true
  end

  o.on('-l','--link-checker', 'Check for dead links') do
    options[:link_checker] = true
  end

  o.on('--navigation', 'Check for navigation') do
    options[:navigation] = true
  end

  o.on('--mapping', 'Check for mapping') do
    options[:mapping] = true
  end

  o.on('--skip-broken', 'Skip tests that are known to be broken') do
    options[:skip_broken] = true
  end

  o.separator ""
  o.on_tail('-h', '--help', 'display this help and exit') do
    options[:show_help] = true
  end
end

opts.parse!(ARGV)

if options[:show_help]
  print opts
  exit 1
end

$options = options  # we are using a global here
$host =
  if ARGV.size>0
    ARGV.shift
  else
    "http://localhost:5003"
  end

$stderr.print "Testing <",$host,">\n"

require 'mechanize'
require 'minitest/spec'
require 'minitest/autorun'

# These are the actual testing modules

libpath = File.dirname(File.dirname(__FILE__))
$: << File.join(libpath,'test/lib')

require 'main_web_functionality'

if options[:all] or options[:mapping]
  require 'mapping'
end

if options[:all] or options[:link_checker]
  require 'link_checker'
end

if options[:all] or options[:navigation]
  require 'navigation'
end