1
0
mirror of https://github.com/nicoverbruggen/phpmon.git synced 2026-03-28 23:00:07 +01:00

♻️ Refactor tests to Swift Testing

This commit is contained in:
2025-10-16 15:57:41 +02:00
parent 378a8a5547
commit fa403b5a99
24 changed files with 191 additions and 203 deletions

View File

@@ -1339,6 +1339,18 @@
path = "PHP Versions"; path = "PHP Versions";
sourceTree = "<group>"; sourceTree = "<group>";
}; };
036575C62EA12E2200BA41BF /* Versions */ = {
isa = PBXGroup;
children = (
C4FBFC512616485F00CDB8E1 /* PhpVersionDetectionTest.swift */,
C48D6C73279CD3E400F26D7E /* PhpVersionNumberTest.swift */,
C4B56360276AB0A500F12CCB /* VersionExtractorTest.swift */,
C4AF9F7C275454A900D44ED0 /* ValetVersionExtractorTest.swift */,
C40FE739282ABB2E00A302C2 /* AppVersionTest.swift */,
);
path = Versions;
sourceTree = "<group>";
};
036C38FB2E5C8827008DAEDF /* Packagist */ = { 036C38FB2E5C8827008DAEDF /* Packagist */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
@@ -1358,18 +1370,6 @@
path = Integration; path = Integration;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
036C3A222E5CBC33008DAEDF /* SwiftTestMigrated */ = {
isa = PBXGroup;
children = (
039C291E2E8AA39B007F5FAB /* Api */,
C4C1019927C65A4D001FACC2 /* Commands */,
036C39062E5C8890008DAEDF /* Integration */,
036C3A232E5CBC57008DAEDF /* Parsers */,
03D53E902E8AE089001B1671 /* Testables */,
);
path = SwiftTestMigrated;
sourceTree = "<group>";
};
036C3A232E5CBC57008DAEDF /* Parsers */ = { 036C3A232E5CBC57008DAEDF /* Parsers */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
@@ -2202,18 +2202,6 @@
path = Nginx; path = Nginx;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
C4C1019827C65A1A001FACC2 /* Versions */ = {
isa = PBXGroup;
children = (
C4FBFC512616485F00CDB8E1 /* PhpVersionDetectionTest.swift */,
C48D6C73279CD3E400F26D7E /* PhpVersionNumberTest.swift */,
C4B56360276AB0A500F12CCB /* VersionExtractorTest.swift */,
C4AF9F7C275454A900D44ED0 /* ValetVersionExtractorTest.swift */,
C40FE739282ABB2E00A302C2 /* AppVersionTest.swift */,
);
path = Versions;
sourceTree = "<group>";
};
C4C1019927C65A4D001FACC2 /* Commands */ = { C4C1019927C65A4D001FACC2 /* Commands */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
@@ -2341,8 +2329,12 @@
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
C40C7F1C27720E1400DDDCDC /* Test Files */, C40C7F1C27720E1400DDDCDC /* Test Files */,
036C3A222E5CBC33008DAEDF /* SwiftTestMigrated */, 039C291E2E8AA39B007F5FAB /* Api */,
C4C1019827C65A1A001FACC2 /* Versions */, C4C1019927C65A4D001FACC2 /* Commands */,
036C39062E5C8890008DAEDF /* Integration */,
036C3A232E5CBC57008DAEDF /* Parsers */,
03D53E902E8AE089001B1671 /* Testables */,
036575C62EA12E2200BA41BF /* Versions */,
); );
path = unit; path = unit;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -3928,7 +3920,7 @@
DEAD_CODE_STRIPPING = YES; DEAD_CODE_STRIPPING = YES;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = ""; INFOPLIST_FILE = "";
MACOSX_DEPLOYMENT_TARGET = 14.6; MACOSX_DEPLOYMENT_TARGET = 13.5;
MARKETING_VERSION = 1.0; MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon.feature-tests"; PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon.feature-tests";
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
@@ -3946,7 +3938,7 @@
DEAD_CODE_STRIPPING = YES; DEAD_CODE_STRIPPING = YES;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = ""; INFOPLIST_FILE = "";
MACOSX_DEPLOYMENT_TARGET = 14.6; MACOSX_DEPLOYMENT_TARGET = 13.5;
MARKETING_VERSION = 1.0; MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon.feature-tests"; PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon.feature-tests";
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
@@ -3963,7 +3955,7 @@
CURRENT_PROJECT_VERSION = 1; CURRENT_PROJECT_VERSION = 1;
DEAD_CODE_STRIPPING = YES; DEAD_CODE_STRIPPING = YES;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
MACOSX_DEPLOYMENT_TARGET = 14.6; MACOSX_DEPLOYMENT_TARGET = 13.5;
MARKETING_VERSION = 1.0; MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon.ui-tests"; PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon.ui-tests";
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
@@ -3981,7 +3973,7 @@
CURRENT_PROJECT_VERSION = 1; CURRENT_PROJECT_VERSION = 1;
DEAD_CODE_STRIPPING = YES; DEAD_CODE_STRIPPING = YES;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
MACOSX_DEPLOYMENT_TARGET = 14.6; MACOSX_DEPLOYMENT_TARGET = 13.5;
MARKETING_VERSION = 1.0; MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon.ui-tests"; PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon.ui-tests";
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
@@ -4148,7 +4140,7 @@
"@executable_path/../Frameworks", "@executable_path/../Frameworks",
"@loader_path/../Frameworks", "@loader_path/../Frameworks",
); );
MACOSX_DEPLOYMENT_TARGET = 14.6; MACOSX_DEPLOYMENT_TARGET = 13.5;
PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon.unit-tests"; PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon.unit-tests";
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
@@ -4164,7 +4156,7 @@
DEAD_CODE_STRIPPING = YES; DEAD_CODE_STRIPPING = YES;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = ""; INFOPLIST_FILE = "";
MACOSX_DEPLOYMENT_TARGET = 14.6; MACOSX_DEPLOYMENT_TARGET = 13.5;
MARKETING_VERSION = 1.0; MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon.feature-tests"; PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon.feature-tests";
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
@@ -4181,7 +4173,7 @@
CURRENT_PROJECT_VERSION = 1; CURRENT_PROJECT_VERSION = 1;
DEAD_CODE_STRIPPING = YES; DEAD_CODE_STRIPPING = YES;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
MACOSX_DEPLOYMENT_TARGET = 14.6; MACOSX_DEPLOYMENT_TARGET = 13.5;
MARKETING_VERSION = 1.0; MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon.ui-tests"; PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon.ui-tests";
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
@@ -4341,7 +4333,7 @@
"@executable_path/../Frameworks", "@executable_path/../Frameworks",
"@loader_path/../Frameworks", "@loader_path/../Frameworks",
); );
MACOSX_DEPLOYMENT_TARGET = 14.6; MACOSX_DEPLOYMENT_TARGET = 13.5;
PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon.unit-tests"; PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon.unit-tests";
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
@@ -4357,7 +4349,7 @@
DEAD_CODE_STRIPPING = YES; DEAD_CODE_STRIPPING = YES;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = ""; INFOPLIST_FILE = "";
MACOSX_DEPLOYMENT_TARGET = 14.6; MACOSX_DEPLOYMENT_TARGET = 13.5;
MARKETING_VERSION = 1.0; MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon.feature-tests"; PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon.feature-tests";
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
@@ -4374,7 +4366,7 @@
CURRENT_PROJECT_VERSION = 1; CURRENT_PROJECT_VERSION = 1;
DEAD_CODE_STRIPPING = YES; DEAD_CODE_STRIPPING = YES;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
MACOSX_DEPLOYMENT_TARGET = 14.6; MACOSX_DEPLOYMENT_TARGET = 13.5;
MARKETING_VERSION = 1.0; MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon.ui-tests"; PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon.ui-tests";
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
@@ -4397,7 +4389,7 @@
"@executable_path/../Frameworks", "@executable_path/../Frameworks",
"@loader_path/../Frameworks", "@loader_path/../Frameworks",
); );
MACOSX_DEPLOYMENT_TARGET = 14.6; MACOSX_DEPLOYMENT_TARGET = 13.5;
PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon.unit-tests"; PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon.unit-tests";
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
@@ -4417,7 +4409,7 @@
"@executable_path/../Frameworks", "@executable_path/../Frameworks",
"@loader_path/../Frameworks", "@loader_path/../Frameworks",
); );
MACOSX_DEPLOYMENT_TARGET = 14.6; MACOSX_DEPLOYMENT_TARGET = 13.5;
PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon.unit-tests"; PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon.unit-tests";
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;

