| File: | t/10-yaml2o.t |
| Coverage: | 96.8% |
| line | stmt | bran | cond | sub | pod | time | code |
|---|---|---|---|---|---|---|---|
| 1 | #!/usr/bin/env perl | ||||||
| 2 | |||||||
| 3 | 1 1 1 | 2904 2 25 | use strict; | ||||
| 4 | 1 1 1 | 5 0 31 | use warnings; | ||||
| 5 | 1 1 1 | 330 70760 6 | use Test::More; | ||||
| 6 | 1 1 1 | 463 2453 2 | use Test::Exception; | ||||
| 7 | 1 1 1 | 747 15289 54 | use File::Temp qw/tempfile/; | ||||
| 8 | 1 1 1 | 300 2 70197 | use Util::H2O::More qw/yaml2h2o yaml2o/; | ||||
| 9 | |||||||
| 10 | 1 | 116 | my $YAML = <<EOYAML; | ||||
| 11 | --- | ||||||
| 12 | database: | ||||||
| 13 | host: localhost | ||||||
| 14 | port: 3306 | ||||||
| 15 | db: users | ||||||
| 16 | username: appuser | ||||||
| 17 | password: 1uggagel2345 | ||||||
| 18 | --- | ||||||
| 19 | devices: | ||||||
| 20 | copter1: | ||||||
| 21 | active: 1 | ||||||
| 22 | macaddr: a0:ff:6b:14:19:6e | ||||||
| 23 | host: 192.168.0.14 | ||||||
| 24 | port: 80 | ||||||
| 25 | thingywhirl: | ||||||
| 26 | active: 1 | ||||||
| 27 | macaddr: 00:88:fb:1a:5f:08 | ||||||
| 28 | host: 192.168.0.14 | ||||||
| 29 | port: 80 | ||||||
| 30 | EOYAML | ||||||
| 31 | |||||||
| 32 | 1 | 2 | my $NOT_YAML_OR_FILE = <<EONOTYAML; | ||||
| 33 | MR DUCKS | ||||||
| 34 | AM R NOT | ||||||
| 35 | AM R 2 | ||||||
| 36 | C DEM E D B D WANGS | ||||||
| 37 | L I C | ||||||
| 38 | MR DUCKS | ||||||
| 39 | EONOTYAML | ||||||
| 40 | |||||||
| 41 | { | ||||||
| 42 | 1 1 | 4 32 | dies_ok { yaml2h2o $NOT_YAML_OR_FILE } q{yaml2h2o rejects input that is neither a file name nor clearly YAML}; | ||||
| 43 | |||||||
| 44 | 1 | 301 | my ( $dbconfig1, $devices1 ) = yaml2h2o $YAML; | ||||
| 45 | |||||||
| 46 | 1 | 2 | is $dbconfig1->database->host, q{localhost}, q{YAML string parsed and objectified as expected}; | ||||
| 47 | 1 | 229 | is $devices1->devices->copter1->port, 80, q{YAML string parsed and objectified as expected}; | ||||
| 48 | |||||||
| 49 | 1 | 200 | my ( $fh, $filename ) = tempfile( SUFFIX => '.yaml' ); | ||||
| 50 | |||||||
| 51 | 1 1 | 312 3 | print {$fh} $YAML; | ||||
| 52 | 1 | 22 | close $fh or die qq{Could not close temporary YAML file '$filename': $!}; | ||||
| 53 | |||||||
| 54 | 1 | 2 | my ( $dbconfig2, $devices2 ) = yaml2h2o $filename; | ||||
| 55 | |||||||
| 56 | 1 | 3 | is $dbconfig2->database->host, q{localhost}, q{YAML file parsed and objectified as expected}; | ||||
| 57 | 1 | 213 | is $devices2->devices->copter1->port, 80, q{YAML file parsed and objectified as expected}; | ||||
| 58 | |||||||
| 59 | 1 | 203 | my $missing_filename = $filename . q{.does-not-exist}; | ||||
| 60 | |||||||
| 61 | 1 1 | 4 22 | dies_ok { yaml2h2o $missing_filename } q{yaml2h2o rejects a one-line file name that does not exist}; | ||||
| 62 | } | ||||||
| 63 | |||||||
| 64 | { | ||||||
| 65 | 1 1 1 1 | 1 708 5 21 | dies_ok { yaml2o $NOT_YAML_OR_FILE } q{yaml2o rejects input that is neither a file name nor clearly YAML}; | ||||
| 66 | |||||||
| 67 | 1 | 202 | my ( $dbconfig1, $devices1 ) = yaml2o $YAML; | ||||
| 68 | |||||||
| 69 | 1 | 3 | is $dbconfig1->database->host, q{localhost}, q{YAML string parsed and objectified as expected}; | ||||
| 70 | 1 | 214 | is $devices1->devices->copter1->port, 80, q{YAML string parsed and objectified as expected}; | ||||
| 71 | |||||||
| 72 | 1 | 209 | my ( $fh, $filename ) = tempfile( SUFFIX => '.yaml' ); | ||||
| 73 | |||||||
| 74 | 1 1 | 192 9 | print {$fh} $YAML; | ||||
| 75 | 1 | 16 | close $fh or die qq{Could not close temporary YAML file '$filename': $!}; | ||||
| 76 | |||||||
| 77 | 1 | 3 | my ( $dbconfig2, $devices2 ) = yaml2o $filename; | ||||
| 78 | |||||||
| 79 | 1 | 3 | is $dbconfig2->database->host, q{localhost}, q{YAML file parsed and objectified as expected}; | ||||
| 80 | 1 | 206 | is $devices2->devices->copter1->port, 80, q{YAML file parsed and objectified as expected}; | ||||
| 81 | } | ||||||
| 82 | |||||||
| 83 | 1 | 568 | done_testing; | ||||