Env-Modify

 view release on metacpan or  search on metacpan

t/source.t  view on Meta::CPAN

{
    local $Env::Modify::SHELL = 'csh';
    my $c0 = eval { system("$bin_true") };
    if ($@) {
        diag "Think csh status is broken in Shell-GetEnv $Shell::GetEnv::VERSION: $@";
        $skip_csh = "can't retrieve csh status in Shell-GetEnv $Shell::GetEnv::VERSION";
        chomp($skip_csh);
    }
}

open SOURCE,'>','my_setenv.sh';
print SOURCE "setenv foo bar\n";
print SOURCE "setenv baz quux\n";
print SOURCE "setenv abc 123\n";
close SOURCE;

for my $sh (qw(csh tcsh)) {
    local %ENV = ();
    local $Env::Modify::SHELL = $sh;
  SKIP: {
      if ($sh eq 'csh' && $skip_csh) {
          skip "$skip_csh. Skipping csh", 5;
      }
      # this can fail on csh that require you to say "setenv foo $status"
      # instead of "setenv foo $?". Fix needed in Shell::GetEnv
      my $c0 = eval { system("$bin_true") };
      if ($@ && $@ =~ /error opening pipe/) {
          skip "shell $sh not available for testing", 5;
      }
      ok($c0 == 0, "/bin/true returns true in $sh");
      no warnings 'uninitialized';
      ok($ENV{foo} eq '' && $ENV{baz} eq '' && $ENV{'abc'} eq '',
         'initial environment is clean');
      my $c1 = eval { source("my_setenv.sh") };
      if ($@) {
          diag $@;
          ok(0, "source() return true status in $sh");
          skip "source() did not return true in $sh", 2;
      }
      ok($c1 == 0, "source() returned true status in $sh");
      ok($ENV{foo} eq 'bar', "export in $sh source successful");
      ok($ENV{baz} eq 'quux' && $ENV{abc} eq '123',
         "late export in $sh source successful");
    }
}
unlink "my_setenv.sh";

t/system.t  view on Meta::CPAN

SKIP:
{
     local $Env::Modify::SHELL = 'dash';
     $ENV{why} = "I don't know";
     my $c0 = eval { system("export why=because") };
     if ($@ && $@ =~ /error (opening|closing) pipe/) {
         skip "dash shell not available for test", 4;
     }
     ok($ENV{why} eq 'because', 'dash shell - export');
     ok($c0 == 0, 'dash returned true');
     my $c1 = system("setenv why tomorrow");
     ok($ENV{why} ne 'tomorrow', 'dash shell does not recognize setenv');
     ok($c1 != 0, 'dash returned false');
}

 SKIP:
{
    local $Env::Modify::SHELL = 'csh';
    $ENV{cat} = 'dog';
    $ENV{turtle} = 'frog';

    # this can fail on csh that require you to say "setenv foo $status"
    # instead of "setenv foo $?". Fix needed in Shell::GetEnv
    my $c0 = eval { system("setenv cat fish") };
    if ($@ && $@ =~ /error (opening|closing) pipe/) {
        skip "csh shell not available for test", 4;
    }
    my $c1 = system("export turtle=dove");  # not valid in csh
    ok($ENV{cat} eq 'fish', 'csh - setenv');
    ok($c0 == 0, 'csh return true');
    ok($ENV{turtle} eq 'frog', 'csh does not recognize export');
    ok($c1 != 0, 'csh returned false');
}

 SKIP:
{
    local $Env::Modify::SHELL = 'tcsh';
    $ENV{meaning} = '19';
    my $c0 = eval { system("setenv meaning 42") };
    if ($@ && $@ =~ /error (opening|closing) pipe/) {
        skip "tcsh shell not available for test", 4;
    }
    ok($ENV{meaning} eq '42', 'tcsh');
    ok($c0 == 0, 'tcsh returned true');
    my $c1 = system("export meaning=75");
    ok($ENV{meaning} ne '75', 'tcsh does not recognize export');
    ok($c1 != 0, 'tcsh returned false');
}

{
    local $Env::Modify::SHELL = 'bogush';
    $ENV{abc} = "def";
    eval {
        system("export abc=123");
        system("setenv abc 123");               
    };
    ok($@ && $@ =~ /unsupported shell/, 'unsupported shell exception');
    ok($ENV{abc} eq 'def', 'no change for bogus shell');
}

SKIP:
{
    local $Env::Modify::SHELL = "ksh";
    $ENV{when} = "later";
    $ENV{where} = "over there";
    my $c0 = eval { system("export when=now") };
    if ($@ && $@ =~ /error (opening|closing) pipe/) {
        skip "ksh shell not available for test", 4;
    }
    ok($ENV{when} eq 'now', 'ksh - export');
    ok($c0 == 0, 'ksh returned true');
    my $c1 = system("setenv where here 2>/dev/null");
    ok($ENV{where} ne 'here', 'ksh does not recognize setenv');
    ok($c1 != 0, 'ksh returned false');
}

 SKIP:
{
    local $Env::Modify::SHELL = "bash";
    $ENV{when} = "later";
    $ENV{where} = "over there";
    my $c0 = eval { system("export when=now") };
    if ($@ && $@ =~ /error (opening|closing) pipe/) {
        skip "bash shell not available for test", 4;
    }
    ok($ENV{when} eq 'now', 'bash - export');
    ok($c0 == 0, 'bash returned true');
    my $c1 = system("setenv where here 2>/dev/null");
    ok($ENV{where} ne 'here', 'bash does not recognize setenv');
    ok($c1 != 0, 'bash returned false');
}

 SKIP:
{
    local $Env::Modify::SHELL = "zsh";
    $ENV{when} = "later";
    $ENV{where} = "over there";
    my $c0 = eval { system("export when=now") };
    if ($@ && $@ =~ /error (opening|closing) pipe/) {
        skip "zsh shell not available for test", 4;
    }
    ok($ENV{when} eq 'now', 'zsh - export');
    ok($c0 == 0, 'zsh returned true');
    my $c1 = system("setenv where here 2>/dev/null");
    ok($ENV{where} ne 'here', 'zsh does not recognize setenv');
    ok($c1 != 0, 'zsh returned false');
}

my $tfn = 0;
sub tempfile {
    $tfn++;
    sprintf "tmpfile%d.%d", $$, $tfn;
}




( run in 0.550 second using v1.01-cache-2.11-cpan-3989ada0592 )