123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- #!/usr/bin/perl -w
- # Copyright (C) 2011 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 INC. 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.
- # Script to create a new HTML file for a monolithic test using js-test machinery.
- use strict;
- use FindBin;
- use lib $FindBin::Bin;
- use File::Basename;
- use Getopt::Long;
- use webkitdirs;
- sub makePathToSharedSources;
- sub openTestInEditor;
- sub writeTestFile;
- my $showHelp;
- my $result = GetOptions(
- "help" => \$showHelp,
- );
- if (!$result || $showHelp || !scalar(@ARGV) || $ARGV[0] !~ m/\.html$/) {
- print STDERR "Usage: " . basename($0) . " [-h|--help] pathname\n";
- print STDERR "\nExamples:\n";
- print STDERR " " . basename($0) . " new-test.html (will create the test in current directory)\n";
- print STDERR " " . basename($0) . " fast/loader/new-test.html (a relative path is always from LayoutTests directory)\n";
- print STDERR " " . basename($0) . " /Volumes/Data/WebKit/LayoutTests/fast/loader/new-test.html\n";
- exit 1;
- }
- my $providedPath = $ARGV[0];
- my $testAbsolutePath;
- # If only a file name is provided, create the test in current directory.
- $testAbsolutePath = File::Spec->rel2abs($providedPath) if (!(File::Spec->splitpath($providedPath))[1]);
- # Otherwise, it's either absolute, or relative to LayoutTests directory.
- chdirWebKit();
- chdir "LayoutTests";
- $testAbsolutePath = File::Spec->rel2abs($providedPath) if (!$testAbsolutePath);
- writeTestFile();
- print "$testAbsolutePath\n";
- openTestInEditor();
- exit 0;
- sub makePathToSharedSources
- {
- my $layoutTestsPath = getcwd();
- $testAbsolutePath =~ m/^$layoutTestsPath/ or die "Path $testAbsolutePath is not in LayoutTests directory.\n";
- my $isHTTPTest = $testAbsolutePath =~ m/^$layoutTestsPath\/http/;
- if ($isHTTPTest) {
- return "/js-test-resources";
- } else {
- return File::Spec->abs2rel("fast/js/resources/", dirname($testAbsolutePath));
- }
- }
- sub writeTestFile
- {
- die "Test $testAbsolutePath already exists.\n" if (-e $testAbsolutePath);
- my $pathToSharedSources = makePathToSharedSources();
- open TEST, ">", ${testAbsolutePath} or die "Cannot create test file at $testAbsolutePath.\n";
- print TEST << "EOF";
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <script src="$pathToSharedSources/js-test-pre.js"></script>
- </head>
- <body>
- <script>
- description("TEST DESCRIPTION HERE");
- // Your test script here. Feel free to modify surrounding HTML code if necessary.
- </script>
- <script src="$pathToSharedSources/js-test-post.js"></script>
- </body>
- </html>
- EOF
- close TEST;
- }
- sub openTestInEditor()
- {
- my $editor = $ENV{EDITOR};
- exec ($editor, $testAbsolutePath) if ($editor);
- }
|