1
0
mirror of https://github.com/nicoverbruggen/phpmon.git synced 2025-08-07 20:10:08 +02:00

Fix tests related to version number parsing

This commit is contained in:
2023-01-05 17:58:55 +01:00
parent 67e8589834
commit d854dee2a1
3 changed files with 34 additions and 31 deletions

View File

@ -90,7 +90,10 @@ class PhpEnv {
public func detectPhpVersions() async -> [String] { public func detectPhpVersions() async -> [String] {
let files = await Shell.pipe("ls \(Paths.optPath) | grep php@").out let files = await Shell.pipe("ls \(Paths.optPath) | grep php@").out
var versionsOnly = await extractPhpVersions(from: files.components(separatedBy: "\n")) var versionsOnly = await extractPhpVersions(
from: files.components(separatedBy: "\n"),
supported: Constants.ValetSupportedPhpVersionMatrix[Valet.shared.version.major]!
)
// Make sure the aliased version is detected // Make sure the aliased version is detected
// The user may have `php` installed, but not e.g. `php@8.0` // The user may have `php` installed, but not e.g. `php@8.0`
@ -126,16 +129,11 @@ class PhpEnv {
*/ */
public func extractPhpVersions( public func extractPhpVersions(
from versions: [String], from versions: [String],
supported: [String],
checkBinaries: Bool = true, checkBinaries: Bool = true,
generateHelpers: Bool = true generateHelpers: Bool = true
) async -> [String] { ) async -> [String] {
var output: [String] = [] var output: [String] = []
let valetMajor = Valet.shared.version.major
let supported = Constants.ValetSupportedPhpVersionMatrix[valetMajor] ?? []
print(supported)
versions.filter { (version) -> Bool in versions.filter { (version) -> Bool in
// Omit everything that doesn't start with php@ // Omit everything that doesn't start with php@
// (e.g. something-php@8.0 won't be detected) // (e.g. something-php@8.0 won't be detected)

View File

@ -11,18 +11,23 @@ import XCTest
class PhpVersionDetectionTest: XCTestCase { class PhpVersionDetectionTest: XCTestCase {
func test_can_detect_valid_php_versions() async throws { func test_can_detect_valid_php_versions() async throws {
let outcome = await PhpEnv.shared.extractPhpVersions(from: [ let outcome = await PhpEnv.shared.extractPhpVersions(
"", // empty lines should be omitted from: [
"php@8.0", "", // empty lines should be omitted
"php@8.0", // should only be detected once "php@8.0",
"meta-php@8.0", // should be omitted, invalid "php@8.0", // should only be detected once
"php@8.0-coolio", // should be omitted, invalid "meta-php@8.0", // should be omitted, invalid
"php@7.0", "php@8.0-coolio", // should be omitted, invalid
"", "php@7.0",
"unrelatedphp@1.0", // should be omitted, invalid "",
"php@5.6", "unrelatedphp@1.0", // should be omitted, invalid
"php@5.4" // should be omitted, not supported "php@5.6", // should be omitted, not supported
], checkBinaries: false, generateHelpers: false) "php@5.4" // should be omitted, not supported
],
supported: ["7.0", "8.0", "8.1", "8.2"],
checkBinaries: false,
generateHelpers: false
)
XCTAssertEqual(outcome, ["8.0", "7.0"]) XCTAssertEqual(outcome, ["8.0", "7.0"])
} }

View File

@ -13,33 +13,33 @@ class PhpVersionNumberTest: XCTestCase {
func test_can_deconstruct_php_version() throws { func test_can_deconstruct_php_version() throws {
XCTAssertEqual( XCTAssertEqual(
try! PhpVersionNumber.parse("PHP 8.2.0-dev"), try! VersionNumber.parse("PHP 8.2.0-dev"),
PhpVersionNumber(major: 8, minor: 2, patch: 0) VersionNumber(major: 8, minor: 2, patch: 0)
) )
XCTAssertEqual( XCTAssertEqual(
try! PhpVersionNumber.parse("PHP 8.1.0RC5-dev"), try! VersionNumber.parse("PHP 8.1.0RC5-dev"),
PhpVersionNumber(major: 8, minor: 1, patch: 0) VersionNumber(major: 8, minor: 1, patch: 0)
) )
XCTAssertEqual( XCTAssertEqual(
try! PhpVersionNumber.parse("8.0.11"), try! VersionNumber.parse("8.0.11"),
PhpVersionNumber(major: 8, minor: 0, patch: 11) VersionNumber(major: 8, minor: 0, patch: 11)
) )
XCTAssertEqual( XCTAssertEqual(
try! PhpVersionNumber.parse("7.4.2"), try! VersionNumber.parse("7.4.2"),
PhpVersionNumber(major: 7, minor: 4, patch: 2) VersionNumber(major: 7, minor: 4, patch: 2)
) )
XCTAssertEqual( XCTAssertEqual(
try! PhpVersionNumber.parse("7.4"), try! VersionNumber.parse("7.4"),
PhpVersionNumber(major: 7, minor: 4, patch: nil) VersionNumber(major: 7, minor: 4, patch: nil)
) )
XCTAssertEqual( XCTAssertEqual(
PhpVersionNumber.make(from: "7"), VersionNumber.make(from: "7"),
nil nil
) )
} }
func test_php_version_number_parse() throws { func test_php_version_number_parse() throws {
XCTAssertThrowsError(try PhpVersionNumber.parse("OOF")) { error in XCTAssertThrowsError(try VersionNumber.parse("OOF")) { error in
XCTAssertTrue(error is VersionParseError) XCTAssertTrue(error is VersionParseError)
} }
} }