#!/usr/bin/perl -w

#
# Use this script to visit each python test case under the specified directory
# and invoke unittest.main() on each test case.
#

use strict;
use FindBin;
use File::Find;
use File::Basename;
use Cwd;
use Cwd 'abs_path';

scalar(@ARGV) == 1 or die "Usage: dotest.pl testdir";

my $scriptDir = $FindBin::Bin;
my $baseDir = abs_path("$scriptDir/..");
my $testDir = $ARGV[0];

my $dbgPath = "$baseDir/build/Debug/LLDB.framework/Resources/Python";
my $relPath = "$baseDir/build/Release/LLDB.framework/Resources/Python";
if (-d $dbgPath) {
  $ENV{'PYTHONPATH'} = "$dbgPath:$scriptDir";
} elsif (-d $relPath) {
  $ENV{'PYTHONPATH'} = "$relPath:$scriptDir";
}
#print("ENV{PYTHONPATH}=$ENV{'PYTHONPATH'}\n");

# Traverse the directory to find our python test cases.
find(\&handleFind, $testDir);

sub handleFind {
  my $foundFile = $File::Find::name;
  my $dir = getcwd;
  #print("foundFile: $foundFile\n");
  
  # Test*.py is the naming pattern for our test cases.
  if ($foundFile =~ /.*\/(Test.*\.py)$/) {
    print("Running python $1 (cwd = $dir)...\n");
    system("python $1");
  }
}
