From 76f37b0bb694fcd26df175bd65c53d0d5cf3708d Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Thu, 9 Apr 2020 20:41:37 +0100 Subject: [PATCH 1/4] Cleanup tests, support OpenCombine --- .swift-version | 1 - Sources/XMLCoder/Decoder/XMLDecoder.swift | 4 +++ Tests/XMLCoderTests/BenchmarkTests.swift | 2 +- Tests/XMLCoderTests/ClassTests.swift | 2 +- Tests/XMLCoderTests/CombineTests.swift | 9 +++++-- .../XMLCoderTests/CompositeChoiceTests.swift | 2 +- .../DecodingContainerTests.swift | 2 +- Tests/XMLCoderTests/EmptyArrayTest.swift | 2 +- .../EmptyElementEmptyStringTests.swift | 2 +- .../MixedChoiceAndNonChoiceTests.swift | 2 +- Tests/XMLCoderTests/NamespaceTest.swift | 2 +- .../NestedAttributeChoiceTests.swift | 2 +- .../XMLCoderTests/NestedChoiceArrayTest.swift | 2 +- Tests/XMLCoderTests/NestedChoiceTests.swift | 2 +- Tests/XMLCoderTests/RJITest.swift | 2 +- .../RootLevelAttributeTest.swift | 2 +- Tests/XMLCoderTests/SimpleChoiceTests.swift | 2 +- Tests/XMLCoderTests/XCTestManifests.swift | 26 ++++++++++++++++--- 18 files changed, 48 insertions(+), 20 deletions(-) delete mode 100644 .swift-version diff --git a/.swift-version b/.swift-version deleted file mode 100644 index bf77d549..00000000 --- a/.swift-version +++ /dev/null @@ -1 +0,0 @@ -4.2 diff --git a/Sources/XMLCoder/Decoder/XMLDecoder.swift b/Sources/XMLCoder/Decoder/XMLDecoder.swift index 6aeede62..e836ab6f 100644 --- a/Sources/XMLCoder/Decoder/XMLDecoder.swift +++ b/Sources/XMLCoder/Decoder/XMLDecoder.swift @@ -374,6 +374,10 @@ open class XMLDecoder { #if canImport(Combine) import protocol Combine.TopLevelDecoder +#elseif canImport(OpenCombine) +import protocol OpenCombine.TopLevelDecoder +#endif +#if canImport(Combine) || canImport(OpenCombine) extension XMLDecoder: TopLevelDecoder {} #endif diff --git a/Tests/XMLCoderTests/BenchmarkTests.swift b/Tests/XMLCoderTests/BenchmarkTests.swift index fb72a3c6..11099500 100644 --- a/Tests/XMLCoderTests/BenchmarkTests.swift +++ b/Tests/XMLCoderTests/BenchmarkTests.swift @@ -1,7 +1,7 @@ import XCTest @testable import XMLCoder -class BenchmarkTests: XCTestCase { +final class BenchmarkTests: XCTestCase { struct Container: Codable { let unkeyed: [T] let keyed: [String: T] diff --git a/Tests/XMLCoderTests/ClassTests.swift b/Tests/XMLCoderTests/ClassTests.swift index 23d23a0b..a2c13e58 100644 --- a/Tests/XMLCoderTests/ClassTests.swift +++ b/Tests/XMLCoderTests/ClassTests.swift @@ -90,7 +90,7 @@ private let xmlData = """ """.data(using: .utf8)! -class ClassTests: XCTestCase { +final class ClassTests: XCTestCase { func testEmpty() throws { let decoder = XMLDecoder() let encoder = XMLEncoder() diff --git a/Tests/XMLCoderTests/CombineTests.swift b/Tests/XMLCoderTests/CombineTests.swift index cdc0d7ea..0836663b 100644 --- a/Tests/XMLCoderTests/CombineTests.swift +++ b/Tests/XMLCoderTests/CombineTests.swift @@ -5,8 +5,13 @@ // Created by Adam Sharp on 9/29/19. // -#if canImport(Combine) && !os(macOS) +#if canImport(Combine) import Combine +#elseif canImport(OpenCombine) +import OpenCombine +#endif + +#if canImport(Combine) || canImport(OpenCombine) import Foundation import XCTest import XMLCoder @@ -23,7 +28,7 @@ private struct Foo: Decodable { } @available(iOS 13.0, macOS 10.15.0, tvOS 13.0, watchOS 6.0, *) -class CombineTests: XCTestCase { +final class CombineTests: XCTestCase { func testDecodeFromXMLDecoder() { let data = Just(xml) var foo: Foo? diff --git a/Tests/XMLCoderTests/CompositeChoiceTests.swift b/Tests/XMLCoderTests/CompositeChoiceTests.swift index 54db559c..71bad528 100644 --- a/Tests/XMLCoderTests/CompositeChoiceTests.swift +++ b/Tests/XMLCoderTests/CompositeChoiceTests.swift @@ -47,7 +47,7 @@ extension IntOrStringWrapper: Codable { } } -class EnumAssociatedValueTestComposite: XCTestCase { +final class EnumAssociatedValueTestComposite: XCTestCase { var encoder: XMLEncoder { let encoder = XMLEncoder() encoder.outputFormatting = [.prettyPrinted] diff --git a/Tests/XMLCoderTests/DecodingContainerTests.swift b/Tests/XMLCoderTests/DecodingContainerTests.swift index 37412d23..8040a52f 100644 --- a/Tests/XMLCoderTests/DecodingContainerTests.swift +++ b/Tests/XMLCoderTests/DecodingContainerTests.swift @@ -85,7 +85,7 @@ private struct Foo: Codable { } } -class DecodingContainerTests: XCTestCase { +final class DecodingContainerTests: XCTestCase { func testExample() throws { let foo = Foo( foo: [ diff --git a/Tests/XMLCoderTests/EmptyArrayTest.swift b/Tests/XMLCoderTests/EmptyArrayTest.swift index 8c80d680..0fdac473 100644 --- a/Tests/XMLCoderTests/EmptyArrayTest.swift +++ b/Tests/XMLCoderTests/EmptyArrayTest.swift @@ -45,7 +45,7 @@ private let xmlContainsEmpty = """ """ -class EmptyArrayTest: XCTestCase { +final class EmptyArrayTest: XCTestCase { func testEmptyArrayDecode() throws { let decoded = try XMLDecoder().decode([Empty].self, from: xml.data(using: .utf8)!) XCTAssertEqual(decoded, [Empty(), Empty(), Empty()]) diff --git a/Tests/XMLCoderTests/EmptyElementEmptyStringTests.swift b/Tests/XMLCoderTests/EmptyElementEmptyStringTests.swift index 26e71525..fddfc12c 100644 --- a/Tests/XMLCoderTests/EmptyElementEmptyStringTests.swift +++ b/Tests/XMLCoderTests/EmptyElementEmptyStringTests.swift @@ -8,7 +8,7 @@ import XCTest import XMLCoder -class EmptyElementEmptyStringTests: XCTestCase { +final class EmptyElementEmptyStringTests: XCTestCase { struct ExplicitNestingContainer: Equatable, Decodable { let things: ContainedArray diff --git a/Tests/XMLCoderTests/MixedChoiceAndNonChoiceTests.swift b/Tests/XMLCoderTests/MixedChoiceAndNonChoiceTests.swift index e2eca673..80184197 100644 --- a/Tests/XMLCoderTests/MixedChoiceAndNonChoiceTests.swift +++ b/Tests/XMLCoderTests/MixedChoiceAndNonChoiceTests.swift @@ -131,7 +131,7 @@ extension TwoChoiceElements: Codable { } } -class MixedChoiceAndNonChoiceTests: XCTestCase { +final class MixedChoiceAndNonChoiceTests: XCTestCase { func testMixedChoiceFirstEncode() throws { let first = MixedIntOrStringFirst(intOrString: .int(4), otherValue: "other") let firstEncoded = try XMLEncoder().encode(first, withRootKey: "container") diff --git a/Tests/XMLCoderTests/NamespaceTest.swift b/Tests/XMLCoderTests/NamespaceTest.swift index eb3ee9af..973a9bbd 100644 --- a/Tests/XMLCoderTests/NamespaceTest.swift +++ b/Tests/XMLCoderTests/NamespaceTest.swift @@ -251,7 +251,7 @@ private struct NamespacedRow: Codable { } } -class NameSpaceTest: XCTestCase { +final class NamespaceTest: XCTestCase { func testTable() throws { let decoder = XMLDecoder() decoder.shouldProcessNamespaces = true diff --git a/Tests/XMLCoderTests/NestedAttributeChoiceTests.swift b/Tests/XMLCoderTests/NestedAttributeChoiceTests.swift index 42879488..ef0e2340 100644 --- a/Tests/XMLCoderTests/NestedAttributeChoiceTests.swift +++ b/Tests/XMLCoderTests/NestedAttributeChoiceTests.swift @@ -96,7 +96,7 @@ extension Entry: Codable { } } -class NestedAttributeChoiceTests: XCTestCase { +final class NestedAttributeChoiceTests: XCTestCase { private var encoder: XMLEncoder { let encoder = XMLEncoder() encoder.outputFormatting = [.prettyPrinted] diff --git a/Tests/XMLCoderTests/NestedChoiceArrayTest.swift b/Tests/XMLCoderTests/NestedChoiceArrayTest.swift index 9ba53191..61efb2e0 100644 --- a/Tests/XMLCoderTests/NestedChoiceArrayTest.swift +++ b/Tests/XMLCoderTests/NestedChoiceArrayTest.swift @@ -70,7 +70,7 @@ extension Book: Equatable {} extension Chapter: Equatable {} extension Chapter.Content: Equatable {} -class NestedChoiceArrayTest: XCTestCase { +final class NestedChoiceArrayTest: XCTestCase { func testDecodingNestedChoiceArray() throws { let xml = """ diff --git a/Tests/XMLCoderTests/NestedChoiceTests.swift b/Tests/XMLCoderTests/NestedChoiceTests.swift index 44344c49..261abdc4 100644 --- a/Tests/XMLCoderTests/NestedChoiceTests.swift +++ b/Tests/XMLCoderTests/NestedChoiceTests.swift @@ -83,7 +83,7 @@ extension Entry: Codable { } } -class NestedChoiceTests: XCTestCase { +final class NestedChoiceTests: XCTestCase { func testBreakDecoding() throws { let xml = "

" let result = try XMLDecoder().decode(Break.self, from: xml.data(using: .utf8)!) diff --git a/Tests/XMLCoderTests/RJITest.swift b/Tests/XMLCoderTests/RJITest.swift index f86d317d..c4446e98 100644 --- a/Tests/XMLCoderTests/RJITest.swift +++ b/Tests/XMLCoderTests/RJITest.swift @@ -140,7 +140,7 @@ private struct Enclosure: Codable, Equatable { let type: String } -class RJITest: XCTestCase { +final class RJITest: XCTestCase { func testRSS() throws { let decoder = XMLDecoder() // let encoder = XMLEncoder() diff --git a/Tests/XMLCoderTests/RootLevelAttributeTest.swift b/Tests/XMLCoderTests/RootLevelAttributeTest.swift index 89f03aee..ceadd0b8 100644 --- a/Tests/XMLCoderTests/RootLevelAttributeTest.swift +++ b/Tests/XMLCoderTests/RootLevelAttributeTest.swift @@ -32,7 +32,7 @@ let expected = """ """ -class RootLevelAttributeTest: XCTestCase { +final class RootLevelAttributeTest: XCTestCase { func testPolicyEncodingAtRoot() throws { let encoder = XMLEncoder() encoder.outputFormatting = [.prettyPrinted] diff --git a/Tests/XMLCoderTests/SimpleChoiceTests.swift b/Tests/XMLCoderTests/SimpleChoiceTests.swift index 86834caa..e96fe067 100644 --- a/Tests/XMLCoderTests/SimpleChoiceTests.swift +++ b/Tests/XMLCoderTests/SimpleChoiceTests.swift @@ -8,7 +8,7 @@ import XCTest import XMLCoder -class SimpleChoiceTests: XCTestCase { +final class SimpleChoiceTests: XCTestCase { func testIntOrStringIntDecoding() throws { let xml = """ diff --git a/Tests/XMLCoderTests/XCTestManifests.swift b/Tests/XMLCoderTests/XCTestManifests.swift index e9f97926..91e7031c 100644 --- a/Tests/XMLCoderTests/XCTestManifests.swift +++ b/Tests/XMLCoderTests/XCTestManifests.swift @@ -138,6 +138,15 @@ extension ClassTests { ] } +extension CombineTests { + // DO NOT MODIFY: This is autogenerated, use: + // `swift test --generate-linuxmain` + // to regenerate. + static let __allTests__CombineTests = [ + ("testDecodeFromXMLDecoder", testDecodeFromXMLDecoder), + ] +} + extension DataBoxTests { // DO NOT MODIFY: This is autogenerated, use: // `swift test --generate-linuxmain` @@ -439,11 +448,20 @@ extension MixedContainerTest { ] } -extension NameSpaceTest { +extension MixedContentTests { + // DO NOT MODIFY: This is autogenerated, use: + // `swift test --generate-linuxmain` + // to regenerate. + static let __allTests__MixedContentTests = [ + ("testMixed", testMixed), + ] +} + +extension NamespaceTest { // DO NOT MODIFY: This is autogenerated, use: // `swift test --generate-linuxmain` // to regenerate. - static let __allTests__NameSpaceTest = [ + static let __allTests__NamespaceTest = [ ("testTable", testTable), ("testTableWithoutNamespaces", testTableWithoutNamespaces), ("testWorksheet", testWorksheet), @@ -834,6 +852,7 @@ public func __allTests() -> [XCTestCaseEntry] { testCase(BreakfastTest.__allTests__BreakfastTest), testCase(CDTest.__allTests__CDTest), testCase(ClassTests.__allTests__ClassTests), + testCase(CombineTests.__allTests__CombineTests), testCase(DataBoxTests.__allTests__DataBoxTests), testCase(DataTests.__allTests__DataTests), testCase(DateBoxTests.__allTests__DateBoxTests), @@ -858,7 +877,8 @@ public func __allTests() -> [XCTestCaseEntry] { testCase(KeyedTests.__allTests__KeyedTests), testCase(MixedChoiceAndNonChoiceTests.__allTests__MixedChoiceAndNonChoiceTests), testCase(MixedContainerTest.__allTests__MixedContainerTest), - testCase(NameSpaceTest.__allTests__NameSpaceTest), + testCase(MixedContentTests.__allTests__MixedContentTests), + testCase(NamespaceTest.__allTests__NamespaceTest), testCase(NestedAttributeChoiceTests.__allTests__NestedAttributeChoiceTests), testCase(NestedChoiceArrayTest.__allTests__NestedChoiceArrayTest), testCase(NestedChoiceTests.__allTests__NestedChoiceTests), From 8342aa7a85d24648c26b0d64567c5f4b1d256bb0 Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Thu, 9 Apr 2020 20:54:15 +0100 Subject: [PATCH 2/4] Fix tests on Linux --- Tests/XMLCoderTests/CombineTests.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Tests/XMLCoderTests/CombineTests.swift b/Tests/XMLCoderTests/CombineTests.swift index 0836663b..3109cb3f 100644 --- a/Tests/XMLCoderTests/CombineTests.swift +++ b/Tests/XMLCoderTests/CombineTests.swift @@ -11,7 +11,9 @@ import Combine import OpenCombine #endif -#if canImport(Combine) || canImport(OpenCombine) +// Linux test manifests can only be generated on macOS (╯°□°)╯︵ ┻━┻ +// and this test shouldn't be included +#if canImport(Combine) || canImport(OpenCombine) && !os(macOS) import Foundation import XCTest import XMLCoder From ea9fe4e69141f1069d08b33ecf92a4b980127182 Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Thu, 9 Apr 2020 21:05:00 +0100 Subject: [PATCH 3/4] Remove CombineTests from XCTestManifests --- Tests/XMLCoderTests/CombineTests.swift | 4 +--- Tests/XMLCoderTests/XCTestManifests.swift | 10 ---------- 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/Tests/XMLCoderTests/CombineTests.swift b/Tests/XMLCoderTests/CombineTests.swift index 3109cb3f..0836663b 100644 --- a/Tests/XMLCoderTests/CombineTests.swift +++ b/Tests/XMLCoderTests/CombineTests.swift @@ -11,9 +11,7 @@ import Combine import OpenCombine #endif -// Linux test manifests can only be generated on macOS (╯°□°)╯︵ ┻━┻ -// and this test shouldn't be included -#if canImport(Combine) || canImport(OpenCombine) && !os(macOS) +#if canImport(Combine) || canImport(OpenCombine) import Foundation import XCTest import XMLCoder diff --git a/Tests/XMLCoderTests/XCTestManifests.swift b/Tests/XMLCoderTests/XCTestManifests.swift index 91e7031c..61c0bf4f 100644 --- a/Tests/XMLCoderTests/XCTestManifests.swift +++ b/Tests/XMLCoderTests/XCTestManifests.swift @@ -138,15 +138,6 @@ extension ClassTests { ] } -extension CombineTests { - // DO NOT MODIFY: This is autogenerated, use: - // `swift test --generate-linuxmain` - // to regenerate. - static let __allTests__CombineTests = [ - ("testDecodeFromXMLDecoder", testDecodeFromXMLDecoder), - ] -} - extension DataBoxTests { // DO NOT MODIFY: This is autogenerated, use: // `swift test --generate-linuxmain` @@ -852,7 +843,6 @@ public func __allTests() -> [XCTestCaseEntry] { testCase(BreakfastTest.__allTests__BreakfastTest), testCase(CDTest.__allTests__CDTest), testCase(ClassTests.__allTests__ClassTests), - testCase(CombineTests.__allTests__CombineTests), testCase(DataBoxTests.__allTests__DataBoxTests), testCase(DataTests.__allTests__DataTests), testCase(DateBoxTests.__allTests__DateBoxTests), From 9199a69136e14be6ebfcf0708eef5f0ae6681655 Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Thu, 9 Apr 2020 21:08:54 +0100 Subject: [PATCH 4/4] Remove CombineTests --- Tests/XMLCoderTests/XCTestManifests.swift | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Tests/XMLCoderTests/XCTestManifests.swift b/Tests/XMLCoderTests/XCTestManifests.swift index 61c0bf4f..9435af59 100644 --- a/Tests/XMLCoderTests/XCTestManifests.swift +++ b/Tests/XMLCoderTests/XCTestManifests.swift @@ -120,6 +120,15 @@ extension BreakfastTest { ] } +extension CDATATest { + // DO NOT MODIFY: This is autogenerated, use: + // `swift test --generate-linuxmain` + // to regenerate. + static let __allTests__CDATATest = [ + ("testXML", testXML), + ] +} + extension CDTest { // DO NOT MODIFY: This is autogenerated, use: // `swift test --generate-linuxmain` @@ -841,6 +850,7 @@ public func __allTests() -> [XCTestCaseEntry] { testCase(BorderTest.__allTests__BorderTest), testCase(BoxTreeTests.__allTests__BoxTreeTests), testCase(BreakfastTest.__allTests__BreakfastTest), + testCase(CDATATest.__allTests__CDATATest), testCase(CDTest.__allTests__CDTest), testCase(ClassTests.__allTests__ClassTests), testCase(DataBoxTests.__allTests__DataBoxTests),