blob: 93277002004a9830480aa455fdc843367ed700c6 [file] [log] [blame]
#!/usr/bin/env ruby
# Copyright (C) 2013 Apple Inc. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
require 'pathname'
require 'yaml'
def toSet(array)
hash = {}
array.each {
| value |
hash[value] = true
}
hash
end
# Negative mozilla tests that we pass just fine.
EXPECT_NO_FAIL =
toSet(["js1_2/function/function-001-n.js",
"js1_3/Script/function-001-n.js",
"js1_3/regress/function-001-n.js"])
EXPECT_FAIL =
toSet(["ecma_2/Exceptions/function-001.js",
"ecma_2/RegExp/regress-001.js",
"ecma_3/FunExpr/fe-001.js",
"ecma_3/Statements/regress-194364.js",
"ecma_3/Unicode/uc-001.js",
"js1_2/Objects/toString-001.js",
"js1_2/function/Function_object.js",
"js1_2/function/regexparg-1.js",
"js1_2/operator/equality.js",
"js1_2/regexp/RegExp_lastIndex.js",
"js1_2/regexp/regress-6359.js",
"js1_2/regexp/regress-9141.js",
"js1_2/regexp/simple_form.js",
"js1_2/regexp/string_split.js",
"js1_2/version120/boolean-001.js",
"js1_2/version120/regress-99663.js",
"js1_3/Script/script-001.js",
"js1_5/Exceptions/catchguard-001.js",
"js1_5/Exceptions/catchguard-002.js",
"js1_5/Exceptions/catchguard-003.js",
"js1_5/Exceptions/errstack-001.js",
"js1_5/Exceptions/regress-50447.js",
"js1_5/GetSet/getset-001.js",
"js1_5/GetSet/getset-002.js",
"js1_5/GetSet/getset-003.js",
"js1_5/Object/regress-90596-001.js",
"js1_5/Object/regress-90596-002.js",
"js1_5/Object/regress-96284-001.js",
"js1_5/Object/regress-96284-002.js",
"js1_5/Regress/regress-44009.js",
"js1_5/Regress/regress-103602.js",
"js1_5/Regress/regress-104077.js",
"js1_5/Regress/regress-127557.js",
"js1_5/Regress/regress-172699.js",
"js1_5/Regress/regress-179524.js",
"js1_5/Scope/regress-220584.js",
"js1_5/Scope/scope-001.js",
"js1_6/Regress/regress-301574.js",
"js1_6/Regress/regress-309242.js",
"js1_6/Regress/regress-314887.js",
"js1_6/String/regress-306591.js"])
SKIPPED =
toSet(["ecma/Date/15.9.2.1.js",
"ecma/Date/15.9.2.2-1.js",
"ecma/Date/15.9.2.2-2.js",
"ecma/Date/15.9.2.2-3.js",
"ecma/Date/15.9.2.2-4.js",
"ecma/Date/15.9.2.2-5.js",
"ecma/Date/15.9.2.2-6.js",
"ecma_3/Date/15.9.5.7.js",
"ecma/Date/15.9.5.14.js",
"ecma/Date/15.9.5.31-1.js",
"ecma/Date/15.9.5.34-1.js"])
$me = Pathname.new(ARGV[0])
$list = []
def recurse(directory, shells, countdown)
toRecurse = []
toRun = []
directory.each_child {
| entry |
if entry.basename.to_s == "shell.js"
shells = shells + [entry]
elsif entry.directory?
toRecurse << entry
elsif entry.basename.to_s =~ /\.js$/ and countdown <= 0
toRun << entry
end
}
toRecurse.each {
| entry |
recurse(entry, shells, countdown - 1)
}
toRun.each {
| entry |
testPath = entry.relative_path_from($me).to_s
mode = :normal
if entry.basename.to_s =~ /-n\.js/
mode = :negative
end
if SKIPPED[testPath]
mode = :skip
end
if EXPECT_FAIL[testPath]
mode = :fail
end
if EXPECT_NO_FAIL[testPath]
mode = :normal
end
$list << {
"path" => testPath,
"cmd" => "defaultRunMozillaTest :#{mode}, " + shells.map {
| shell |
shell.relative_path_from(directory).to_s.inspect
}.join(", ")
}
}
end
recurse($me, [], 2)
puts $list.to_yaml