@@ -640,22 +640,30 @@ final class URLTests : XCTestCase {
640
640
}
641
641
642
642
func testURLTildeFilePath( ) throws {
643
- var url = URL ( filePath: " ~ " )
643
+ func urlIsAbsolute( _ url: URL ) -> Bool {
644
+ if url. relativePath. utf8. first == . _slash {
645
+ return true
646
+ }
647
+ guard url. baseURL != nil else {
648
+ return false
649
+ }
650
+ #if !FOUNDATION_FRAMEWORK_NSURL
651
+ return url. path ( ) . utf8. first == . _slash
652
+ #else
653
+ return url. path. utf8. first == . _slash
654
+ #endif
655
+ }
656
+
644
657
// "~" must either be expanded to an absolute path or resolved against a base URL
645
- XCTAssertTrue (
646
- url. relativePath. utf8. first == . _slash || ( url. baseURL != nil && url. path ( ) . utf8. first == . _slash)
647
- )
658
+ var url = URL ( filePath: " ~ " )
659
+ XCTAssertTrue ( urlIsAbsolute ( url) )
648
660
649
661
url = URL ( filePath: " ~ " , directoryHint: . isDirectory)
650
- XCTAssertTrue (
651
- url. relativePath. utf8. first == . _slash || ( url. baseURL != nil && url. path ( ) . utf8. first == . _slash)
652
- )
662
+ XCTAssertTrue ( urlIsAbsolute ( url) )
653
663
XCTAssertEqual ( url. path ( ) . utf8. last, . _slash)
654
664
655
665
url = URL ( filePath: " ~/ " )
656
- XCTAssertTrue (
657
- url. relativePath. utf8. first == . _slash || ( url. baseURL != nil && url. path ( ) . utf8. first == . _slash)
658
- )
666
+ XCTAssertTrue ( urlIsAbsolute ( url) )
659
667
XCTAssertEqual ( url. path ( ) . utf8. last, . _slash)
660
668
}
661
669
@@ -677,7 +685,12 @@ final class URLTests : XCTestCase {
677
685
XCTAssertEqual ( url. path ( ) , " /path.foo/ " )
678
686
url. append ( path: " ///// " )
679
687
url. deletePathExtension ( )
688
+ #if !FOUNDATION_FRAMEWORK_NSURL
680
689
XCTAssertEqual ( url. path ( ) , " /path/ " )
690
+ #else
691
+ // Old behavior only searches the last empty component, so the extension isn't actually removed
692
+ XCTAssertEqual ( url. path ( ) , " /path.foo/// " )
693
+ #endif
681
694
}
682
695
683
696
func testURLComponentsPercentEncodedUnencodedProperties( ) throws {
0 commit comments