blob: ac55ad0c4f7c948613df0ef6c942260038d250ee [file] [log] [blame]
#!/usr/bin/env ruby
# Copyright (C) 2016 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 'fileutils'
require 'getoptlong'
require 'pathname'
require 'rbconfig'
require 'open3'
THIS_SCRIPT_PATH = Pathname.new(__FILE__).realpath
WASM_PATH = THIS_SCRIPT_PATH.dirname
raise unless WASM_PATH.basename.to_s == "wasm"
raise unless WASM_PATH.dirname.basename.to_s == "JSTests"
def usage
puts ""
puts "usage:"
puts " import-spec-tests.rb --spec <path-to-wasm-spec-git-repo> [-v]"
puts ""
puts " the wasm spec's git repo can be found here: https://github.com/WebAssembly/spec"
puts ""
exit 1
end
$specDirectory = nil
$verbose = false
GetoptLong.new(['--spec',GetoptLong::REQUIRED_ARGUMENT],
['-v', GetoptLong::OPTIONAL_ARGUMENT],
['--help', GetoptLong::OPTIONAL_ARGUMENT],
).each {
| opt, arg |
case opt
when '--help'
usage
when '--spec'
$specDirectory = arg
when '-v'
$verbose = true
end
}
raise unless $specDirectory
$resultDirectory = File.join(WASM_PATH, "spec-tests")
$harnessDirectory = File.join(WASM_PATH, "spec-harness")
$specTestDirectory = File.join($specDirectory, "test")
def removeDir(file)
begin
FileUtils.remove_dir(file)
rescue
puts "No directory: #{file}" if $verbose
end
end
removeDir($resultDirectory)
removeDir($harnessDirectory)
FileUtils.mkdir($resultDirectory)
FileUtils.cp_r(File.join($specTestDirectory, "harness"), $harnessDirectory)
$genScript = File.join($specTestDirectory, "build.py")
stdout, stderr, status = Open3.capture3("#{$genScript} --js #{$resultDirectory}")
if stderr != ""
puts "failed to generate tests"
puts "The error is:\n--------------\n #{stderr}\n--------------\n" if $verbose
end
puts stdout if $verbose