View File

@@ -6,70 +6,66 @@
// Copyright © 2023 Nico Verbruggen. All rights reserved. // Copyright © 2023 Nico Verbruggen. All rights reserved.
// //
import XCTest import Testing
import Foundation
class AppVersionTest: XCTestCase { struct AppVersionTest {
@Test func test_can_parse_normal_version_string() {
func test_can_retrieve_internal_app_version() {
XCTAssertNotNil(AppVersion.fromCurrentVersion())
}
func test_can_parse_normal_version_string() {
let version = AppVersion.from("1.0.0") let version = AppVersion.from("1.0.0")
XCTAssertNotNil(version) #expect(version != nil)
XCTAssertEqual("1.0.0", version?.version) #expect(version!.version == "1.0.0")
XCTAssertEqual(nil, version?.build) #expect(version!.build == nil)
XCTAssertEqual(nil, version?.suffix) #expect(version!.suffix == nil)
} }
func test_can_parse_cask_version_string() { @Test func test_can_parse_cask_version_string() {
let version = AppVersion.from("1.0.0_600") let version = AppVersion.from("1.0.0_600")
XCTAssertNotNil(version) #expect(version != nil)
XCTAssertEqual("1.0.0", version?.version) #expect(version!.version == "1.0.0")
XCTAssertEqual(600, version?.build) #expect(version!.build == 600)
XCTAssertEqual(nil, version?.suffix) #expect(version!.suffix == nil)
} }
func test_can_parse_dev_version_string_without_build_number() { @Test func test_can_parse_dev_version_string_without_build_number() {
let version = AppVersion.from("1.0.0-dev") let version = AppVersion.from("1.0.0-dev")
XCTAssertNotNil(version) #expect(version != nil)
XCTAssertEqual("1.0.0", version?.version) #expect(version!.version == "1.0.0")
XCTAssertEqual(nil, version?.build) #expect(version!.build == nil)
XCTAssertEqual("dev", version?.suffix) #expect(version!.suffix == "dev")
} }
func test_can_parse_dev_version_string_with_build_number() { @Test func test_can_parse_dev_version_string_with_build_number() {
let version = AppVersion.from("1.0.0-dev,870") let version = AppVersion.from("1.0.0-dev,870")
XCTAssertNotNil(version) #expect(version != nil)
XCTAssertEqual("1.0.0", version?.version) #expect(version!.version == "1.0.0")
XCTAssertEqual(870, version?.build) #expect(version!.build == 870)
XCTAssertEqual("dev", version?.suffix) #expect(version!.suffix == "dev")
} }
func test_can_parse_underscores_as_build_separator() { @Test func test_can_parse_underscores_as_build_separator() {
let version = AppVersion.from("1.0.0-dev_870") let version = AppVersion.from("1.0.0-dev_870")
XCTAssertNotNil(version) #expect(version != nil)
XCTAssertEqual("1.0.0", version?.version) #expect(version!.version == "1.0.0")
XCTAssertEqual(870, version?.build) #expect(version!.build == 870)
XCTAssertEqual("dev", version?.suffix) #expect(version!.suffix == "dev")
} }
func test_can_compare_version_numbers() { @Test func test_can_compare_version_numbers() {
// Build is newer // Build is newer
XCTAssertTrue(AppVersion.from("5.0_101")! > AppVersion.from("5.0_100")!) #expect(AppVersion.from("5.0_101")! > AppVersion.from("5.0_100")!)
// Version and build is the same // Version and build is the same
XCTAssertFalse(AppVersion.from("5.0.0_100")! > AppVersion.from("5.0_100")!) #expect(AppVersion.from("5.0.0_100")! == AppVersion.from("5.0_100")!)
// Version is newer // Version is newer
XCTAssertTrue(AppVersion.from("5.1_100")! > AppVersion.from("5.0_100")!) #expect(AppVersion.from("5.1_100")! > AppVersion.from("5.0_100")!)
// Build is older // Build is older
XCTAssertFalse(AppVersion.from("5.0_101")! > AppVersion.from("5.0_102")!) #expect(AppVersion.from("5.0_101")! < AppVersion.from("5.0_102")!)
} }
} }

