From a997ce6a54482567805713ea39a86f2f1ed51324 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20R=C3=B6nnqvist?= Date: Mon, 17 Jul 2023 09:47:32 -0700 Subject: [PATCH] Create file URLs for bundle files in TestFileSystem Also, create file URL for baseURL fallback for DiagnosticConsoleWriter --- .../Actions/Convert/ConvertAction.swift | 2 +- .../Utility/TestFileSystem.swift | 2 +- .../Utility/TestFileSystemTests.swift | 25 +++++++++++++++++++ 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/Sources/SwiftDocCUtilities/Action/Actions/Convert/ConvertAction.swift b/Sources/SwiftDocCUtilities/Action/Actions/Convert/ConvertAction.swift index 8dd40eac6c..01c490c5f4 100644 --- a/Sources/SwiftDocCUtilities/Action/Actions/Convert/ConvertAction.swift +++ b/Sources/SwiftDocCUtilities/Action/Actions/Convert/ConvertAction.swift @@ -152,7 +152,7 @@ public struct ConvertAction: Action, RecreatingContext { engine.add( DiagnosticConsoleWriter( formattingOptions: formattingOptions, - baseURL: documentationBundleURL ?? URL(string: fileManager.currentDirectoryPath) + baseURL: documentationBundleURL ?? URL(fileURLWithPath: fileManager.currentDirectoryPath) ) ) if let diagnosticFilePath = diagnosticFilePath { diff --git a/Tests/SwiftDocCUtilitiesTests/Utility/TestFileSystem.swift b/Tests/SwiftDocCUtilitiesTests/Utility/TestFileSystem.swift index 45c0216f72..b4ed7dfbde 100644 --- a/Tests/SwiftDocCUtilitiesTests/Utility/TestFileSystem.swift +++ b/Tests/SwiftDocCUtilitiesTests/Utility/TestFileSystem.swift @@ -82,7 +82,7 @@ class TestFileSystem: FileManagerProtocol, DocumentationWorkspaceDataProvider { for folder in folders { let files = try addFolder(folder) if let info = folder.recursiveContent.mapFirst(where: { $0 as? InfoPlist }) { - let files = files.filter({ $0.hasPrefix(folder.absoluteURL.path) }).compactMap({ URL(string: $0) }) + let files = files.filter({ $0.hasPrefix(folder.absoluteURL.path) }).compactMap({ URL(fileURLWithPath: $0) }) let markupFiles = files.filter({ DocumentationBundleFileTypes.isMarkupFile($0) }) let miscFiles = files.filter({ !DocumentationBundleFileTypes.isMarkupFile($0) }) diff --git a/Tests/SwiftDocCUtilitiesTests/Utility/TestFileSystemTests.swift b/Tests/SwiftDocCUtilitiesTests/Utility/TestFileSystemTests.swift index ae041e2c61..6a9959dc08 100644 --- a/Tests/SwiftDocCUtilitiesTests/Utility/TestFileSystemTests.swift +++ b/Tests/SwiftDocCUtilitiesTests/Utility/TestFileSystemTests.swift @@ -259,4 +259,29 @@ class TestFileSystemTests: XCTestCase { XCTAssertFalse(fs.contentsEqual(atPath: "/main/test.txt", andPath: "/main/notclone.txt")) XCTAssertFalse(fs.contentsEqual(atPath: "/main/test.txt", andPath: "/main/missing.txt")) } + + func testBundleUsesFileURLs() throws { + let emptySymbolGraphData = try JSONEncoder().encode(makeSymbolGraph(moduleName: "Something")) + + // A docc catalog with an article, a resource, an Info.plist file, and a symbol graph file + let folders = Folder(name: "something.docc", content: [ + TextFile(name: "article.md", utf8Content: ""), + DataFile(name: "image.png", data: Data()), + InfoPlist(displayName: "unit-test", identifier: "com.example"), + DataFile(name: "Something.symbols.json", data: emptySymbolGraphData) + ]) + let fs = try TestFileSystem(folders: [folders]) + + let bundles = try fs.bundles() + XCTAssertEqual(bundles.count, 1) + + let bundle = try XCTUnwrap(bundles.first) + XCTAssertFalse(bundle.markupURLs.isEmpty) + XCTAssertFalse(bundle.miscResourceURLs.isEmpty) + XCTAssertFalse(bundle.symbolGraphURLs.isEmpty) + + XCTAssert(bundle.markupURLs.allSatisfy(\.isFileURL)) + XCTAssert(bundle.miscResourceURLs.allSatisfy(\.isFileURL)) + XCTAssert(bundle.symbolGraphURLs.allSatisfy(\.isFileURL)) + } }