@@ -732,3 +732,168 @@ error
732732 let renderer = Renderer :: plain ( ) . anonymized_line_numbers ( false ) ;
733733 assert_data_eq ! ( renderer. render( input) . to_string( ) , expected) ;
734734}
735+
736+ #[ test]
737+ fn two_single_line_same_line ( ) {
738+ let source = r#"bar = { version = "0.1.0", optional = true }"# ;
739+ let input = Level :: Error . title ( "unused optional dependency" ) . snippet (
740+ Snippet :: source ( source)
741+ . origin ( "Cargo.toml" )
742+ . line_start ( 4 )
743+ . annotation (
744+ Level :: Error
745+ . span ( 0 ..3 )
746+ . label ( "I need this to be really long so I can test overlaps" ) ,
747+ )
748+ . annotation (
749+ Level :: Info
750+ . span ( 27 ..42 )
751+ . label ( "This should also be long but not too long" ) ,
752+ ) ,
753+ ) ;
754+ let expected = str![ [ r#"
755+ error: unused optional dependency
756+ --> Cargo.toml:4:1
757+ |
758+ 4 | bar = { version = "0.1.0", optional = true }
759+ | ^^^ I need this to be really long so I can test overlaps
760+ | --------------- info: This should also be long but not too long
761+ |
762+ "# ] ] ;
763+ let renderer = Renderer :: plain ( ) . anonymized_line_numbers ( false ) ;
764+ assert_data_eq ! ( renderer. render( input) . to_string( ) , expected) ;
765+ }
766+
767+ #[ test]
768+ fn multi_and_single ( ) {
769+ let source = r#"bar = { version = "0.1.0", optional = true }
770+ this is another line
771+ so is this
772+ bar = { version = "0.1.0", optional = true }
773+ "# ;
774+ let input = Level :: Error . title ( "unused optional dependency" ) . snippet (
775+ Snippet :: source ( source)
776+ . line_start ( 4 )
777+ . annotation (
778+ Level :: Error
779+ . span ( 41 ..119 )
780+ . label ( "I need this to be really long so I can test overlaps" ) ,
781+ )
782+ . annotation (
783+ Level :: Info
784+ . span ( 27 ..42 )
785+ . label ( "This should also be long but not too long" ) ,
786+ ) ,
787+ ) ;
788+ let expected = str![ [ r#"
789+ error: unused optional dependency
790+ |
791+ 4 | bar = { version = "0.1.0", optional = true }
792+ | __________________________________________^
793+ | --------------- info: This should also be long but not too long
794+ 5 | | this is another line
795+ 6 | | so is this
796+ 7 | | bar = { version = "0.1.0", optional = true }
797+ | |__________________________________________^ I need this to be really long so I can test overlaps
798+ |
799+ "# ] ] ;
800+ let renderer = Renderer :: plain ( ) ;
801+ assert_data_eq ! ( renderer. render( input) . to_string( ) , expected) ;
802+ }
803+
804+ #[ test]
805+ fn two_multi_and_single ( ) {
806+ let source = r#"bar = { version = "0.1.0", optional = true }
807+ this is another line
808+ so is this
809+ bar = { version = "0.1.0", optional = true }
810+ "# ;
811+ let input = Level :: Error . title ( "unused optional dependency" ) . snippet (
812+ Snippet :: source ( source)
813+ . line_start ( 4 )
814+ . annotation (
815+ Level :: Error
816+ . span ( 41 ..119 )
817+ . label ( "I need this to be really long so I can test overlaps" ) ,
818+ )
819+ . annotation (
820+ Level :: Error
821+ . span ( 8 ..102 )
822+ . label ( "I need this to be really long so I can test overlaps" ) ,
823+ )
824+ . annotation (
825+ Level :: Info
826+ . span ( 27 ..42 )
827+ . label ( "This should also be long but not too long" ) ,
828+ ) ,
829+ ) ;
830+ let expected = str![ [ r#"
831+ error: unused optional dependency
832+ |
833+ 4 | bar = { version = "0.1.0", optional = true }
834+ | __________________________________________^
835+ | _________^
836+ | --------------- info: This should also be long but not too long
837+ 5 | || this is another line
838+ 6 | || so is this
839+ 7 | || bar = { version = "0.1.0", optional = true }
840+ | ||__________________________________________^ I need this to be really long so I can test overlaps
841+ | ||_________________________^ I need this to be really long so I can test overlaps
842+ |
843+ "# ] ] ;
844+ let renderer = Renderer :: plain ( ) ;
845+ assert_data_eq ! ( renderer. render( input) . to_string( ) , expected) ;
846+ }
847+
848+ #[ test]
849+ fn three_multi_and_single ( ) {
850+ let source = r#"bar = { version = "0.1.0", optional = true }
851+ this is another line
852+ so is this
853+ bar = { version = "0.1.0", optional = true }
854+ this is another line
855+ "# ;
856+ let input = Level :: Error . title ( "unused optional dependency" ) . snippet (
857+ Snippet :: source ( source)
858+ . line_start ( 4 )
859+ . annotation (
860+ Level :: Error
861+ . span ( 41 ..119 )
862+ . label ( "I need this to be really long so I can test overlaps" ) ,
863+ )
864+ . annotation (
865+ Level :: Error
866+ . span ( 8 ..102 )
867+ . label ( "I need this to be really long so I can test overlaps" ) ,
868+ )
869+ . annotation (
870+ Level :: Error
871+ . span ( 48 ..126 )
872+ . label ( "I need this to be really long so I can test overlaps" ) ,
873+ )
874+ . annotation (
875+ Level :: Info
876+ . span ( 27 ..42 )
877+ . label ( "This should also be long but not too long" ) ,
878+ ) ,
879+ ) ;
880+ let expected = str![ [ r#"
881+ error: unused optional dependency
882+ |
883+ 4 | bar = { version = "0.1.0", optional = true }
884+ | __________________________________________^
885+ | _________^
886+ | --------------- info: This should also be long but not too long
887+ 5 | || this is another line
888+ | ||____^
889+ 6 | ||| so is this
890+ 7 | ||| bar = { version = "0.1.0", optional = true }
891+ | |||__________________________________________^ I need this to be really long so I can test overlaps
892+ | |||_________________________^ I need this to be really long so I can test overlaps
893+ 8 | | this is another line
894+ | |____^ I need this to be really long so I can test overlaps
895+ |
896+ "# ] ] ;
897+ let renderer = Renderer :: plain ( ) ;
898+ assert_data_eq ! ( renderer. render( input) . to_string( ) , expected) ;
899+ }
0 commit comments