@@ -679,4 +679,91 @@ describe('dependencyTree', function() {
679
679
assert . ok ( ! has3rdPartyDep ) ;
680
680
} ) ;
681
681
} ) ;
682
+
683
+ describe ( 'when given a CJS file with lazy requires' , function ( ) {
684
+ beforeEach ( function ( ) {
685
+ mockfs ( {
686
+ [ __dirname + '/cjs' ] : {
687
+ 'foo.js' : 'module.exports = function(bar = require("./bar")) {};' ,
688
+ 'bar.js' : 'module.exports = 1;'
689
+ }
690
+ } ) ;
691
+ } ) ;
692
+
693
+ it ( 'includes the lazy dependency' , function ( ) {
694
+ const directory = __dirname + '/cjs' ;
695
+ const filename = directory + '/foo.js' ;
696
+
697
+ const tree = dependencyTree ( { filename, directory} ) ;
698
+ const subTree = tree [ filename ] ;
699
+
700
+ assert . ok ( `${ directory } /bar.js` in subTree ) ;
701
+ } ) ;
702
+ } ) ;
703
+
704
+ describe ( 'when given an es6 file using CJS lazy requires' , function ( ) {
705
+ beforeEach ( function ( ) {
706
+ mockfs ( {
707
+ [ __dirname + '/es6' ] : {
708
+ 'foo.js' : 'export default function(bar = require("./bar")) {};' ,
709
+ 'bar.js' : 'export default 1;'
710
+ }
711
+ } ) ;
712
+ } ) ;
713
+
714
+ describe ( 'and mixedImport mode is turned on' , function ( ) {
715
+ it ( 'includes the lazy dependency' , function ( ) {
716
+ const directory = __dirname + '/es6' ;
717
+ const filename = directory + '/foo.js' ;
718
+
719
+ const tree = dependencyTree ( {
720
+ filename,
721
+ directory,
722
+ detective : {
723
+ es6 : {
724
+ mixedImports : true
725
+ }
726
+ }
727
+ } ) ;
728
+
729
+ const subTree = tree [ filename ] ;
730
+
731
+ assert . ok ( `${ directory } /bar.js` in subTree ) ;
732
+ } ) ;
733
+
734
+ it ( 'also works for toList' , function ( ) {
735
+ const directory = __dirname + '/es6' ;
736
+ const filename = directory + '/foo.js' ;
737
+
738
+ const results = dependencyTree . toList ( {
739
+ filename,
740
+ directory,
741
+ detective : {
742
+ es6 : {
743
+ mixedImports : true
744
+ }
745
+ }
746
+ } ) ;
747
+
748
+ assert . equal ( results [ 0 ] , `${ directory } /bar.js` ) ;
749
+ assert . equal ( results [ 1 ] , filename ) ;
750
+ } ) ;
751
+ } ) ;
752
+
753
+ describe ( 'and mixedImport mode is turned off' , function ( ) {
754
+ it ( 'does not include the lazy dependency' , function ( ) {
755
+ const directory = __dirname + '/es6' ;
756
+ const filename = directory + '/foo.js' ;
757
+
758
+ const tree = dependencyTree ( {
759
+ filename,
760
+ directory
761
+ } ) ;
762
+
763
+ const subTree = tree [ filename ] ;
764
+
765
+ assert . ok ( ! ( `${ directory } /bar.js` in subTree ) ) ;
766
+ } ) ;
767
+ } ) ;
768
+ } ) ;
682
769
} ) ;
0 commit comments