@@ -9,39 +9,35 @@ my $exitstatus = 0;
99my @idrOpts = ();
1010
1111
12−# Determines how idris was built locally, returning a PATH modifier.
12+# Sets the PATH if there's a sandbox or stack present
1313#
1414# Order of checking is:
1515#
1616# 1. Cabal Sandboxing
1717# 2. Stack
18−# 3. Pure cabal.
1918#
20−sub sandbox_path {
19+sub set_path {
2120 my ($test_dir,) = @_;
22− my $sandbox = "$test_dir/../../.cabal-sandbox/bin";
21+ my $sandbox = "../.cabal-sandbox/bin";
2322
2423 my $stack_bin_path = `stack path --dist-dir`;
2524 $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};
2727
2828 if ( -d $sandbox ) {
29−
3029 my $sandbox_abs = abs_path($sandbox);
3130 print "Using Cabal Sandbox\n";
3231 printf("Sandbox located at: %s\n", $sandbox_abs);
33− return "PATH=\"$sandbox_abs:$PATH\"";
32+ $ENV{PATH} = $sandbox_abs . ":" . $path;
3433
3534 } elsif ( -d $stack_work_dir ) {
3635
3736 my $stack_work_abs = abs_path($stack_work_dir);
3837 print "Using Stack Work\n";
3938 printf("Stack work located at: %s\n", $stack_work_abs);
40− return "PATH=\"$stack_work_abs:$PATH\"";
39+ $ENV{PATH} = $stack_work_abs . ":" . $path;
4140
42− } else {
43− print "Using Default Cabal.\n";
44− return "";
4541 }
4642}
4743
@@ -51,13 +47,12 @@ sub sandbox_path {
5147sub runtest {
5248 my ($test, $update, $showTime) = @_;
5349
54− my $sandbox = sandbox_path($test);
5550
5651 chdir($test);
5752
5853 my $startTime = time();
5954 print "Running $test...\n";
60− my $got = `$sandbox ./run @idrOpts`;
55+ my $got = `./run @idrOpts`;
6156 my $exp = `cat expected`;
6257
6358 my $endTime = time();
@@ -177,9 +172,15 @@ while (my $opt = shift @opts) {
177172 else { push(@idrOpts, $opt); }
178173}
179174
180−my $idris = $ENV{IDRIS};
181−my $path = $ENV{PATH};
182−$ENV{PATH} = cwd() . "/" . $idris . ":" . $path;
175+my $idris = $ENV{IDRIS};
176+
177+if (defined $ENV{IDRIS} && -e $idris ) {
178+ $ENV{IDRIS} = abs_path($idris);
179+ print "Using $idris\n";
180+} else {
181+ delete $ENV{IDRIS};
182+ set_path();
183+}
183184
184185my $startTime = time();
185186