160d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chen#!/usr/bin/perl -w 260d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chen 360d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chen# 460d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chen# Use this script to visit each python test case under the specified directory 560d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chen# and invoke unittest.main() on each test case. 660d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chen# 760d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chen 860d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chenuse strict; 960d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chenuse FindBin; 1060d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chenuse File::Find; 1160d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chenuse File::Basename; 1260d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chenuse Cwd; 1360d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chenuse Cwd 'abs_path'; 1460d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chen 1560d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chenscalar(@ARGV) == 1 or die "Usage: dotest.pl testdir"; 1660d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chen 1760d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chenmy $scriptDir = $FindBin::Bin; 1860d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chenmy $baseDir = abs_path("$scriptDir/.."); 19acb708d91e0ba6bbd59f2b6b29b34f9b98413cf5Johnny Chenmy $pluginDir = "$baseDir/test/plugins"; 2060d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chenmy $testDir = $ARGV[0]; 2160d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chen 2260d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chenmy $dbgPath = "$baseDir/build/Debug/LLDB.framework/Resources/Python"; 2360d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chenmy $relPath = "$baseDir/build/Release/LLDB.framework/Resources/Python"; 2460d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chenif (-d $dbgPath) { 25acb708d91e0ba6bbd59f2b6b29b34f9b98413cf5Johnny Chen $ENV{'PYTHONPATH'} = "$dbgPath:$scriptDir:$pluginDir"; 2660d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chen} elsif (-d $relPath) { 27acb708d91e0ba6bbd59f2b6b29b34f9b98413cf5Johnny Chen $ENV{'PYTHONPATH'} = "$relPath:$scriptDir:$pluginDir"; 2860d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chen} 2960d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chen#print("ENV{PYTHONPATH}=$ENV{'PYTHONPATH'}\n"); 3060d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chen 3160d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chen# Traverse the directory to find our python test cases. 3260d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chenfind(\&handleFind, $testDir); 3360d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chen 3460d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chensub handleFind { 3560d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chen my $foundFile = $File::Find::name; 3660d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chen my $dir = getcwd; 3760d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chen #print("foundFile: $foundFile\n"); 3860d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chen 3960d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chen # Test*.py is the naming pattern for our test cases. 4060d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chen if ($foundFile =~ /.*\/(Test.*\.py)$/) { 4160d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chen print("Running python $1 (cwd = $dir)...\n"); 4260d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chen system("python $1"); 4360d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chen } 4460d45c53a78bf373e0ea29fc3f055b93878bd6afJohnny Chen} 45