@@ -497,14 +497,16 @@ packages:
497497 });
498498 });
499499
500- group ('loadFromClosestAncestor ' , () {
500+ group ('load ' , () {
501501 late Directory tempDir;
502502 late Directory nestedDir;
503+ late Logger logger;
503504
504505 setUp (() {
505506 tempDir = Directory .systemTemp.createTempSync ('very_good_config_' );
506507 nestedDir = Directory (p.join (tempDir.path, 'packages' , 'foo' ))
507508 ..createSync (recursive: true );
509+ logger = _MockLogger ();
508510 });
509511
510512 tearDown (() {
@@ -513,24 +515,42 @@ packages:
513515 }
514516 });
515517
518+ test ('returns the parsed config when very_good.yaml is valid' , () {
519+ File (p.join (tempDir.path, veryGoodConfigFileName)).writeAsStringSync ('''
520+ packages:
521+ get:
522+ recursive: true
523+ ''' );
524+
525+ final config = VeryGoodConfig .load (tempDir, logger: logger);
526+
527+ expect (config, isNotNull);
528+ expect (config! .packages.get .recursive, isTrue);
529+ verifyNever (() => logger.err (any ()));
530+ });
531+
516532 test ('reads config from the starting directory' , () {
517533 File (p.join (nestedDir.path, veryGoodConfigFileName)).writeAsStringSync (
518534 '''
519535test:
520536 min_coverage: 80
521537''' ,
522538 );
523- final config = VeryGoodConfig .loadFromClosestAncestor (nestedDir);
524- expect (config.test.minCoverage, equals ('80' ));
539+
540+ final config = VeryGoodConfig .load (nestedDir, logger: logger);
541+
542+ expect (config? .test.minCoverage, equals ('80' ));
525543 });
526544
527545 test ('reads config from an ancestor directory' , () {
528546 File (p.join (tempDir.path, veryGoodConfigFileName)).writeAsStringSync ('''
529547test:
530548 min_coverage: 90
531549''' );
532- final config = VeryGoodConfig .loadFromClosestAncestor (nestedDir);
533- expect (config.test.minCoverage, equals ('90' ));
550+
551+ final config = VeryGoodConfig .load (nestedDir, logger: logger);
552+
553+ expect (config? .test.minCoverage, equals ('90' ));
534554 });
535555
536556 test ('prefers the closest config over an ancestor' , () {
@@ -544,55 +564,10 @@ test:
544564 min_coverage: 80
545565''' ,
546566 );
547- final config = VeryGoodConfig .loadFromClosestAncestor (nestedDir);
548- expect (config.test.minCoverage, equals ('80' ));
549- });
550567
551- test ('returns empty config when no file is found in any ancestor' , () {
552- expect (
553- VeryGoodConfig .loadFromClosestAncestor (nestedDir),
554- equals (VeryGoodConfig .empty),
555- );
556- });
568+ final config = VeryGoodConfig .load (nestedDir, logger: logger);
557569
558- test ('rethrows parse exception when the closest file is malformed' , () {
559- File (
560- p.join (nestedDir.path, veryGoodConfigFileName),
561- ).writeAsStringSync ('- not\n - a\n - map' );
562- expect (
563- () => VeryGoodConfig .loadFromClosestAncestor (nestedDir),
564- throwsA (isA <VeryGoodConfigParseException >()),
565- );
566- });
567- });
568-
569- group ('load' , () {
570- late Directory tempDir;
571- late Logger logger;
572-
573- setUp (() {
574- tempDir = Directory .systemTemp.createTempSync ('very_good_config_' );
575- logger = _MockLogger ();
576- });
577-
578- tearDown (() {
579- if (tempDir.existsSync ()) {
580- tempDir.deleteSync (recursive: true );
581- }
582- });
583-
584- test ('returns the parsed config when very_good.yaml is valid' , () {
585- File (p.join (tempDir.path, veryGoodConfigFileName)).writeAsStringSync ('''
586- packages:
587- get:
588- recursive: true
589- ''' );
590-
591- final config = VeryGoodConfig .load (tempDir, logger: logger);
592-
593- expect (config, isNotNull);
594- expect (config! .packages.get .recursive, isTrue);
595- verifyNever (() => logger.err (any ()));
570+ expect (config? .test.minCoverage, equals ('80' ));
596571 });
597572
598573 test ('returns an empty config when no very_good.yaml exists' , () {
@@ -619,6 +594,24 @@ packages:
619594 ).called (1 );
620595 },
621596 );
597+
598+ test (
599+ 'logs an error and returns null when the closest file is malformed' ,
600+ () {
601+ File (
602+ p.join (nestedDir.path, veryGoodConfigFileName),
603+ ).writeAsStringSync ('- not\n - a\n - map' );
604+
605+ final config = VeryGoodConfig .load (nestedDir, logger: logger);
606+
607+ expect (config, isNull);
608+ verify (
609+ () => logger.err (
610+ any (that: contains ('Could not read `very_good.yaml`' )),
611+ ),
612+ ).called (1 );
613+ },
614+ );
622615 });
623616
624617 test ('supports value equality' , () {
0 commit comments