18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#!/ns/tools/bin/perl5 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# mkhtml.pl cruises through your $MOZ_SRC/mozilla/js/tests/ subdirectories, 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# and for any .js file it finds, creates an HTML file that includes: 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# $MOZ_SRC/mozilla/js/tests/$suite/shell.js, $ 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# MOZ_SRC/mozilla/js/tests/$suite/browser.js, 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# and the test.js file. 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project$moz_src = $ENV{"MOZ_SRC"} || 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project die ("You need to set your MOZ_SRC environment variable.\n"); 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project$test_home = $moz_src ."/js/tests/"; 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectopendir (TEST_HOME, $test_home); 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@__suites = readdir (TEST_HOME); 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclosedir TEST_HOME; 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectforeach (@__suites ) { 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if ( -d $_ && $_ !~ /\./ && $_ !~ 'CVS' ) { 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $suites[$#suites+1] = $_; 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectif ( ! $ARGV[0] ) { 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project die ( "Specify a directory: ". join(" ", @suites) ."\n" ); 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project$js_test_dir = $moz_src . "/js/tests/" . $ARGV[0] ."/"; 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprint "Generating html files for the tests in $js_test_dir\n"; 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project$shell_js = $js_test_dir . "shell.js"; 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project$browser_js = $js_test_dir . "browser.js"; 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# cd to the test directory 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectchdir $js_test_dir || 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project die "Couldn't chdir to js_test_dir, which is $js_test_dir\n"; 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprint ( "js_test_dir is $js_test_dir\n" ); 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# read the test directory 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectopendir ( JS_TEST_DIR, $js_test_dir ); 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# || die "Couldn't open js_test_dir, which is $js_test_dir\n"; 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@js_test_dir_items = readdir( JS_TEST_DIR ); 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# || die "Couldn't read js_test_dir, which is $js_test_dir\n"; 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclosedir( JS_TEST_DIR ); 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprint ("The js_test_dir_items are: " . join( ",", @js_test_dir_items ) . "\n"); 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# figure out which of the items are directories 528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectforeach $js_test_subdir ( @js_test_dir_items ) { 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if ( -d $js_test_subdir ) { 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $js_test_subdir = $js_test_dir ."/" . $js_test_subdir; 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project chdir $js_test_subdir 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project || die "Couldn't chdir to js_test_subdir $js_test_subdir\n"; 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project print "Just chdir'd to $js_test_subdir \n"; 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project opendir( JS_TEST_SUBDIR, $js_test_subdir ); 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project @subdir_tests = readdir( JS_TEST_SUBDIR ); 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project closedir( JS_TEST_SUBDIR ); 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project foreach ( @subdir_tests ) { 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $js_test = $_; 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if ( $_ =~ /\.js$/ ) { 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project s/\.js$/\.html/; 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project print $_ ."\n"; 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project open( HTML_TEST, "> $_") 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project || die "Can't open html file $test_html\n"; 728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project print HTML_TEST 738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project '<script src=./../shell.js></script>'; 748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project print HTML_TEST 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project '<script src=./../browser.js></script>'; 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project print HTML_TEST 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project '<script src=./' . $js_test. '></script>'; 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project close HTML_TEST; 798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project chdir $js_test_dir; 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 85