@@ -619,6 +619,40 @@ def test_relative_to_common(self):
619
619
self .assertRaises (ValueError , p .relative_to , '' )
620
620
self .assertRaises (ValueError , p .relative_to , P ('a' ))
621
621
622
+ def test_is_relative_to_common (self ):
623
+ P = self .cls
624
+ p = P ('a/b' )
625
+ self .assertRaises (TypeError , p .is_relative_to )
626
+ self .assertRaises (TypeError , p .is_relative_to , b'a' )
627
+ self .assertTrue (p .is_relative_to (P ()))
628
+ self .assertTrue (p .is_relative_to ('' ))
629
+ self .assertTrue (p .is_relative_to (P ('a' )))
630
+ self .assertTrue (p .is_relative_to ('a/' ))
631
+ self .assertTrue (p .is_relative_to (P ('a/b' )))
632
+ self .assertTrue (p .is_relative_to ('a/b' ))
633
+ # With several args.
634
+ self .assertTrue (p .is_relative_to ('a' , 'b' ))
635
+ # Unrelated paths.
636
+ self .assertFalse (p .is_relative_to (P ('c' )))
637
+ self .assertFalse (p .is_relative_to (P ('a/b/c' )))
638
+ self .assertFalse (p .is_relative_to (P ('a/c' )))
639
+ self .assertFalse (p .is_relative_to (P ('/a' )))
640
+ p = P ('/a/b' )
641
+ self .assertTrue (p .is_relative_to (P ('/' )))
642
+ self .assertTrue (p .is_relative_to ('/' ))
643
+ self .assertTrue (p .is_relative_to (P ('/a' )))
644
+ self .assertTrue (p .is_relative_to ('/a' ))
645
+ self .assertTrue (p .is_relative_to ('/a/' ))
646
+ self .assertTrue (p .is_relative_to (P ('/a/b' )))
647
+ self .assertTrue (p .is_relative_to ('/a/b' ))
648
+ # Unrelated paths.
649
+ self .assertFalse (p .is_relative_to (P ('/c' )))
650
+ self .assertFalse (p .is_relative_to (P ('/a/b/c' )))
651
+ self .assertFalse (p .is_relative_to (P ('/a/c' )))
652
+ self .assertFalse (p .is_relative_to (P ()))
653
+ self .assertFalse (p .is_relative_to ('' ))
654
+ self .assertFalse (p .is_relative_to (P ('a' )))
655
+
622
656
def test_pickling_common (self ):
623
657
P = self .cls
624
658
p = P ('/a/b' )
@@ -1062,6 +1096,59 @@ def test_relative_to(self):
1062
1096
self .assertRaises (ValueError , p .relative_to , P ('//z/Share/Foo' ))
1063
1097
self .assertRaises (ValueError , p .relative_to , P ('//Server/z/Foo' ))
1064
1098
1099
+ def test_is_relative_to (self ):
1100
+ P = self .cls
1101
+ p = P ('C:Foo/Bar' )
1102
+ self .assertTrue (p .is_relative_to (P ('c:' )))
1103
+ self .assertTrue (p .is_relative_to ('c:' ))
1104
+ self .assertTrue (p .is_relative_to (P ('c:foO' )))
1105
+ self .assertTrue (p .is_relative_to ('c:foO' ))
1106
+ self .assertTrue (p .is_relative_to ('c:foO/' ))
1107
+ self .assertTrue (p .is_relative_to (P ('c:foO/baR' )))
1108
+ self .assertTrue (p .is_relative_to ('c:foO/baR' ))
1109
+ # Unrelated paths.
1110
+ self .assertFalse (p .is_relative_to (P ()))
1111
+ self .assertFalse (p .is_relative_to ('' ))
1112
+ self .assertFalse (p .is_relative_to (P ('d:' )))
1113
+ self .assertFalse (p .is_relative_to (P ('/' )))
1114
+ self .assertFalse (p .is_relative_to (P ('Foo' )))
1115
+ self .assertFalse (p .is_relative_to (P ('/Foo' )))
1116
+ self .assertFalse (p .is_relative_to (P ('C:/Foo' )))
1117
+ self .assertFalse (p .is_relative_to (P ('C:Foo/Bar/Baz' )))
1118
+ self .assertFalse (p .is_relative_to (P ('C:Foo/Baz' )))
1119
+ p = P ('C:/Foo/Bar' )
1120
+ self .assertTrue (p .is_relative_to ('c:' ))
1121
+ self .assertTrue (p .is_relative_to (P ('c:/' )))
1122
+ self .assertTrue (p .is_relative_to (P ('c:/foO' )))
1123
+ self .assertTrue (p .is_relative_to ('c:/foO/' ))
1124
+ self .assertTrue (p .is_relative_to (P ('c:/foO/baR' )))
1125
+ self .assertTrue (p .is_relative_to ('c:/foO/baR' ))
1126
+ # Unrelated paths.
1127
+ self .assertFalse (p .is_relative_to (P ('C:/Baz' )))
1128
+ self .assertFalse (p .is_relative_to (P ('C:/Foo/Bar/Baz' )))
1129
+ self .assertFalse (p .is_relative_to (P ('C:/Foo/Baz' )))
1130
+ self .assertFalse (p .is_relative_to (P ('C:Foo' )))
1131
+ self .assertFalse (p .is_relative_to (P ('d:' )))
1132
+ self .assertFalse (p .is_relative_to (P ('d:/' )))
1133
+ self .assertFalse (p .is_relative_to (P ('/' )))
1134
+ self .assertFalse (p .is_relative_to (P ('/Foo' )))
1135
+ self .assertFalse (p .is_relative_to (P ('//C/Foo' )))
1136
+ # UNC paths.
1137
+ p = P ('//Server/Share/Foo/Bar' )
1138
+ self .assertTrue (p .is_relative_to (P ('//sErver/sHare' )))
1139
+ self .assertTrue (p .is_relative_to ('//sErver/sHare' ))
1140
+ self .assertTrue (p .is_relative_to ('//sErver/sHare/' ))
1141
+ self .assertTrue (p .is_relative_to (P ('//sErver/sHare/Foo' )))
1142
+ self .assertTrue (p .is_relative_to ('//sErver/sHare/Foo' ))
1143
+ self .assertTrue (p .is_relative_to ('//sErver/sHare/Foo/' ))
1144
+ self .assertTrue (p .is_relative_to (P ('//sErver/sHare/Foo/Bar' )))
1145
+ self .assertTrue (p .is_relative_to ('//sErver/sHare/Foo/Bar' ))
1146
+ # Unrelated paths.
1147
+ self .assertFalse (p .is_relative_to (P ('/Server/Share/Foo' )))
1148
+ self .assertFalse (p .is_relative_to (P ('c:/Server/Share/Foo' )))
1149
+ self .assertFalse (p .is_relative_to (P ('//z/Share/Foo' )))
1150
+ self .assertFalse (p .is_relative_to (P ('//Server/z/Foo' )))
1151
+
1065
1152
def test_is_absolute (self ):
1066
1153
P = self .cls
1067
1154
# Under NT, only paths with both a drive and a root are absolute.
0 commit comments