@@ -9,39 +9,35 @@ my $exitstatus = 0;
9my @idrOpts = ();
9my @idrOpts = ();
12−# Determines how idris was built locally, returning a PATH modifier.
12+# Sets the PATH if there's a sandbox or stack present
14# Order of checking is:
14# Order of checking is:
16# 1. Cabal Sandboxing
16# 1. Cabal Sandboxing
20−sub sandbox_path {
19+sub set_path {
21 my ($test_dir,) = @_;
20 my ($test_dir,) = @_;
22− my $sandbox = "$test_dir/../../.cabal-sandbox/bin";
21+ my $sandbox = "../.cabal-sandbox/bin";
24 my $stack_bin_path = `stack path --dist-dir`;
23 my $stack_bin_path = `stack path --dist-dir`;
25 $stack_bin_path =~ s/\n//g;
24 $stack_bin_path =~ s/\n//g;
26− my $stack_work_dir = "$test_dir/../../$stack_bin_path/build/idris";
25+ my $stack_work_dir = "../$stack_bin_path/build/idris";
26+ my $path = $ENV{PATH};
28 if ( -d $sandbox ) {
28 if ( -d $sandbox ) {
30 my $sandbox_abs = abs_path($sandbox);
29 my $sandbox_abs = abs_path($sandbox);
31 print "Using Cabal Sandbox\n";
30 print "Using Cabal Sandbox\n";
32 printf("Sandbox located at: %s\n", $sandbox_abs);
31 printf("Sandbox located at: %s\n", $sandbox_abs);
33− return "PATH=\"$sandbox_abs:$PATH\"";
32+ $ENV{PATH} = $sandbox_abs . ":" . $path;
35 } elsif ( -d $stack_work_dir ) {
34 } elsif ( -d $stack_work_dir ) {
37 my $stack_work_abs = abs_path($stack_work_dir);
36 my $stack_work_abs = abs_path($stack_work_dir);
38 print "Using Stack Work\n";
37 print "Using Stack Work\n";
39 printf("Stack work located at: %s\n", $stack_work_abs);
38 printf("Stack work located at: %s\n", $stack_work_abs);
40− return "PATH=\"$stack_work_abs:$PATH\"";
39+ $ENV{PATH} = $stack_work_abs . ":" . $path;
43− print "Using Default Cabal.\n";
@@ -51,13 +47,12 @@ sub sandbox_path {
51sub runtest {
47sub runtest {
52 my ($test, $update, $showTime) = @_;
48 my ($test, $update, $showTime) = @_;
54− my $sandbox = sandbox_path($test);
56 chdir($test);
51 chdir($test);
58 my $startTime = time();
53 my $startTime = time();
59 print "Running $test...\n";
54 print "Running $test...\n";
60− my $got = `$sandbox ./run @idrOpts`;
55+ my $got = `./run @idrOpts`;
61 my $exp = `cat expected`;
56 my $exp = `cat expected`;
63 my $endTime = time();
58 my $endTime = time();
@@ -177,9 +172,15 @@ while (my $opt = shift @opts) {
177 else { push(@idrOpts, $opt); }
172 else { push(@idrOpts, $opt); }
180−my $idris = $ENV{IDRIS};
175+my $idris = $ENV{IDRIS};
181−my $path = $ENV{PATH};
176+
182−$ENV{PATH} = cwd() . "/" . $idris . ":" . $path;
177+if (defined $ENV{IDRIS} && -e $idris ) {
178+ $ENV{IDRIS} = abs_path($idris);
179+ print "Using $idris\n";
184my $startTime = time();
185my $startTime = time();