mirror of
https://github.com/nicoverbruggen/phpmon.git
synced 2025-08-07 03:50:08 +02:00
✅ Add UI test for PHP version manager
This commit is contained in:
@ -56,6 +56,8 @@ public struct TestableConfiguration: Codable {
|
|||||||
self.filesystem = self.filesystem.merging([
|
self.filesystem = self.filesystem.merging([
|
||||||
"/opt/homebrew/opt/php@\(version.short)/bin/php"
|
"/opt/homebrew/opt/php@\(version.short)/bin/php"
|
||||||
: .fake(.symlink, "/opt/homebrew/Cellar/php/\(version.long)/bin/php"),
|
: .fake(.symlink, "/opt/homebrew/Cellar/php/\(version.long)/bin/php"),
|
||||||
|
"/opt/homebrew/opt/php@\(version.short)/bin/php-config"
|
||||||
|
: .fake(.symlink, "/opt/homebrew/Cellar/php/\(version.long)/bin/php-config"),
|
||||||
"/opt/homebrew/Cellar/php/\(version.long)/bin/php"
|
"/opt/homebrew/Cellar/php/\(version.long)/bin/php"
|
||||||
: .fake(.binary),
|
: .fake(.binary),
|
||||||
"/opt/homebrew/Cellar/php/\(version.long)/bin/php-config"
|
"/opt/homebrew/Cellar/php/\(version.long)/bin/php-config"
|
||||||
@ -70,6 +72,9 @@ public struct TestableConfiguration: Codable {
|
|||||||
: .fake(.text)
|
: .fake(.text)
|
||||||
]) { (_, new) in new }
|
]) { (_, new) in new }
|
||||||
|
|
||||||
|
self.commandOutput["/opt/homebrew/opt/php@\(version.short)/bin/php-config --version"]
|
||||||
|
= version.long
|
||||||
|
|
||||||
if primary {
|
if primary {
|
||||||
self.shellOutput["ls /opt/homebrew/opt | grep php"]
|
self.shellOutput["ls /opt/homebrew/opt | grep php"]
|
||||||
= .instant("php")
|
= .instant("php")
|
||||||
@ -80,7 +85,7 @@ public struct TestableConfiguration: Codable {
|
|||||||
self.filesystem["/opt/homebrew/bin/php"]
|
self.filesystem["/opt/homebrew/bin/php"]
|
||||||
= .fake(.symlink, "/opt/homebrew/Cellar/php/\(version.long)/bin/php")
|
= .fake(.symlink, "/opt/homebrew/Cellar/php/\(version.long)/bin/php")
|
||||||
self.filesystem["/opt/homebrew/bin/php-config"]
|
self.filesystem["/opt/homebrew/bin/php-config"]
|
||||||
= .fake(.symlink, "/opt/homebrew/Cellar/php/\(version.long)/bin/php-config")
|
= .fake(.symlink, "/opt/homebrew/Cellar/php/\(version.short)/bin/php-config")
|
||||||
self.commandOutput["/opt/homebrew/bin/php-config --version"]
|
self.commandOutput["/opt/homebrew/bin/php-config --version"]
|
||||||
= version.long
|
= version.long
|
||||||
self.commandOutput["/opt/homebrew/bin/php -r echo php_ini_scanned_files();"] =
|
self.commandOutput["/opt/homebrew/bin/php -r echo php_ini_scanned_files();"] =
|
||||||
@ -88,12 +93,13 @@ public struct TestableConfiguration: Codable {
|
|||||||
/opt/homebrew/etc/php/\(version.short)/conf.d/php-memory-limits.ini,
|
/opt/homebrew/etc/php/\(version.short)/conf.d/php-memory-limits.ini,
|
||||||
"""
|
"""
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
self.shellOutput["ls /opt/homebrew/opt | grep php@"] =
|
self.shellOutput["ls /opt/homebrew/opt | grep php@"] =
|
||||||
BatchFakeShellOutput.instant(
|
BatchFakeShellOutput.instant(
|
||||||
self.secondaryPhpVersions
|
self.secondaryPhpVersions
|
||||||
.map { "php@\($0.short)" }
|
.map { "php@\($0.short)" }
|
||||||
.joined(separator: "\n")
|
.joined(separator: "\n")
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,6 +44,7 @@ class BrewFormulaeHandler: HandlesBrewFormulae {
|
|||||||
|
|
||||||
return Brew.phpVersionFormulae.map { (version, formula) in
|
return Brew.phpVersionFormulae.map { (version, formula) in
|
||||||
let fullVersion = PhpEnvironments.shared.cachedPhpInstallations[version]?.versionNumber.text
|
let fullVersion = PhpEnvironments.shared.cachedPhpInstallations[version]?.versionNumber.text
|
||||||
|
|
||||||
var upgradeVersion: String?
|
var upgradeVersion: String?
|
||||||
|
|
||||||
if let version = fullVersion {
|
if let version = fullVersion {
|
||||||
|
@ -160,6 +160,22 @@ class TestableConfigurations {
|
|||||||
: .delayed(0.2, "OK"),
|
: .delayed(0.2, "OK"),
|
||||||
"ln -sF ~/.config/valet/valet82.sock ~/.config/valet/valet.sock"
|
"ln -sF ~/.config/valet/valet82.sock ~/.config/valet/valet.sock"
|
||||||
: .instant("OK"),
|
: .instant("OK"),
|
||||||
|
"/opt/homebrew/bin/brew update >/dev/null && /opt/homebrew/bin/brew outdated --json --formulae": .delayed(2.0, """
|
||||||
|
{
|
||||||
|
"formulae": [
|
||||||
|
{
|
||||||
|
"name": "php",
|
||||||
|
"installed_versions": [
|
||||||
|
"8.2.6"
|
||||||
|
],
|
||||||
|
"current_version": "8.2.11",
|
||||||
|
"pinned": false,
|
||||||
|
"pinned_version": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"casks": []
|
||||||
|
}
|
||||||
|
""")
|
||||||
],
|
],
|
||||||
commandOutput: [
|
commandOutput: [
|
||||||
"/opt/homebrew/bin/php -r echo ini_get('memory_limit');": "512M",
|
"/opt/homebrew/bin/php -r echo ini_get('memory_limit');": "512M",
|
||||||
@ -173,7 +189,7 @@ class TestableConfigurations {
|
|||||||
.automaticBackgroundUpdateCheck: false
|
.automaticBackgroundUpdateCheck: false
|
||||||
],
|
],
|
||||||
phpVersions: [
|
phpVersions: [
|
||||||
VersionNumber(major: 8, minor: 2, patch: 0),
|
VersionNumber(major: 8, minor: 2, patch: 6),
|
||||||
VersionNumber(major: 8, minor: 1, patch: 0),
|
VersionNumber(major: 8, minor: 1, patch: 0),
|
||||||
VersionNumber(major: 8, minor: 0, patch: 0)
|
VersionNumber(major: 8, minor: 0, patch: 0)
|
||||||
]
|
]
|
||||||
|
@ -71,6 +71,31 @@ final class MainMenuTest: UITestCase {
|
|||||||
click(app.buttons["Notifications"])
|
click(app.buttons["Notifications"])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final func test_can_open_php_version_manager() throws {
|
||||||
|
let app = launch(openMenu: true)
|
||||||
|
app.mainMenuItem(withText: "mi_php_version_manager".localized).click()
|
||||||
|
|
||||||
|
// Should display loader
|
||||||
|
assertExists(app.staticTexts["phpman.busy.title".localized], 1)
|
||||||
|
|
||||||
|
// After loading, should display PHP 8.2
|
||||||
|
assertExists(app.staticTexts["PHP 8.2"], 5)
|
||||||
|
|
||||||
|
// Should also display pre-release version
|
||||||
|
assertExists(app.staticTexts["PHP 8.3"])
|
||||||
|
assertExists(app.staticTexts["phpman.version.prerelease".localized.uppercased()])
|
||||||
|
assertExists(app.staticTexts["phpman.version.available_for_installation".localized])
|
||||||
|
|
||||||
|
// But not PHP 8.4 (yet)
|
||||||
|
assertNotExists(app.staticTexts["PHP 8.4"])
|
||||||
|
|
||||||
|
// Also, PHP 8.2 should have an update available
|
||||||
|
assertExists(app.staticTexts["phpman.version.has_update".localized(
|
||||||
|
"8.2.6",
|
||||||
|
"8.2.11"
|
||||||
|
)], 5)
|
||||||
|
}
|
||||||
|
|
||||||
final func test_can_quit_app() throws {
|
final func test_can_quit_app() throws {
|
||||||
let app = launch(openMenu: true)
|
let app = launch(openMenu: true)
|
||||||
app.mainMenuItem(withText: "mi_quit".localized).click()
|
app.mainMenuItem(withText: "mi_quit".localized).click()
|
||||||
|
Reference in New Issue
Block a user