summaryrefslogtreecommitdiff
path: root/src/test/parser/run-test
blob: 4126aeae4eba77c74b5674cccd586b8768e5b0de (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
#! /usr/bin/env ruby

# $Header$

#
# Usage¡§./run-test schedule
#         ignore a line at the beginning of '#'
#

INPUT_DIRECTORY="input"
EXPECTED_DIRECTORY="expected"
RESULT_DIRECTORY="result"
TEST_PROGRAM="./parser-test"
DIFF_FILE="test.diff"

if ARGV.size != 1
  STDERR.puts "run-test schedule_file"
  exit 1
end

file = ARGV.shift
if !(File.exists? file)
  STDERR.puts "run-test: file does not exist: #{file}"
  exit 1
end

if !(File.exists? RESULT_DIRECTORY)
  Dir.mkdir RESULT_DIRECTORY
else
  Dir["#{RESULT_DIRECTORY}/*.out"].each do |f|
    File.unlink f
  end
end

File.unlink DIFF_FILE if File.exists? DIFF_FILE

begin
  IO.foreach(file) do |testcase|
    testcase.chomp!
    if (/^\#/ =~ testcase or testcase == "")
      next
    end

    print "testcase #{testcase}:\t"
    begin
      system("#{TEST_PROGRAM} < #{INPUT_DIRECTORY}/#{testcase}.sql > #{RESULT_DIRECTORY}/#{testcase}.out\n")

      system("diff -c #{EXPECTED_DIRECTORY}/#{testcase}.out #{RESULT_DIRECTORY}/#{testcase}.out >> #{DIFF_FILE}")

      if ($? == 0)
        print "OK\n"
      else
        print "FAILED\n"
      end
    rescue
      print "FAILED\n"
    end
  end

rescue
  STDERR.puts "NG"
end