@@ -732,3 +732,168 @@ error
732
732
let renderer = Renderer :: plain ( ) . anonymized_line_numbers ( false ) ;
733
733
assert_data_eq ! ( renderer. render( input) . to_string( ) , expected) ;
734
734
}
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