BATsh

 view release on metacpan or  search on metacpan

README  view on Meta::CPAN

      case $var in pattern) ... ;; esac
      test / [ ... ]  (file tests, string, integer comparisons)
      cd, pwd, exit, true, false, :, read, shift
      $(( arithmetic )), $( command substitution )
      ${VAR}, ${VAR:-default}, ${VAR:=default}
      source / . file

REQUIREMENTS
    Perl 5.005_03 or later. Core modules only. No external shell required.

BUGS AND LIMITATIONS
    The built-in CMD interpreter does not support all cmd.exe extensions
    (e.g. FOR /F with complex token options, delayed expansion with !VAR!).

    The built-in SH interpreter does not support pipelines (|), redirection
    (> >> <), background execution (&), or here-documents (<<).

    Section boundary detection is token-based (uppercase vs. lowercase first
    token). Mixed-case first tokens are treated as SH.

    Please report bugs via the issue tracker:

lib/BATsh.pm  view on Meta::CPAN

  test / [ ... ]  (file tests, string, integer comparisons)
  cd, pwd, exit, true, false, :, read, shift
  $(( arithmetic )), $( command substitution )
  ${VAR}, ${VAR:-default}, ${VAR:=default}
  source / . file

=head1 REQUIREMENTS

Perl 5.005_03 or later. Core modules only. No external shell required.

=head1 BUGS AND LIMITATIONS

The built-in CMD interpreter does not support all cmd.exe extensions
(e.g. FOR /F with complex token options, delayed expansion with !VAR!).

The built-in SH interpreter does not support pipelines (|), redirection
(> >> <), background execution (&), or here-documents (<<).

Section boundary detection is token-based (uppercase vs. lowercase first
token). Mixed-case first tokens are treated as SH.

t/lib/INA_CPAN_Check.pm  view on Meta::CPAN

    my $pm_ver = _pm_version("$root/$pm_files[0]") if @pm_files;
    my $j1 = 1;
    if ($meta_yml =~ /^requires:(.*?)(?=^\S)/ms) {
        my $block = $1;
        while ($block =~ /:\s*([\d._]+)/g) {
            if (defined $pm_ver && $1 eq $pm_ver) { $j1 = 0; last }
        }
    }
    ok($j1, 'J - PREREQ_PM: no core dep version equals module VERSION');

    # J2: BUGS AND LIMITATIONS has no stale entries
    my @stale = exists $opt{j2_stale} ? @{$opt{j2_stale}} : ();
    my $bugs_text = '';
    if (@pm_files) {
        my $pm_text = _slurp("$root/$pm_files[0]");
        if ($pm_text =~ /=head1 BUGS AND LIMITATIONS(.*?)^=head1/ms) {
            $bugs_text = $1;
        }
    }
    my $j2 = 1;
    for my $entry (@stale) {
        if (index($bugs_text, $entry) >= 0) { $j2 = 0; last }
    }
    ok($j2, 'J - BUGS AND LIMITATIONS: no stale removed-feature entries');

    # J3+J4: test file plan vs ok-comment count
    for my $tf (@t_files) {
        my @lines = _slurp_lines("$root/$tf");
        my @ok_comments;
        my $plan = undef;
        for my $line (@lines) {
            $line =~ s/\r?\n$//;
            push @ok_comments, $1 if $line =~ /^#\s+ok\s+(\d+)\b/;
            $plan = $1 if !defined $plan && $line =~ /^1\.\.(\d+)$/;



( run in 1.639 second using v1.01-cache-2.11-cpan-39bf76dae61 )