github.com/mackerelio/mackerel-agent-plugins@v0.89.3/t/convention.t (about)

     1  use 5.014;
     2  use warnings;
     3  use utf8;
     4  use File::Spec;
     5  use Test::More;
     6  
     7  # The plugins placed in other mackerelio's repositories
     8  my $plugins_in_other_repository = [qw(
     9      mackerel-plugin-aws-cloudfront
    10      mackerel-plugin-aws-dynamodb
    11      mackerel-plugin-aws-ec2
    12      mackerel-plugin-aws-ec2-cpucredit
    13      mackerel-plugin-aws-elasticache
    14      mackerel-plugin-aws-elasticsearch
    15      mackerel-plugin-aws-elb
    16      mackerel-plugin-aws-kinesis-firehose
    17      mackerel-plugin-aws-kinesis-streams
    18      mackerel-plugin-aws-lambda
    19      mackerel-plugin-aws-rds
    20      mackerel-plugin-aws-rekognition
    21      mackerel-plugin-aws-s3-requests
    22      mackerel-plugin-aws-ses
    23      mackerel-plugin-aws-waf
    24      mackerel-plugin-flume
    25      mackerel-plugin-gcp-compute-engine
    26      mackerel-plugin-gearmand
    27      mackerel-plugin-graphite
    28      mackerel-plugin-json
    29      mackerel-plugin-mcrouter
    30      mackerel-plugin-mongodb
    31      mackerel-plugin-murmur
    32      mackerel-plugin-mysql
    33      mackerel-plugin-nvidia-smi
    34      mackerel-plugin-rack-stats
    35      mackerel-plugin-redash
    36      mackerel-plugin-xentop
    37  )];
    38  my $is_in_other_repository = {
    39      map { $_ => 1 } @$plugins_in_other_repository,
    40  };
    41  
    42  for my $dir (<mackerel-plugin-*>) {
    43      my $maingo = File::Spec->catfile($dir, 'main.go');
    44      ok -f -r $maingo or diag "$maingo not found";
    45      my $readmemd = File::Spec->catfile($dir, 'README.md');
    46      ok -f -r $readmemd or diag "$readmemd is not available.";
    47  
    48      my $package = $dir;
    49         $package =~ s/(mackerel-plugin)?-//g;
    50         $package = "mp$package";
    51      my $import = sprintf(
    52          "github.com/mackerelio/%s/lib",
    53          $is_in_other_repository->{$dir} ? $dir : "mackerel-agent-plugins/$dir",
    54      );
    55      my $expect = qq[package main
    56  
    57  import "$import"
    58  
    59  func main() {
    60  \t$package.Do()
    61  }
    62  ];
    63      my $got = do {
    64          local $/;
    65          open my $fh, '<:encoding(UTF-8)', $maingo or die $!;
    66          <$fh>
    67      };
    68      is $got, $expect, "The contents of $maingo does not follow the convention.";
    69  }
    70  
    71  done_testing;