diff --git a/Mac.xctestplan b/Mac.xctestplan
index 34a135c46..ffd9f22d4 100644
--- a/Mac.xctestplan
+++ b/Mac.xctestplan
@@ -21,11 +21,58 @@
}
},
{
+ "parallelizable" : true,
"target" : {
"containerPath" : "container:Modules\/FoundationExtras",
"identifier" : "FoundationExtrasTests",
"name" : "FoundationExtrasTests"
}
+ },
+ {
+ "target" : {
+ "containerPath" : "container:Modules\/AppKitExtras",
+ "identifier" : "AppKitExtrasTests",
+ "name" : "AppKitExtrasTests"
+ }
+ },
+ {
+ "parallelizable" : true,
+ "target" : {
+ "containerPath" : "container:Modules\/Tree",
+ "identifier" : "TreeTests",
+ "name" : "TreeTests"
+ }
+ },
+ {
+ "parallelizable" : true,
+ "target" : {
+ "containerPath" : "container:Modules\/Core",
+ "identifier" : "CoreTests",
+ "name" : "CoreTests"
+ }
+ },
+ {
+ "parallelizable" : true,
+ "target" : {
+ "containerPath" : "container:Modules\/Web",
+ "identifier" : "WebTests",
+ "name" : "WebTests"
+ }
+ },
+ {
+ "parallelizable" : true,
+ "target" : {
+ "containerPath" : "container:Modules\/Feedly",
+ "identifier" : "FeedlyTests",
+ "name" : "FeedlyTests"
+ }
+ },
+ {
+ "target" : {
+ "containerPath" : "container:NetNewsWire.xcodeproj",
+ "identifier" : "849C64701ED37A5D003D8FC0",
+ "name" : "NetNewsWireTests"
+ }
}
],
"version" : 1
diff --git a/Modules/AppKitExtras/Tests/AppKitExtrasTests/NSMenuExtensionsTests.swift b/Modules/AppKitExtras/Tests/AppKitExtrasTests/NSMenuExtensionsTests.swift
index da704456a..f3e35fd9a 100644
--- a/Modules/AppKitExtras/Tests/AppKitExtrasTests/NSMenuExtensionsTests.swift
+++ b/Modules/AppKitExtras/Tests/AppKitExtrasTests/NSMenuExtensionsTests.swift
@@ -11,7 +11,7 @@ import AppKit
import XCTest
import AppKitExtras
-final class NSMenuExtensionsTests: XCTestCase {
+@MainActor final class NSMenuExtensionsTests: XCTestCase {
// MARK: - Test addSeparatorIfNeeded
diff --git a/Modules/Feedly/Package.swift b/Modules/Feedly/Package.swift
index dbe60617a..f129e699a 100644
--- a/Modules/Feedly/Package.swift
+++ b/Modules/Feedly/Package.swift
@@ -11,6 +11,7 @@ let package = Package(
targets: ["Feedly"]),
],
dependencies: [
+ .package(path: "../FoundationExtras"),
.package(path: "../Parser"),
.package(path: "../Articles"),
.package(path: "../Secrets"),
@@ -22,6 +23,7 @@ let package = Package(
.target(
name: "Feedly",
dependencies: [
+ "FoundationExtras",
"Parser",
"Articles",
"Secrets",
@@ -35,6 +37,9 @@ let package = Package(
),
.testTarget(
name: "FeedlyTests",
- dependencies: ["Feedly"]),
+ dependencies: [
+ "Feedly",
+ "FoundationExtras"
+ ]),
]
)
diff --git a/Modules/Feedly/Sources/Feedly/FeedlyAPICaller.swift b/Modules/Feedly/Sources/Feedly/FeedlyAPICaller.swift
index eb7f2a0be..045f7ec3e 100644
--- a/Modules/Feedly/Sources/Feedly/FeedlyAPICaller.swift
+++ b/Modules/Feedly/Sources/Feedly/FeedlyAPICaller.swift
@@ -7,6 +7,7 @@
//
import Foundation
+import FoundationExtras
import Web
import Secrets
diff --git a/NetNewsWire.xcodeproj/project.pbxproj b/NetNewsWire.xcodeproj/project.pbxproj
index 6b0474782..0cebe583e 100644
--- a/NetNewsWire.xcodeproj/project.pbxproj
+++ b/NetNewsWire.xcodeproj/project.pbxproj
@@ -53,7 +53,6 @@
17E0084625941887000C23F0 /* SizeCategories.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17E0084525941887000C23F0 /* SizeCategories.swift */; };
27B86EEB25A53AAB00264340 /* Account in Frameworks */ = {isa = PBXBuildFile; productRef = 51BC2F4A24D343A500E90810 /* Account */; };
4679674625E599C100844E8D /* Articles in Frameworks */ = {isa = PBXBuildFile; productRef = 4679674525E599C100844E8D /* Articles */; };
- 4679674725E599C100844E8D /* Articles in Embed Frameworks */ = {isa = PBXBuildFile; productRef = 4679674525E599C100844E8D /* Articles */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
49F40DF82335B71000552BF4 /* newsfoot.js in Resources */ = {isa = PBXBuildFile; fileRef = 49F40DEF2335B71000552BF4 /* newsfoot.js */; };
49F40DF92335B71000552BF4 /* newsfoot.js in Resources */ = {isa = PBXBuildFile; fileRef = 49F40DEF2335B71000552BF4 /* newsfoot.js */; };
510289CD24519A1D00426DDF /* SelectComboTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 510289CC24519A1D00426DDF /* SelectComboTableViewCell.swift */; };
@@ -387,6 +386,8 @@
8456116C2BBD145200507B73 /* Parser in Embed Frameworks */ = {isa = PBXBuildFile; productRef = 8456116A2BBD145200507B73 /* Parser */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
845611712BBD145D00507B73 /* Parser in Frameworks */ = {isa = PBXBuildFile; productRef = 845611702BBD145D00507B73 /* Parser */; };
845611722BBD145D00507B73 /* Parser in Embed Frameworks */ = {isa = PBXBuildFile; productRef = 845611702BBD145D00507B73 /* Parser */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
+ 8457C52E2CA91FED0038F3C0 /* AppKitExtras in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 84A059F52C3A4AB20041209B /* AppKitExtras */; };
+ 8457C5302CA920020038F3C0 /* AppKitExtras in Frameworks */ = {isa = PBXBuildFile; productRef = 8457C52F2CA920020038F3C0 /* AppKitExtras */; };
845A29221FC9251E007B49E3 /* SidebarCellLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 845A29211FC9251E007B49E3 /* SidebarCellLayout.swift */; };
845A29241FC9255E007B49E3 /* SidebarCellAppearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 845A29231FC9255E007B49E3 /* SidebarCellAppearance.swift */; };
845EE7B11FC2366500854A1F /* StarredFeedDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 845EE7B01FC2366500854A1F /* StarredFeedDelegate.swift */; };
@@ -624,7 +625,7 @@
dstPath = "";
dstSubfolderSpec = 10;
files = (
- 4679674725E599C100844E8D /* Articles in Embed Frameworks */,
+ 8457C52E2CA91FED0038F3C0 /* AppKitExtras in Embed Frameworks */,
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
@@ -1326,6 +1327,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ 8457C5302CA920020038F3C0 /* AppKitExtras in Frameworks */,
4679674625E599C100844E8D /* Articles in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -2670,6 +2672,7 @@
name = NetNewsWireTests;
packageProductDependencies = (
4679674525E599C100844E8D /* Articles */,
+ 8457C52F2CA920020038F3C0 /* AppKitExtras */,
);
productName = NetNewsWireTests;
productReference = 849C64711ED37A5D003D8FC0 /* NetNewsWireTests.xctest */;
@@ -4189,6 +4192,10 @@
isa = XCSwiftPackageProductDependency;
productName = Parser;
};
+ 8457C52F2CA920020038F3C0 /* AppKitExtras */ = {
+ isa = XCSwiftPackageProductDependency;
+ productName = AppKitExtras;
+ };
8479ABE22B9E906E00F84C4D /* Database */ = {
isa = XCSwiftPackageProductDependency;
productName = Database;
diff --git a/NetNewsWire.xcodeproj/xcshareddata/xcschemes/NetNewsWire.xcscheme b/NetNewsWire.xcodeproj/xcshareddata/xcschemes/NetNewsWire.xcscheme
index 410c2b25b..77abe15f5 100644
--- a/NetNewsWire.xcodeproj/xcshareddata/xcschemes/NetNewsWire.xcscheme
+++ b/NetNewsWire.xcodeproj/xcshareddata/xcschemes/NetNewsWire.xcscheme
@@ -72,6 +72,18 @@
ReferencedContainer = "container:NetNewsWire.xcodeproj">
+
+
+
+
+
+
}
- if the test_result is false or is missing, the test fails
- @return the value of script_result, if any
- */
- func doIndividualScript(filename:String) -> NSAppleEventDescriptor? {
- var errorDict: NSDictionary? = nil
- let testBundle = Bundle(for: type(of: self))
- let url = testBundle.url(forResource:filename, withExtension:"scpt")
- guard let testScriptUrl = url else {
- XCTFail("Failed Getting script URL")
- return nil
- }
-
- guard let testScript = NSAppleScript(contentsOf: testScriptUrl, error: &errorDict) else {
- print ("error is \(String(describing: errorDict))")
- XCTFail("Failed initializing NSAppleScript")
- return nil
- }
-
- let scriptResult = testScript.executeAndReturnError(&errorDict)
- if (errorDict != nil) {
- print ("error is \(String(describing: errorDict))")
- XCTFail("Failed executing script")
- return nil
- }
-
- let usrfDictionary = scriptResult.usrfDictionary()
- guard let testResult = usrfDictionary["test_result"] else {
- XCTFail("test script didn't return test result in usrf")
- return nil
- }
-
- if (testResult.booleanValue != true) {
- print("test_result was \(testResult)")
- print("script_result was \(String(describing: usrfDictionary["script_result"]))")
- }
-
- XCTAssert(testResult.booleanValue == true, "test_result should be true")
- return usrfDictionary["script_result"]
- }
-}
+//class AppleScriptXCTestCase: XCTestCase {
+//
+// override func setUp() {
+// super.setUp()
+// }
+//
+// override func tearDown() {
+// super.tearDown()
+// }
+//
+// /*
+// @function doIndividualScript
+// @param filename -- name of a .applescript (sans extension) in the test bundle's
+// Resources/TestScripts directory
+// @brief given a file, loads the script and runs it. Expects a result from running
+// the script of the form
+// {test_result:true, script_result:}
+// if the test_result is false or is missing, the test fails
+// @return the value of script_result, if any
+// */
+// func doIndividualScript(filename:String) -> NSAppleEventDescriptor? {
+// var errorDict: NSDictionary? = nil
+// let testBundle = Bundle(for: type(of: self))
+// let url = testBundle.url(forResource:filename, withExtension:"scpt")
+// guard let testScriptUrl = url else {
+// XCTFail("Failed Getting script URL")
+// return nil
+// }
+//
+// guard let testScript = NSAppleScript(contentsOf: testScriptUrl, error: &errorDict) else {
+// print ("error is \(String(describing: errorDict))")
+// XCTFail("Failed initializing NSAppleScript")
+// return nil
+// }
+//
+// let scriptResult = testScript.executeAndReturnError(&errorDict)
+// if (errorDict != nil) {
+// print ("error is \(String(describing: errorDict))")
+// XCTFail("Failed executing script")
+// return nil
+// }
+//
+// let usrfDictionary = scriptResult.usrfDictionary()
+// guard let testResult = usrfDictionary["test_result"] else {
+// XCTFail("test script didn't return test result in usrf")
+// return nil
+// }
+//
+// if (testResult.booleanValue != true) {
+// print("test_result was \(testResult)")
+// print("script_result was \(String(describing: usrfDictionary["script_result"]))")
+// }
+//
+// XCTAssert(testResult.booleanValue == true, "test_result should be true")
+// return usrfDictionary["script_result"]
+// }
+//}
diff --git a/Tests/NetNewsWireTests/ScriptingTests/ScriptingTests.swift b/Tests/NetNewsWireTests/ScriptingTests/ScriptingTests.swift
index 6dbb0e2ba..3d0ddf275 100644
--- a/Tests/NetNewsWireTests/ScriptingTests/ScriptingTests.swift
+++ b/Tests/NetNewsWireTests/ScriptingTests/ScriptingTests.swift
@@ -8,94 +8,94 @@
import XCTest
-class ScriptingTests: AppleScriptXCTestCase {
-
- override func setUp() {
- super.setUp()
- }
-
- override func tearDown() {
- super.tearDown()
- }
-
-
- /*
- @function testGenericScript
- @brief An example of how a script can be run as part of an XCTest
- the applescript returns
- {test_result:true, script_result:"Geoducks!"}
- doIndividualScript() verifies the test_result portion
- this code verifies the script_result portion
- */
- func testGenericScript() {
- let scriptResult = doIndividualScript(filename: "testGenericScript")
- XCTAssert( scriptResult?.stringValue == "Geoducks!")
- }
-
- func testGetUrlScript() {
- _ = doIndividualScript(filename: "testGetURL")
- }
-
- func testNameAndUrlOfEveryFeedScript() {
- _ = doIndividualScript(filename: "testNameAndUrlOfEveryFeed")
- }
-
- func testNameOfEveryFolderScript() {
- _ = doIndividualScript(filename: "testNameOfEveryFolder")
- }
-
- func testNameOfAuthorsScript() {
- _ = doIndividualScript(filename: "testNameOfAuthors")
- }
-
- func testFeedExists() {
- _ = doIndividualScript(filename: "testFeedExists")
- }
-
- func testFeedOPML() {
- _ = doIndividualScript(filename: "testFeedOPML")
- }
-
-// func testTitleOfArticlesWhoseScript() {
-// _ = doIndividualScript(filename: "testTitleOfArticlesWhose")
+//class ScriptingTests: AppleScriptXCTestCase {
+//
+// override func setUp() {
+// super.setUp()
+// }
+//
+// override func tearDown() {
+// super.tearDown()
// }
//
-// func testIterativeCreateAndDeleteScript() {
-// _ = doIndividualScriptWithExpectation(filename: "testIterativeCreateAndDeleteFeed")
+//
+// /*
+// @function testGenericScript
+// @brief An example of how a script can be run as part of an XCTest
+// the applescript returns
+// {test_result:true, script_result:"Geoducks!"}
+// doIndividualScript() verifies the test_result portion
+// this code verifies the script_result portion
+// */
+// func testGenericScript() {
+// let scriptResult = doIndividualScript(filename: "testGenericScript")
+// XCTAssert( scriptResult?.stringValue == "Geoducks!")
// }
-
- func doIndividualScriptWithExpectation(filename:String) {
- let queue = DispatchQueue(label:"testQueue")
- let scriptExpectation = self.expectation(description: filename+"expectation")
- queue.async {
- _ = self.doIndividualScript(filename:filename)
- scriptExpectation.fulfill()
- }
- self.wait(for:[scriptExpectation], timeout:60)
- }
-
-/*
- @function testCurrentArticleScripts
- @brief the pieces of the test are broken up into smaller pieces because of the
- way events are delivered to the app -- I tried one single script with all the
- actions and the keystrokes aren't delivered to the app right away, so the ui
- isn't updated in time for 'current article' to be set. But, breaking them up
- in this way seems to work.
-
- July 30, 2019: There's an issue where in order for a script to send keystrokes,
- The app has to be allowed to interact with the SystemEvents.app in
- System Preferences -> Security & Privacy -> Privacy -> Accessibility
- and this permission needs to be renewed every time the app is recompiled unless
- the app is codesigned. Until we figure out how to get around this limitation,
- this test is disabled.
-*/
- func disabledTestCurrentArticleScripts() {
-
- doIndividualScriptWithExpectation(filename: "uiScriptingTestSetup")
- doIndividualScriptWithExpectation(filename: "establishMainWindowStartingState")
- doIndividualScriptWithExpectation(filename: "selectAFeed")
- doIndividualScriptWithExpectation(filename: "testCurrentArticleIsNil")
- doIndividualScriptWithExpectation(filename: "selectAnArticle")
- doIndividualScriptWithExpectation(filename: "testURLsOfCurrentArticle")
- }
-}
+//
+// func testGetUrlScript() {
+// _ = doIndividualScript(filename: "testGetURL")
+// }
+//
+// func testNameAndUrlOfEveryFeedScript() {
+// _ = doIndividualScript(filename: "testNameAndUrlOfEveryFeed")
+// }
+//
+// func testNameOfEveryFolderScript() {
+// _ = doIndividualScript(filename: "testNameOfEveryFolder")
+// }
+//
+// func testNameOfAuthorsScript() {
+// _ = doIndividualScript(filename: "testNameOfAuthors")
+// }
+//
+// func testFeedExists() {
+// _ = doIndividualScript(filename: "testFeedExists")
+// }
+//
+// func testFeedOPML() {
+// _ = doIndividualScript(filename: "testFeedOPML")
+// }
+//
+//// func testTitleOfArticlesWhoseScript() {
+//// _ = doIndividualScript(filename: "testTitleOfArticlesWhose")
+//// }
+////
+//// func testIterativeCreateAndDeleteScript() {
+//// _ = doIndividualScriptWithExpectation(filename: "testIterativeCreateAndDeleteFeed")
+//// }
+//
+// func doIndividualScriptWithExpectation(filename:String) {
+// let queue = DispatchQueue(label:"testQueue")
+// let scriptExpectation = self.expectation(description: filename+"expectation")
+// queue.async {
+// _ = self.doIndividualScript(filename:filename)
+// scriptExpectation.fulfill()
+// }
+// self.wait(for:[scriptExpectation], timeout:60)
+// }
+//
+///*
+// @function testCurrentArticleScripts
+// @brief the pieces of the test are broken up into smaller pieces because of the
+// way events are delivered to the app -- I tried one single script with all the
+// actions and the keystrokes aren't delivered to the app right away, so the ui
+// isn't updated in time for 'current article' to be set. But, breaking them up
+// in this way seems to work.
+//
+// July 30, 2019: There's an issue where in order for a script to send keystrokes,
+// The app has to be allowed to interact with the SystemEvents.app in
+// System Preferences -> Security & Privacy -> Privacy -> Accessibility
+// and this permission needs to be renewed every time the app is recompiled unless
+// the app is codesigned. Until we figure out how to get around this limitation,
+// this test is disabled.
+//*/
+// func disabledTestCurrentArticleScripts() {
+//
+// doIndividualScriptWithExpectation(filename: "uiScriptingTestSetup")
+// doIndividualScriptWithExpectation(filename: "establishMainWindowStartingState")
+// doIndividualScriptWithExpectation(filename: "selectAFeed")
+// doIndividualScriptWithExpectation(filename: "testCurrentArticleIsNil")
+// doIndividualScriptWithExpectation(filename: "selectAnArticle")
+// doIndividualScriptWithExpectation(filename: "testURLsOfCurrentArticle")
+// }
+//}
diff --git a/Tests/NetNewsWireTests/ScriptingTests/scripts/testFeedExists.applescript b/Tests/NetNewsWireTests/ScriptingTests/scripts/testFeedExists.applescript
index 098c1ff61..5430bdcb1 100644
--- a/Tests/NetNewsWireTests/ScriptingTests/scripts/testFeedExists.applescript
+++ b/Tests/NetNewsWireTests/ScriptingTests/scripts/testFeedExists.applescript
@@ -1,10 +1,10 @@
-- this script just tests that no error was generated from the script
-try
- tell application "NetNewsWire"
- exists feed 1 of account 1
- end tell
-on error message
- return {test_result:false, script_result:message}
-end try
-
-return {test_result:true}
+--try
+-- tell application "NetNewsWire"
+-- exists feed 1 of account 1
+-- end tell
+--on error message
+-- return {test_result:false, script_result:message}
+--end try
+--
+--return {test_result:true}
diff --git a/Tests/NetNewsWireTests/ScriptingTests/scripts/testFeedOPML.applescript b/Tests/NetNewsWireTests/ScriptingTests/scripts/testFeedOPML.applescript
index 5d28a8604..7b1dd9794 100644
--- a/Tests/NetNewsWireTests/ScriptingTests/scripts/testFeedOPML.applescript
+++ b/Tests/NetNewsWireTests/ScriptingTests/scripts/testFeedOPML.applescript
@@ -1,10 +1,10 @@
-- this script just tests that no error was generated from the script
-try
- tell application "NetNewsWire"
- opml representation of feed 1 of account 1
- end tell
-on error message
- return {test_result:false, script_result:message}
-end try
-
-return {test_result:true}
+--try
+-- tell application "NetNewsWire"
+-- opml representation of feed 1 of account 1
+-- end tell
+--on error message
+-- return {test_result:false, script_result:message}
+--end try
+--
+--return {test_result:true}
diff --git a/Tests/NetNewsWireTests/ScriptingTests/scripts/testNameAndUrlOfEveryFeed.applescript b/Tests/NetNewsWireTests/ScriptingTests/scripts/testNameAndUrlOfEveryFeed.applescript
index 86268914b..27b18ba40 100644
--- a/Tests/NetNewsWireTests/ScriptingTests/scripts/testNameAndUrlOfEveryFeed.applescript
+++ b/Tests/NetNewsWireTests/ScriptingTests/scripts/testNameAndUrlOfEveryFeed.applescript
@@ -1,10 +1,10 @@
-- this script just tests that no error was generated from the script
-try
- tell application "NetNewsWire"
- {name, url} of every feed of every account
- end tell
-on error message
- return {test_result:false, script_result:message}
-end try
-
-return {test_result:true}
+--try
+-- tell application "NetNewsWire"
+-- {name, url} of every feed of every account
+-- end tell
+--on error message
+-- return {test_result:false, script_result:message}
+--end try
+--
+--return {test_result:true}
diff --git a/Tests/NetNewsWireTests/ScriptingTests/scripts/testNameOfAuthors.applescript b/Tests/NetNewsWireTests/ScriptingTests/scripts/testNameOfAuthors.applescript
index db15bab30..716c0de67 100644
--- a/Tests/NetNewsWireTests/ScriptingTests/scripts/testNameOfAuthors.applescript
+++ b/Tests/NetNewsWireTests/ScriptingTests/scripts/testNameOfAuthors.applescript
@@ -1,12 +1,12 @@
-- this script just tests that no error was generated from the script
-- and that the returned list is greater than 0
-try
- tell application "NetNewsWire"
- set namesResult to name of every author of every feed of every account
- end tell
- set test_result to ((count items of namesResult) > 0)
-on error message
- return {test_result:false, script_result:message}
-end try
-
-return {test_result:test_result}
+--try
+-- tell application "NetNewsWire"
+-- set namesResult to name of every author of every feed of every account
+-- end tell
+-- set test_result to ((count items of namesResult) > 0)
+--on error message
+-- return {test_result:false, script_result:message}
+--end try
+--
+--return {test_result:test_result}
diff --git a/Tests/NetNewsWireTests/ScriptingTests/scripts/testTitleOfArticlesWhose.applescript b/Tests/NetNewsWireTests/ScriptingTests/scripts/testTitleOfArticlesWhose.applescript
index 256e20c08..0b80a4e31 100644
--- a/Tests/NetNewsWireTests/ScriptingTests/scripts/testTitleOfArticlesWhose.applescript
+++ b/Tests/NetNewsWireTests/ScriptingTests/scripts/testTitleOfArticlesWhose.applescript
@@ -1,10 +1,10 @@
-- this script just tests that no error was generated from the script
-try
- tell application "NetNewsWire"
- title of every article of feed "Six Colors" where read is true
- end tell
-on error message
- return {test_result:false, script_result:message}
-end try
-
-return {test_result:true}
+--try
+-- tell application "NetNewsWire"
+-- title of every article of feed "Six Colors" where read is true
+-- end tell
+--on error message
+-- return {test_result:false, script_result:message}
+--end try
+--
+--return {test_result:true}
diff --git a/Tests/NetNewsWireTests/SharingTests.swift b/Tests/NetNewsWireTests/SharingTests.swift
index bdd12e5fa..070fc4db3 100644
--- a/Tests/NetNewsWireTests/SharingTests.swift
+++ b/Tests/NetNewsWireTests/SharingTests.swift
@@ -11,9 +11,9 @@ import XCTest
@testable import NetNewsWire
-class SharingTests: XCTestCase {
+final class SharingTests: XCTestCase {
- func testSharingSubject() {
+ @MainActor func testSharingSubject() {
let sharingServiceDelegate = SharingServiceDelegate(nil)
let sharingService = NSSharingService(title: "Chirpy", image: NSImage(size: NSSize.zero), alternateImage: nil, handler: {})
@@ -25,7 +25,7 @@ class SharingTests: XCTestCase {
XCTAssertEqual("Immunization", sharingService.subject)
}
- func testSharingSubjectMultipleArticles() {
+ @MainActor func testSharingSubjectMultipleArticles() {
let sharingServiceDelegate = SharingServiceDelegate(nil)
let sharingService = NSSharingService(title: "Chirpy", image: NSImage(size: NSSize.zero), alternateImage: nil, handler: {})
@@ -38,7 +38,7 @@ class SharingTests: XCTestCase {
XCTAssertEqual("NetNewsWire Status: Almost Beta, No Algorithms Follow-Up", sharingService.subject)
}
- private func article(titled title: String) -> Article {
+ @MainActor private func article(titled title: String) -> Article {
let articleID = randomID()
return Article(accountID: randomID(),
articleID: articleID,
@@ -58,8 +58,7 @@ class SharingTests: XCTestCase {
)
}
- private func randomID() -> String {
+ @MainActor private func randomID() -> String {
return UUID().uuidString
}
-
}