%PDF- %PDF-
| Direktori : /home/opti/optisoftcom/.cpanm/work/1544535425.21555/MongoDB-v2.0.2/t/lib/ |
| Current File : /home/opti/optisoftcom/.cpanm/work/1544535425.21555/MongoDB-v2.0.2/t/lib/MongoDBSpecTest.pm |
# Copyright 2018 - present MongoDB, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
package MongoDBSpecTest;
use strict;
use warnings;
use Exporter 'import';
use Test::More;
use Path::Tiny;
use JSON::MaybeXS qw( is_bool decode_json );
our @EXPORT_OK = qw(
foreach_spec_test
);
sub foreach_spec_test {
my ($dir, $callback) = @_;
$dir = path($dir);
my $iterator = $dir->iterator( { recurse => 1 } );
while ( my $path = $iterator->() ) {
next unless -f $path && $path =~ /\.json$/;
my $plan = eval { decode_json( $path->slurp_utf8 ) };
if ($@) {
die "Error decoding $path: $@";
}
my $name = $path->relative($dir)->basename(".json");
subtest $name => sub {
for my $test ( @{ $plan->{tests} } ) {
subtest $test->{description} => sub {
$callback->($test, $plan);
};
}
};
}
}
1;