150 lines
5.1 KiB
Ruby
150 lines
5.1 KiB
Ruby
#!/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
|
|
|