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;