@@ -761,24 +761,9 @@ test("icss-scoped contract", () => {
761761
762762test ( "icss-composed contract" , ( ) => {
763763 const inputMessages = [
764- {
765- plugin : "previous-plugin" ,
766- type : "icss-composed" ,
767- name : "foo" ,
768- value : "__compose__foo1"
769- } ,
770- {
771- plugin : "previous-plugin" ,
772- type : "icss-composed" ,
773- name : "foo" ,
774- value : "__compose__foo2"
775- } ,
776- {
777- plugin : "previous-plugin" ,
778- type : "icss-composed" ,
779- name : "bar" ,
780- value : "__compose__bar"
781- }
764+ { type : "icss-composed" , name : "foo" , value : "__compose__foo1" } ,
765+ { type : "icss-composed" , name : "foo" , value : "__compose__foo2" } ,
766+ { type : "icss-composed" , name : "bar" , value : "__compose__bar" }
782767 ] ;
783768 return runMessages ( {
784769 fixture : `
@@ -825,6 +810,109 @@ test("icss-composed contract", () => {
825810 } ) ;
826811} ) ;
827812
813+ test ( "icss-composed contract with local dependencies" , ( ) => {
814+ const inputMessages = [
815+ { type : "icss-composed" , name : "bar" , value : "foo" } ,
816+ { type : "icss-composed" , name : "tar" , value : "baz" } ,
817+ { type : "icss-composed" , name : "doo" , value : "bar" } ,
818+ { type : "icss-composed" , name : "doo" , value : "tar" }
819+ ] ;
820+ return runMessages ( {
821+ fixture : `
822+ .foo {}
823+ .bar {}
824+ .baz {}
825+ .tar {}
826+ .doo {}
827+ ` ,
828+ expected : `
829+ :export {
830+ foo: __scope__foo;
831+ bar: __scope__bar __scope__foo;
832+ baz: __scope__baz;
833+ tar: __scope__tar __scope__baz;
834+ doo: __scope__doo __scope__bar __scope__foo __scope__tar __scope__baz
835+ }
836+ .__scope__foo {}
837+ .__scope__bar {}
838+ .__scope__baz {}
839+ .__scope__tar {}
840+ .__scope__doo {}
841+ ` ,
842+ inputMessages,
843+ outputMessages : [
844+ ...inputMessages ,
845+ {
846+ plugin : "postcss-icss-selectors" ,
847+ type : "icss-scoped" ,
848+ name : "foo" ,
849+ value : "__scope__foo"
850+ } ,
851+ {
852+ plugin : "postcss-icss-selectors" ,
853+ type : "icss-scoped" ,
854+ name : "bar" ,
855+ value : "__scope__bar"
856+ } ,
857+ {
858+ plugin : "postcss-icss-selectors" ,
859+ type : "icss-scoped" ,
860+ name : "baz" ,
861+ value : "__scope__baz"
862+ } ,
863+ {
864+ plugin : "postcss-icss-selectors" ,
865+ type : "icss-scoped" ,
866+ name : "tar" ,
867+ value : "__scope__tar"
868+ } ,
869+ {
870+ plugin : "postcss-icss-selectors" ,
871+ type : "icss-scoped" ,
872+ name : "doo" ,
873+ value : "__scope__doo"
874+ }
875+ ]
876+ } ) ;
877+ } ) ;
878+
879+ test ( "icss-composed contract with recursive local composition" , ( ) => {
880+ const inputMessages = [
881+ { type : "icss-composed" , name : "foo" , value : "bar" } ,
882+ { type : "icss-composed" , name : "bar" , value : "foo" }
883+ ] ;
884+ return runMessages ( {
885+ fixture : `
886+ .foo {}
887+ .bar {}
888+ ` ,
889+ expected : `
890+ :export {
891+ foo: __scope__foo __scope__bar;
892+ bar: __scope__bar __scope__foo
893+ }
894+ .__scope__foo {}
895+ .__scope__bar {}
896+ ` ,
897+ inputMessages,
898+ outputMessages : [
899+ ...inputMessages ,
900+ {
901+ plugin : "postcss-icss-selectors" ,
902+ type : "icss-scoped" ,
903+ name : "foo" ,
904+ value : "__scope__foo"
905+ } ,
906+ {
907+ plugin : "postcss-icss-selectors" ,
908+ type : "icss-scoped" ,
909+ name : "bar" ,
910+ value : "__scope__bar"
911+ }
912+ ]
913+ } ) ;
914+ } ) ;
915+
828916test ( "icss-value contract" , ( ) => {
829917 const inputMessages = [
830918 {
0 commit comments