Analizo

 view release on metacpan or  search on metacpan

t/Analizo/Extractor.t  view on Meta::CPAN

  my $language = {};
  $extractor->filters($language);
  $filters = $extractor->filters;
  is($language, $filters->[0]);
}

sub must_consider_only__supported_languages : Tests {
  my $extractor = Analizo::Extractor->new;
  my @processed = ();
  no warnings;
  local *Analizo::Extractor::actually_process = sub {
    my ($self, @options) = @_;
    @processed = @options;
  };
  use warnings;

  my $path = 't/samples/mixed';
  $extractor->process($path);
  @processed = sort @processed;
  my @expected = qw(
    t/samples/mixed/Backend.java
    t/samples/mixed/CSharp_Backend.cs
    t/samples/mixed/UI.java
    t/samples/mixed/native_backend.c
  );
  is_deeply(\@processed, \@expected);
}

sub must_filter_input_with_language_filter : Tests {
  my @processed = ();
  no warnings;
  local *Analizo::Extractor::actually_process = sub {
    my ($self, @options) = @_;
    @processed = @options;
  };

  my $extractor = Analizo::Extractor->new;
  $extractor->filters(Analizo::LanguageFilter->new('java'));
  $extractor->process('t/samples/mixed');

  my @expected = ('t/samples/mixed/Backend.java', 't/samples/mixed/UI.java');
  @processed = sort(@processed);
  is_deeply(\@processed, \@expected);
}

sub must_create_filters_for_excluded_dirs : Tests {
  my $extractor = Analizo::Extractor->new;
  my $filters = $extractor->filters;
  is(scalar @$filters, 0);

  # addding the first excluded directory filter also adds a null language filter
  $extractor->exclude('test');
  $filters = $extractor->filters;
  is(scalar @$filters, 2);

  $extractor->exclude('uitest');
  $filters = $extractor->filters;
  is(scalar(@$filters), 3);
}

sub must_not_process_files_in_excluded_dirs : Tests {
  my @processed = ();
  no warnings;
  local *Analizo::Extractor::actually_process = sub {
    my ($self, @options) = @_;
    @processed = sort(@options);
  };
  use warnings;

  my $extractor = Analizo::Extractor->new;
  $extractor->exclude('t/samples/multidir/cpp/test');
  $extractor->process('t/samples/multidir/cpp');
  is_deeply(\@processed, ['t/samples/multidir/cpp/hello.cc', 't/samples/multidir/cpp/src/hello.cc', 't/samples/multidir/cpp/src/hello.h']);
}

sub must_not_exclude_everything_in_the_case_of_unexisting_excluded_dir : Tests {
  my @processed = ();
  no warnings;
  local *Analizo::Extractor::actually_process = sub {
    my ($self, @options) = @_;
    @processed = sort(@options);
  };
  use warnings;

  my $extractor = Analizo::Extractor->new;

  ok(! -e 't/samples/animals/cpp/test');
  $extractor->exclude('t/samples/animals/cpp/test');  # does not exist!
  $extractor->process('t/samples/animals/cpp');

  isnt(0, scalar @processed);
}

sub must_not_ignore_filter_by_default : Tests {
  no warnings;
  local *Analizo::Extractor::apply_filters = sub {
    die "apply_filters() was called"
  };
  use warnings;

  my $extractor = Analizo::Extractor->new;
  dies_ok { $extractor->process('t/samples/mixed') };
}

sub force_ignore_filter : Tests {
  no warnings;
  local *Analizo::Extractor::use_filters = sub {
    0;
  };
  local *Analizo::Extractor::apply_filters = sub {
    die "apply_filters() was called"
  };
  use warnings;

  my $extractor = Analizo::Extractor->new;
  lives_ok { $extractor->process('t/samples/mixed') };
}

__PACKAGE__->runtests;



( run in 0.347 second using v1.01-cache-2.11-cpan-d7f47b0818f )