View File

@@ -6,13 +6,14 @@
// Copyright © 2023 Nico Verbruggen. All rights reserved. // Copyright © 2023 Nico Verbruggen. All rights reserved.
// //
import XCTest import Testing
import Foundation
class PhpVersionDetectionTest: XCTestCase { struct PhpVersionDetectionTest {
func test_can_detect_valid_php_versions() async throws { @Test func test_can_detect_valid_php_versions() async throws {
let container = Container.real() let container = Container.real()
let outcome = await container.phpEnvs.extractPhpVersions( let versions = await container.phpEnvs.extractPhpVersions(
from: [ from: [
"", // empty lines should be omitted "", // empty lines should be omitted
"php@8.0", "php@8.0",
@@ -29,6 +30,6 @@ class PhpVersionDetectionTest: XCTestCase {
generateHelpers: false generateHelpers: false
) )
XCTAssertEqual(outcome, ["8.0", "7.0", "5.6"]) #expect(versions == ["8.0", "7.0", "5.6"])
} }
} }

View File

@@ -6,200 +6,200 @@
// Copyright © 2023 Nico Verbruggen. All rights reserved. // Copyright © 2023 Nico Verbruggen. All rights reserved.
// //
import XCTest import Testing
import Foundation
// swiftlint:disable type_body_length file_length // swiftlint:disable type_body_length file_length
class PhpVersionNumberTest: XCTestCase { struct PhpVersionNumberTest {
@Test func test_can_deconstruct_php_version() throws {
func test_can_deconstruct_php_version() throws { #expect(
XCTAssertEqual( try! VersionNumber.parse("PHP 8.2.0-dev") ==
try! VersionNumber.parse("PHP 8.2.0-dev"),
VersionNumber(major: 8, minor: 2, patch: 0) VersionNumber(major: 8, minor: 2, patch: 0)
) )
XCTAssertEqual( #expect(
try! VersionNumber.parse("PHP 8.1.0RC5-dev"), try! VersionNumber.parse("PHP 8.1.0RC5-dev") ==
VersionNumber(major: 8, minor: 1, patch: 0) VersionNumber(major: 8, minor: 1, patch: 0)
) )
XCTAssertEqual( #expect(
try! VersionNumber.parse("8.0.11"), try! VersionNumber.parse("8.0.11") ==
VersionNumber(major: 8, minor: 0, patch: 11) VersionNumber(major: 8, minor: 0, patch: 11)
) )
XCTAssertEqual( #expect(
try! VersionNumber.parse("7.4.2"), try! VersionNumber.parse("7.4.2") ==
VersionNumber(major: 7, minor: 4, patch: 2) VersionNumber(major: 7, minor: 4, patch: 2)
) )
XCTAssertEqual( #expect(
try! VersionNumber.parse("7.4"), try! VersionNumber.parse("7.4") ==
VersionNumber(major: 7, minor: 4, patch: nil) VersionNumber(major: 7, minor: 4, patch: nil)
) )
XCTAssertEqual( #expect(
VersionNumber.make(from: "7"), VersionNumber.make(from: "7") ==
nil nil
) )
} }
func test_php_version_number_parse() throws { @Test func test_php_version_number_parse() throws {
XCTAssertThrowsError(try VersionNumber.parse("OOF")) { error in #expect(throws: VersionParseError.self) {
XCTAssertTrue(error is VersionParseError) try VersionNumber.parse("OOF")
} }
} }
func test_can_parse_wildcard() throws { @Test func test_can_parse_wildcard() throws {
let version = VersionNumber.make(from: "7.*", type: .wildCardMinor) let version = VersionNumber.make(from: "7.*", type: .wildCardMinor)
XCTAssertNotNil(version) let unwrappedVersion = try #require(version)
XCTAssertEqual(version!.major, 7) #expect(unwrappedVersion.major == 7)
XCTAssertEqual(version!.minor, 0) #expect(unwrappedVersion.minor == 0)
} }
func test_can_check_wildcard_version_constraint() throws { @Test func test_can_check_wildcard_version_constraint() throws {
// Wildcard for patch only // Wildcard for patch only
XCTAssertEqual( #expect(
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4.10", "7.3.10", "7.3.9"]) .make(from: ["7.4.10", "7.3.10", "7.3.9"])
.matching(constraint: "7.3.*", strict: false), .matching(constraint: "7.3.*", strict: false) ==
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.3.10", "7.3.9"]).all .make(from: ["7.3.10", "7.3.9"]).all
) )
// Wildcard for minor // Wildcard for minor
XCTAssertEqual( #expect(
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["8.0.0", "7.4.10", "7.3.10", "7.3.9"]) .make(from: ["8.0.0", "7.4.10", "7.3.10", "7.3.9"])
.matching(constraint: "7.*", strict: false), .matching(constraint: "7.*", strict: false) ==
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4.10", "7.3.10", "7.3.9"]).all .make(from: ["7.4.10", "7.3.10", "7.3.9"]).all
) )
// Full wildcard // Full wildcard
XCTAssertEqual( #expect(
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4.10", "7.3.10", "7.2.10", "7.1.10", "7.0.10"]) .make(from: ["7.4.10", "7.3.10", "7.2.10", "7.1.10", "7.0.10"])
.matching(constraint: "*", strict: false), .matching(constraint: "*", strict: false) ==
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4.10", "7.3.10", "7.2.10", "7.1.10", "7.0.10"]).all .make(from: ["7.4.10", "7.3.10", "7.2.10", "7.1.10", "7.0.10"]).all
) )
} }
func test_can_check_any_version_constraint() throws { @Test func test_can_check_any_version_constraint() throws {
XCTAssertEqual( #expect(
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4.10", "7.3.10", "7.2.10", "7.1.10", "7.0.10"]) .make(from: ["7.4.10", "7.3.10", "7.2.10", "7.1.10", "7.0.10"])
.matching(constraint: "*", strict: false), .matching(constraint: "*", strict: false) ==
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4.10", "7.3.10", "7.2.10", "7.1.10", "7.0.10"]).all .make(from: ["7.4.10", "7.3.10", "7.2.10", "7.1.10", "7.0.10"]).all
) )
} }
func test_can_check_fixed_constraints() throws { @Test func test_can_check_fixed_constraints() throws {
XCTAssertEqual( #expect(
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"]) .make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"])
.matching(constraint: "7.0"), .matching(constraint: "7.0") ==
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.0"]).all .make(from: ["7.0"]).all
) )
XCTAssertEqual( #expect(
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4.3", "7.3.3", "7.2.3", "7.1.3", "7.0.3"]) .make(from: ["7.4.3", "7.3.3", "7.2.3", "7.1.3", "7.0.3"])
.matching(constraint: "7.0.3"), .matching(constraint: "7.0.3") ==
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.0.3"]).all .make(from: ["7.0.3"]).all
) )
XCTAssertEqual( #expect(
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"]) .make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"])
.matching(constraint: "7.0.3", strict: false), .matching(constraint: "7.0.3", strict: false) ==
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.0"]).all .make(from: ["7.0"]).all
) )
XCTAssertEqual( #expect(
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"]) .make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"])
.matching(constraint: "7.0.3", strict: true), .matching(constraint: "7.0.3", strict: true) ==
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: []).all .make(from: []).all
) )
} }
func test_can_check_caret_constraints() throws { @Test func test_can_check_caret_constraints() throws {
// 1. Imprecise checks // 1. Imprecise checks
XCTAssertEqual( #expect(
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"]) .make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"])
.matching(constraint: "^7.0", strict: true), .matching(constraint: "^7.0", strict: true) ==
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"]).all .make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"]).all
) )
// 2. Imprecise check with precise constraint (lenient AKA not strict) // 2. Imprecise check with precise constraint (lenient AKA not strict)
// These versions are interpreted as 7.4.999, 7.3.999, 7.2.999, etc. // These versions are interpreted as 7.4.999, 7.3.999, 7.2.999, etc.
XCTAssertEqual( #expect(
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"]) .make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"])
.matching(constraint: "^7.0.1", strict: false), .matching(constraint: "^7.0.1", strict: false) ==
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"]).all .make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"]).all
) )
// 3. Imprecise check with precise constraint (strict mode) // 3. Imprecise check with precise constraint (strict mode)
// These versions are interpreted as 7.4.0, 7.3.0, 7.2.0, etc. // These versions are interpreted as 7.4.0, 7.3.0, 7.2.0, etc.
XCTAssertEqual( #expect(
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"]) .make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"])
.matching(constraint: "^7.0.1", strict: true), .matching(constraint: "^7.0.1", strict: true) ==
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4", "7.3", "7.2", "7.1"]).all .make(from: ["7.4", "7.3", "7.2", "7.1"]).all
) )
// 4. Precise members and constraint all around // 4. Precise members and constraint all around
XCTAssertEqual( #expect(
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4.10", "7.3.10", "7.2.10", "7.1.10", "7.0.10"]) .make(from: ["7.4.10", "7.3.10", "7.2.10", "7.1.10", "7.0.10"])
.matching(constraint: "^7.0.1", strict: true), .matching(constraint: "^7.0.1", strict: true) ==
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4.10", "7.3.10", "7.2.10", "7.1.10", "7.0.10"]).all .make(from: ["7.4.10", "7.3.10", "7.2.10", "7.1.10", "7.0.10"]).all
) )
// 5. Precise members but imprecise constraint (strict mode) // 5. Precise members but imprecise constraint (strict mode)
// In strict mode the constraint's patch version is assumed to be 0 // In strict mode the constraint's patch version is assumed to be 0
XCTAssertEqual( #expect(
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4.10", "7.3.10", "7.2.10", "7.1.10", "7.0.10"]) .make(from: ["7.4.10", "7.3.10", "7.2.10", "7.1.10", "7.0.10"])
.matching(constraint: "^7.0", strict: true), .matching(constraint: "^7.0", strict: true) ==
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4.10", "7.3.10", "7.2.10", "7.1.10", "7.0.10"]).all .make(from: ["7.4.10", "7.3.10", "7.2.10", "7.1.10", "7.0.10"]).all
) )
// 6. Precise members but imprecise constraint (lenient mode) // 6. Precise members but imprecise constraint (lenient mode)
// In lenient mode the constraint's patch version is assumed to be equal // In lenient mode the constraint's patch version is assumed to be equal
XCTAssertEqual( #expect(
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4.10", "7.3.10", "7.2.10", "7.1.10", "7.0.10"]) .make(from: ["7.4.10", "7.3.10", "7.2.10", "7.1.10", "7.0.10"])
.matching(constraint: "^7.0", strict: false), .matching(constraint: "^7.0", strict: false) ==
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4.10", "7.3.10", "7.2.10", "7.1.10", "7.0.10"]).all .make(from: ["7.4.10", "7.3.10", "7.2.10", "7.1.10", "7.0.10"]).all
) )
} }
func test_can_check_tilde_constraints() throws { @Test func test_can_check_tilde_constraints() throws {
// 1. Imprecise checks // 1. Imprecise checks
XCTAssertEqual( #expect(
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"]) .make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"])
.matching(constraint: "~7.0", strict: true), .matching(constraint: "~7.0", strict: true) ==
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"]).all .make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"]).all
) )
// 2. Imprecise check with precise constraint (lenient AKA not strict) // 2. Imprecise check with precise constraint (lenient AKA not strict)
// These versions are interpreted as 7.4.999, 7.3.999, 7.2.999, etc. // These versions are interpreted as 7.4.999, 7.3.999, 7.2.999, etc.
XCTAssertEqual( #expect(
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"]) .make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"])
.matching(constraint: "~7.0.1", strict: false), .matching(constraint: "~7.0.1", strict: false) ==
// One result because 7.0.1 to 7.0.x is expected. // One result because 7.0.1 to 7.0.x is expected.
// 7.0.999 (assumed due to no strictness) is valid. // 7.0.999 (assumed due to no strictness) is valid.
// 7.1.0 and up are not valid (minor version is too high). // 7.1.0 and up are not valid (minor version is too high).
@@ -209,10 +209,10 @@ class PhpVersionNumberTest: XCTestCase {
// 3. Imprecise check with precise constraint (strict mode) // 3. Imprecise check with precise constraint (strict mode)
// These versions are interpreted as 7.4.0, 7.3.0, 7.2.0, etc. // These versions are interpreted as 7.4.0, 7.3.0, 7.2.0, etc.
XCTAssertEqual( #expect(
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"]) .make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"])
.matching(constraint: "~7.0.1", strict: true), .matching(constraint: "~7.0.1", strict: true) ==
// No results because 7.0.1 to 7.0.x is expected. // No results because 7.0.1 to 7.0.x is expected.
// 7.0.0 (assumed due to strictness) is not valid. // 7.0.0 (assumed due to strictness) is not valid.
// 7.1.0 and up are also not valid (minor version is too high). // 7.1.0 and up are also not valid (minor version is too high).
@@ -221,10 +221,10 @@ class PhpVersionNumberTest: XCTestCase {
) )
// 4. Precise members and constraint all around // 4. Precise members and constraint all around
XCTAssertEqual( #expect(
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4.10", "7.3.10", "7.2.10", "7.1.10", "7.0.10"]) .make(from: ["7.4.10", "7.3.10", "7.2.10", "7.1.10", "7.0.10"])
.matching(constraint: "~7.0.1", strict: true), .matching(constraint: "~7.0.1", strict: true) ==
// Only 7.0 with a patch version of .1 or higher is OK. // Only 7.0 with a patch version of .1 or higher is OK.
// In this example, 7.0.10 is OK but all other versions are too new. // In this example, 7.0.10 is OK but all other versions are too new.
PhpVersionNumberCollection PhpVersionNumberCollection
@@ -233,10 +233,10 @@ class PhpVersionNumberTest: XCTestCase {
// 5. Precise members but imprecise constraint (strict mode) // 5. Precise members but imprecise constraint (strict mode)
// In strict mode the constraint's patch version is assumed to be 0. // In strict mode the constraint's patch version is assumed to be 0.
XCTAssertEqual( #expect(
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4.10", "7.3.10", "7.2.10", "7.1.10", "7.0.10"]) .make(from: ["7.4.10", "7.3.10", "7.2.10", "7.1.10", "7.0.10"])
.matching(constraint: "~7.0", strict: true), .matching(constraint: "~7.0", strict: true) ==
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4.10", "7.3.10", "7.2.10", "7.1.10", "7.0.10"]).all .make(from: ["7.4.10", "7.3.10", "7.2.10", "7.1.10", "7.0.10"]).all
) )
@@ -244,164 +244,164 @@ class PhpVersionNumberTest: XCTestCase {
// 6. Precise members but imprecise constraint (lenient mode) // 6. Precise members but imprecise constraint (lenient mode)
// In lenient mode the constraint's patch version is assumed to be equal. // In lenient mode the constraint's patch version is assumed to be equal.
// (Strictness does not make any difference here, but both should be tested.) // (Strictness does not make any difference here, but both should be tested.)
XCTAssertEqual( #expect(
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4.10", "7.3.10", "7.2.10", "7.1.10", "7.0.10"]) .make(from: ["7.4.10", "7.3.10", "7.2.10", "7.1.10", "7.0.10"])
.matching(constraint: "~7.0", strict: false), .matching(constraint: "~7.0", strict: false) ==
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4.10", "7.3.10", "7.2.10", "7.1.10", "7.0.10"]).all .make(from: ["7.4.10", "7.3.10", "7.2.10", "7.1.10", "7.0.10"]).all
) )
} }
func test_can_check_greater_than_or_equal_constraints() throws { @Test func test_can_check_greater_than_or_equal_constraints() throws {
XCTAssertEqual( #expect(
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"]) .make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"])
.matching(constraint: ">=7.0", strict: true), .matching(constraint: ">=7.0", strict: true) ==
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"]).all .make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"]).all
) )
XCTAssertEqual( #expect(
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"]) .make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"])
.matching(constraint: ">=7.0.0", strict: true), .matching(constraint: ">=7.0.0", strict: true) ==
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"]).all .make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"]).all
) )
// Strict check (>7.2.5 is too new for 7.2 which resolves to 7.2.0) // Strict check (>7.2.5 is too new for 7.2 which resolves to 7.2.0)
XCTAssertEqual( #expect(
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"]) .make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"])
.matching(constraint: ">=7.2.5", strict: true), .matching(constraint: ">=7.2.5", strict: true) ==
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4", "7.3"]).all .make(from: ["7.4", "7.3"]).all
) )
// Non-strict check (ignoring patch, 7.2 resolves to 7.2.999) // Non-strict check (ignoring patch, 7.2 resolves to 7.2.999)
XCTAssertEqual( #expect(
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"]) .make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"])
.matching(constraint: ">=7.2.5", strict: false), .matching(constraint: ">=7.2.5", strict: false) ==
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4", "7.3", "7.2"]).all .make(from: ["7.4", "7.3", "7.2"]).all
) )
} }
func test_can_check_greater_than_constraints() throws { @Test func test_can_check_greater_than_constraints() throws {
XCTAssertEqual( #expect(
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"]) .make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"])
.matching(constraint: ">7.0"), .matching(constraint: ">7.0") ==
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4", "7.3", "7.2", "7.1"]).all .make(from: ["7.4", "7.3", "7.2", "7.1"]).all
) )
XCTAssertEqual( #expect(
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"]) .make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"])
.matching(constraint: ">7.2.5"), .matching(constraint: ">7.2.5") ==
// 7.2 will be valid due to non-strict mode (resolves to 7.2.999) // 7.2 will be valid due to non-strict mode (resolves to 7.2.999)
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4", "7.3", "7.2"]).all .make(from: ["7.4", "7.3", "7.2"]).all
) )
XCTAssertEqual( #expect(
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"]) .make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"])
.matching(constraint: ">7.2.5", strict: true), .matching(constraint: ">7.2.5", strict: true) ==
// 7.2 will not be valid due to strict mode (resolves to 7.2.0) // 7.2 will not be valid due to strict mode (resolves to 7.2.0)
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4", "7.3"]).all .make(from: ["7.4", "7.3"]).all
) )
XCTAssertEqual( #expect(
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.3.1", "7.2.9", "7.2.8", "7.2.6", "7.2.5", "7.2"]) .make(from: ["7.3.1", "7.2.9", "7.2.8", "7.2.6", "7.2.5", "7.2"])
.matching(constraint: ">7.2.8"), .matching(constraint: ">7.2.8") ==
// 7.2 will be valid due to non-strict mode (resolves to 7.2.999) // 7.2 will be valid due to non-strict mode (resolves to 7.2.999)
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.3.1", "7.2.9", "7.2"]).all .make(from: ["7.3.1", "7.2.9", "7.2"]).all
) )
XCTAssertEqual( #expect(
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.3.1", "7.2.9", "7.2.8", "7.2.6", "7.2.5", "7.2"]) .make(from: ["7.3.1", "7.2.9", "7.2.8", "7.2.6", "7.2.5", "7.2"])
.matching(constraint: ">7.2.8", strict: true), .matching(constraint: ">7.2.8", strict: true) ==
// 7.2 will not be valid due to strict mode (resolves to 7.2.0) // 7.2 will not be valid due to strict mode (resolves to 7.2.0)
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.3.1", "7.2.9"]).all .make(from: ["7.3.1", "7.2.9"]).all
) )
} }
func test_can_check_less_than_or_equal_constraints() throws { @Test func test_can_check_less_than_or_equal_constraints() throws {
XCTAssertEqual( #expect(
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"]) .make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"])
.matching(constraint: "<=7.2", strict: true), .matching(constraint: "<=7.2", strict: true) ==
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.2", "7.1", "7.0"]).all .make(from: ["7.2", "7.1", "7.0"]).all
) )
XCTAssertEqual( #expect(
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"]) .make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"])
.matching(constraint: "<=7.2.0", strict: true), .matching(constraint: "<=7.2.0", strict: true) ==
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.2", "7.1", "7.0"]).all .make(from: ["7.2", "7.1", "7.0"]).all
) )
// Strict check (>7.2.5 is too new for 7.2 which resolves to 7.2.0) // Strict check (>7.2.5 is too new for 7.2 which resolves to 7.2.0)
XCTAssertEqual( #expect(
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"]) .make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"])
.matching(constraint: "<=7.2.5", strict: true), .matching(constraint: "<=7.2.5", strict: true) ==
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.2", "7.1", "7.0"]).all .make(from: ["7.2", "7.1", "7.0"]).all
) )
// Non-strict check (ignoring patch has no effect) // Non-strict check (ignoring patch has no effect)
XCTAssertEqual( #expect(
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"]) .make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"])
.matching(constraint: "<=7.2.5", strict: false), .matching(constraint: "<=7.2.5", strict: false) ==
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.2", "7.1", "7.0"]).all .make(from: ["7.2", "7.1", "7.0"]).all
) )
} }
func test_can_check_less_than_constraints() throws { @Test func test_can_check_less_than_constraints() throws {
XCTAssertEqual( #expect(
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"]) .make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"])
.matching(constraint: "<7.2", strict: true), .matching(constraint: "<7.2", strict: true) ==
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.1", "7.0"]).all .make(from: ["7.1", "7.0"]).all
) )
XCTAssertEqual( #expect(
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"]) .make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"])
.matching(constraint: "<7.2.0", strict: true), .matching(constraint: "<7.2.0", strict: true) ==
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.1", "7.0"]).all .make(from: ["7.1", "7.0"]).all
) )
// Strict check (>7.2.5 is too new for 7.2 which resolves to 7.2.0) // Strict check (>7.2.5 is too new for 7.2 which resolves to 7.2.0)
XCTAssertEqual( #expect(
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"]) .make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"])
.matching(constraint: "<7.2.5", strict: true), .matching(constraint: "<7.2.5", strict: true) ==
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.2", "7.1", "7.0"]).all .make(from: ["7.2", "7.1", "7.0"]).all
) )
// Non-strict check (patch resolves to 7.2.999, which is bigger than 7.2.5) // Non-strict check (patch resolves to 7.2.999, which is bigger than 7.2.5)
XCTAssertEqual( #expect(
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"]) .make(from: ["7.4", "7.3", "7.2", "7.1", "7.0"])
.matching(constraint: "<7.2.5", strict: false), .matching(constraint: "<7.2.5", strict: false) ==
PhpVersionNumberCollection PhpVersionNumberCollection
.make(from: ["7.1", "7.0"]).all .make(from: ["7.1", "7.0"]).all
) )

View File

@@ -6,11 +6,11 @@
// Copyright © 2023 Nico Verbruggen. All rights reserved. // Copyright © 2023 Nico Verbruggen. All rights reserved.
// //
import XCTest import Testing
import Foundation
class ValetVersionExtractorTest: XCTestCase { class ValetVersionExtractorTest {
@Test func test_can_determine_valet_version_regardless_of_deprecations() async {
func test_can_determine_valet_version_regardless_of_deprecations() async {
let output = """ let output = """
Deprecated: Return type of Tightenco\\Collect\\Support\\Collection::offsetExists($key) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /Users/dummy/.composer/vendor/tightenco/collect/src/Collect/Support/Collection.php on line 1789 Deprecated: Return type of Tightenco\\Collect\\Support\\Collection::offsetExists($key) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /Users/dummy/.composer/vendor/tightenco/collect/src/Collect/Support/Collection.php on line 1789
@@ -35,6 +35,6 @@ class ValetVersionExtractorTest: XCTestCase {
let version = try! VersionNumber.parse(VersionExtractor.from(versionString)!) let version = try! VersionNumber.parse(VersionExtractor.from(versionString)!)
XCTAssertEqual(version.major, 3) #expect(version.major == 3)
} }
} }

View File

@@ -6,20 +6,19 @@
// Copyright © 2023 Nico Verbruggen. All rights reserved. // Copyright © 2023 Nico Verbruggen. All rights reserved.
// //
import XCTest import Testing
import Foundation
class VersionExtractorTest: XCTestCase { struct VersionExtractorTest {
@Test func test_extract_version() {
func test_extract_version() { #expect(VersionExtractor.from("Laravel Valet 2.17.1") == "2.17.1")
XCTAssertEqual(VersionExtractor.from("Laravel Valet 2.17.1"), "2.17.1") #expect(VersionExtractor.from("Laravel Valet 2.0") == "2.0")
XCTAssertEqual(VersionExtractor.from("Laravel Valet 2.0"), "2.0")
} }
func test_version_comparison() { @Test func test_version_comparison() {
XCTAssertEqual("2.0".versionCompare("2.1"), .orderedAscending) #expect("2.0".versionCompare("2.1") == .orderedAscending)
XCTAssertEqual("2.1".versionCompare("2.0"), .orderedDescending) #expect("2.1".versionCompare("2.0") == .orderedDescending)
XCTAssertEqual("2.0".versionCompare("2.0"), .orderedSame) #expect("2.0".versionCompare("2.0") == .orderedSame)
XCTAssertEqual("2.17.0".versionCompare("2.17.1"), .orderedAscending) #expect("2.17.0".versionCompare("2.17.1") == .orderedAscending)
} }
} }