From eaf6ef658fe65899eb9e72f5954e24c36ba7547a Mon Sep 17 00:00:00 2001 From: Nico Verbruggen Date: Fri, 14 Oct 2022 18:03:14 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=9B=20Moved=20tests=20around,=20added?= =?UTF-8?q?=20Feature,=20UI=20tests?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PHP Monitor.xcodeproj/project.pbxproj | 937 +++++++++++++++++- .../xcschemes/PHP Monitor DEV.xcscheme | 18 +- .../xcschemes/PHP Monitor.xcscheme | 26 +- .../xcschemes/Unit Tests.xcscheme | 4 +- phpmon-tests/Info.plist | 22 - .../Common/Extensions/StringExtension.swift | 6 +- phpmon/Domain/App/AppDelegate.swift | 9 +- phpmon/Domain/Menu/MainMenu.swift | 2 +- .../PHP Monitor.xctestplan | 17 +- tests/feature/EmptyTest.swift | 11 + tests/ui/UI_Tests.swift | 35 + .../unit}/Commands/CommandTest.swift | 0 .../unit}/Parsers/HomebrewPackageTest.swift | 0 .../Parsers/NginxConfigurationTest.swift | 0 .../unit}/Parsers/PhpConfigurationTest.swift | 0 .../unit}/Parsers/PhpExtensionTest.swift | 0 .../Parsers/ValetConfigurationTest.swift | 0 .../unit}/Test Files/brew/brew-formula.json | 0 .../unit}/Test Files/brew/brew-services.json | 0 .../unit}/Test Files/nginx/nginx-proxy.test | 0 .../nginx/nginx-secure-proxy-custom-tld.test | 0 .../Test Files/nginx/nginx-secure-proxy.test | 0 .../Test Files/nginx/nginx-site-isolated.test | 0 .../unit}/Test Files/nginx/nginx-site.test | 0 .../unit}/Test Files/php/php.ini | 0 .../Test Files/phpmon/phpmon-config.json | 0 .../unit}/Test Files/valet/valet-config.json | 0 .../unit}/Testables/Shell/FakeShellTest.swift | 0 .../Testables/Shell/SystemShellTest.swift | 0 {phpmon-tests => tests/unit}/Utility.swift | 0 .../unit}/Versions/AppUpdaterCheckTest.swift | 0 .../unit}/Versions/AppVersionTest.swift | 0 .../Versions/PhpVersionDetectionTest.swift | 0 .../unit}/Versions/PhpVersionNumberTest.swift | 0 .../Versions/ValetVersionExtractorTest.swift | 0 .../unit}/Versions/VersionExtractorTest.swift | 0 36 files changed, 1028 insertions(+), 59 deletions(-) delete mode 100644 phpmon-tests/Info.plist rename {PHP Monitor.xcodeproj => tests}/PHP Monitor.xctestplan (71%) create mode 100644 tests/feature/EmptyTest.swift create mode 100644 tests/ui/UI_Tests.swift rename {phpmon-tests => tests/unit}/Commands/CommandTest.swift (100%) rename {phpmon-tests => tests/unit}/Parsers/HomebrewPackageTest.swift (100%) rename {phpmon-tests => tests/unit}/Parsers/NginxConfigurationTest.swift (100%) rename {phpmon-tests => tests/unit}/Parsers/PhpConfigurationTest.swift (100%) rename {phpmon-tests => tests/unit}/Parsers/PhpExtensionTest.swift (100%) rename {phpmon-tests => tests/unit}/Parsers/ValetConfigurationTest.swift (100%) rename {phpmon-tests => tests/unit}/Test Files/brew/brew-formula.json (100%) rename {phpmon-tests => tests/unit}/Test Files/brew/brew-services.json (100%) rename {phpmon-tests => tests/unit}/Test Files/nginx/nginx-proxy.test (100%) rename {phpmon-tests => tests/unit}/Test Files/nginx/nginx-secure-proxy-custom-tld.test (100%) rename {phpmon-tests => tests/unit}/Test Files/nginx/nginx-secure-proxy.test (100%) rename {phpmon-tests => tests/unit}/Test Files/nginx/nginx-site-isolated.test (100%) rename {phpmon-tests => tests/unit}/Test Files/nginx/nginx-site.test (100%) rename {phpmon-tests => tests/unit}/Test Files/php/php.ini (100%) rename {phpmon-tests => tests/unit}/Test Files/phpmon/phpmon-config.json (100%) rename {phpmon-tests => tests/unit}/Test Files/valet/valet-config.json (100%) rename {phpmon-tests => tests/unit}/Testables/Shell/FakeShellTest.swift (100%) rename {phpmon-tests => tests/unit}/Testables/Shell/SystemShellTest.swift (100%) rename {phpmon-tests => tests/unit}/Utility.swift (100%) rename {phpmon-tests => tests/unit}/Versions/AppUpdaterCheckTest.swift (100%) rename {phpmon-tests => tests/unit}/Versions/AppVersionTest.swift (100%) rename {phpmon-tests => tests/unit}/Versions/PhpVersionDetectionTest.swift (100%) rename {phpmon-tests => tests/unit}/Versions/PhpVersionNumberTest.swift (100%) rename {phpmon-tests => tests/unit}/Versions/ValetVersionExtractorTest.swift (100%) rename {phpmon-tests => tests/unit}/Versions/VersionExtractorTest.swift (100%) diff --git a/PHP Monitor.xcodeproj/project.pbxproj b/PHP Monitor.xcodeproj/project.pbxproj index cef6353..9c0cd7f 100644 --- a/PHP Monitor.xcodeproj/project.pbxproj +++ b/PHP Monitor.xcodeproj/project.pbxproj @@ -162,6 +162,294 @@ C471E79328F9B21F0021E251 /* ActiveFileSystem.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C8900628F0E3EF00CE5E97 /* ActiveFileSystem.swift */; }; C471E79428F9B23B0021E251 /* FileSystemProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C8900228F0E28800CE5E97 /* FileSystemProtocol.swift */; }; C471E79528F9B2420021E251 /* RealFileSystem.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C8900428F0E3D100CE5E97 /* RealFileSystem.swift */; }; + C471E7B028F9B4940021E251 /* EmptyTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C471E7AF28F9B4940021E251 /* EmptyTest.swift */; }; + C471E7BF28F9B90F0021E251 /* UI_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C471E7BE28F9B90F0021E251 /* UI_Tests.swift */; }; + C471E7C928F9BA2F0021E251 /* TestableConfigurations.swift in Sources */ = {isa = PBXBuildFile; fileRef = C40F505428ECA64E004AD45B /* TestableConfigurations.swift */; }; + C471E7CA28F9BA480021E251 /* TestableFileSystem.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4AD38B128ECD9D300FA8D83 /* TestableFileSystem.swift */; }; + C471E7CB28F9BA5B0021E251 /* TestableCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4E49DEC28F764A00026AC4E /* TestableCommand.swift */; }; + C471E7CC28F9BA5B0021E251 /* TestableShell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C46EBC4928DB966A007ACC74 /* TestableShell.swift */; }; + C471E7CD28F9BA600021E251 /* ShellProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = C46EBC4328DB95F0007ACC74 /* ShellProtocol.swift */; }; + C471E7CE28F9BA600021E251 /* RealShell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C46EBC4628DB9644007ACC74 /* RealShell.swift */; }; + C471E7CF28F9BA600021E251 /* ActiveShell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03E36FE628D9219000636F7F /* ActiveShell.swift */; }; + C471E7D028F9BA630021E251 /* FileSystemProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C8900228F0E28800CE5E97 /* FileSystemProtocol.swift */; }; + C471E7D128F9BA630021E251 /* RealFileSystem.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C8900428F0E3D100CE5E97 /* RealFileSystem.swift */; }; + C471E7D228F9BA630021E251 /* ActiveFileSystem.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C8900628F0E3EF00CE5E97 /* ActiveFileSystem.swift */; }; + C471E7D328F9BA8F0021E251 /* ActiveShell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03E36FE628D9219000636F7F /* ActiveShell.swift */; }; + C471E7D428F9BA8F0021E251 /* ActiveFileSystem.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C8900628F0E3EF00CE5E97 /* ActiveFileSystem.swift */; }; + C471E7D528F9BA8F0021E251 /* TestableConfigurations.swift in Sources */ = {isa = PBXBuildFile; fileRef = C40F505428ECA64E004AD45B /* TestableConfigurations.swift */; }; + C471E7D628F9BA8F0021E251 /* RealFileSystem.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C8900428F0E3D100CE5E97 /* RealFileSystem.swift */; }; + C471E7D728F9BA8F0021E251 /* TestableFileSystem.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4AD38B128ECD9D300FA8D83 /* TestableFileSystem.swift */; }; + C471E7D828F9BA8F0021E251 /* FileSystemProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C8900228F0E28800CE5E97 /* FileSystemProtocol.swift */; }; + C471E7D928F9BA8F0021E251 /* TestableShell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C46EBC4928DB966A007ACC74 /* TestableShell.swift */; }; + C471E7DA28F9BA8F0021E251 /* TestableCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4E49DEC28F764A00026AC4E /* TestableCommand.swift */; }; + C471E7DB28F9BA8F0021E251 /* RealShell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C46EBC4628DB9644007ACC74 /* RealShell.swift */; }; + C471E7DC28F9BA8F0021E251 /* ShellProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = C46EBC4328DB95F0007ACC74 /* ShellProtocol.swift */; }; + C471E7DD28F9BAA30021E251 /* CommandProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4E49DE928F7643D0026AC4E /* CommandProtocol.swift */; }; + C471E7DE28F9BAA30021E251 /* CommandProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4E49DE928F7643D0026AC4E /* CommandProtocol.swift */; }; + C471E7DF28F9BAAB0021E251 /* RealCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4B5853D2770FE3900DA4FBE /* RealCommand.swift */; }; + C471E7E028F9BAAB0021E251 /* ActiveCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4E49DE628F764050026AC4E /* ActiveCommand.swift */; }; + C471E7E128F9BAAB0021E251 /* RealCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4B5853D2770FE3900DA4FBE /* RealCommand.swift */; }; + C471E7E228F9BAAB0021E251 /* ActiveCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4E49DE628F764050026AC4E /* ActiveCommand.swift */; }; + C471E7E328F9BAC20021E251 /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = C40C7F2F27722E8D00DDDCDC /* Logger.swift */; }; + C471E7E428F9BAC20021E251 /* Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = C417DC73277614690015E6EE /* Helpers.swift */; }; + C471E7E528F9BAC20021E251 /* Events.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4EC1E72279DFCF40010F296 /* Events.swift */; }; + C471E7E628F9BAC20021E251 /* Process.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C1019A27C65C6F001FACC2 /* Process.swift */; }; + C471E7E728F9BAC20021E251 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4EE188322D3386B00E126E5 /* Constants.swift */; }; + C471E7E828F9BAC20021E251 /* Actions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C415D3B62770F294005EF286 /* Actions.swift */; }; + C471E7E928F9BAC20021E251 /* Paths.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4B5853B2770FE3900DA4FBE /* Paths.swift */; }; + C471E7EA28F9BAC30021E251 /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = C40C7F2F27722E8D00DDDCDC /* Logger.swift */; }; + C471E7EB28F9BAC30021E251 /* Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = C417DC73277614690015E6EE /* Helpers.swift */; }; + C471E7EC28F9BAC30021E251 /* Events.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4EC1E72279DFCF40010F296 /* Events.swift */; }; + C471E7ED28F9BAC30021E251 /* Process.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C1019A27C65C6F001FACC2 /* Process.swift */; }; + C471E7EE28F9BAC30021E251 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4EE188322D3386B00E126E5 /* Constants.swift */; }; + C471E7EF28F9BAC30021E251 /* Actions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C415D3B62770F294005EF286 /* Actions.swift */; }; + C471E7F028F9BAC30021E251 /* Paths.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4B5853B2770FE3900DA4FBE /* Paths.swift */; }; + C471E7F128F9BAC70021E251 /* PhpVersionNumber.swift in Sources */ = {isa = PBXBuildFile; fileRef = C48D6C6F279CD2AC00F26D7E /* PhpVersionNumber.swift */; }; + C471E7F228F9BAC70021E251 /* PhpEnv.swift in Sources */ = {isa = PBXBuildFile; fileRef = C40C7F1D2772136000DDDCDC /* PhpEnv.swift */; }; + C471E7F328F9BAC70021E251 /* PhpHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4D936C827E3EB6100BD69FE /* PhpHelper.swift */; }; + C471E7F428F9BAC80021E251 /* PhpVersionNumber.swift in Sources */ = {isa = PBXBuildFile; fileRef = C48D6C6F279CD2AC00F26D7E /* PhpVersionNumber.swift */; }; + C471E7F528F9BAC80021E251 /* PhpEnv.swift in Sources */ = {isa = PBXBuildFile; fileRef = C40C7F1D2772136000DDDCDC /* PhpEnv.swift */; }; + C471E7F628F9BAC80021E251 /* PhpHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4D936C827E3EB6100BD69FE /* PhpHelper.swift */; }; + C471E7F728F9BACB0021E251 /* PhpSwitcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4D9ADBE277610E1007277F4 /* PhpSwitcher.swift */; }; + C471E7F828F9BACB0021E251 /* InternalSwitcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4D9ADC7277611A0007277F4 /* InternalSwitcher.swift */; }; + C471E7F928F9BACB0021E251 /* PhpSwitcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4D9ADBE277610E1007277F4 /* PhpSwitcher.swift */; }; + C471E7FA28F9BACB0021E251 /* InternalSwitcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4D9ADC7277611A0007277F4 /* InternalSwitcher.swift */; }; + C471E7FB28F9BACE0021E251 /* HomebrewService.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4F30B02278E16BA00755FCE /* HomebrewService.swift */; }; + C471E7FC28F9BACE0021E251 /* HomebrewPackage.swift in Sources */ = {isa = PBXBuildFile; fileRef = C412E5FB25700D5300A1FB67 /* HomebrewPackage.swift */; }; + C471E7FD28F9BACE0021E251 /* HomebrewService.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4F30B02278E16BA00755FCE /* HomebrewService.swift */; }; + C471E7FE28F9BACE0021E251 /* HomebrewPackage.swift in Sources */ = {isa = PBXBuildFile; fileRef = C412E5FB25700D5300A1FB67 /* HomebrewPackage.swift */; }; + C471E7FF28F9BAD10021E251 /* Xdebug.swift in Sources */ = {isa = PBXBuildFile; fileRef = C42337A2281F19F000459A48 /* Xdebug.swift */; }; + C471E80028F9BAD10021E251 /* Xdebug.swift in Sources */ = {isa = PBXBuildFile; fileRef = C42337A2281F19F000459A48 /* Xdebug.swift */; }; + C471E80128F9BAD40021E251 /* ActivePhpInstallation.swift in Sources */ = {isa = PBXBuildFile; fileRef = C41C1B4A22B019FF00E7CF16 /* ActivePhpInstallation.swift */; }; + C471E80228F9BAD40021E251 /* PhpInstallation.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4F2E4392752F7D00020E974 /* PhpInstallation.swift */; }; + C471E80328F9BAD40021E251 /* PhpConfigurationFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = C46FA9872822EFDC00D78807 /* PhpConfigurationFile.swift */; }; + C471E80428F9BAD40021E251 /* PhpExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4ACA38E25C754C100060C66 /* PhpExtension.swift */; }; + C471E80528F9BAD40021E251 /* ActivePhpInstallation.swift in Sources */ = {isa = PBXBuildFile; fileRef = C41C1B4A22B019FF00E7CF16 /* ActivePhpInstallation.swift */; }; + C471E80628F9BAD40021E251 /* PhpInstallation.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4F2E4392752F7D00020E974 /* PhpInstallation.swift */; }; + C471E80728F9BAD40021E251 /* PhpConfigurationFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = C46FA9872822EFDC00D78807 /* PhpConfigurationFile.swift */; }; + C471E80828F9BAD40021E251 /* PhpExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4ACA38E25C754C100060C66 /* PhpExtension.swift */; }; + C471E80928F9BADC0021E251 /* CreatedFromFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5489625728312FAD004F647A /* CreatedFromFile.swift */; }; + C471E80A28F9BADC0021E251 /* CreatedFromFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5489625728312FAD004F647A /* CreatedFromFile.swift */; }; + C471E80B28F9BAE80021E251 /* XibLoadable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C48D0C9225CC804200CC7490 /* XibLoadable.swift */; }; + C471E80C28F9BAE80021E251 /* NSWindowExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4E0F7EC27BEBDA9007475F2 /* NSWindowExtension.swift */; }; + C471E80D28F9BAE80021E251 /* ArrayExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4EB53E628553117006F9937 /* ArrayExtension.swift */; }; + C471E80E28F9BAE80021E251 /* DateExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4F8C0A322D4F12C002EFE61 /* DateExtension.swift */; }; + C471E80F28F9BAE80021E251 /* NSMenuExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C42759662627662800093CAE /* NSMenuExtension.swift */; }; + C471E81028F9BAE80021E251 /* StringExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C46FA23E246C358E00944F05 /* StringExtension.swift */; }; + C471E81128F9BAE80021E251 /* NSMenuItemExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C40508B028ADAB44008FAC1F /* NSMenuItemExtension.swift */; }; + C471E81228F9BAE80021E251 /* TimeIntervalExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C44B3A4528E5C70100718CB1 /* TimeIntervalExtension.swift */; }; + C471E81328F9BAE80021E251 /* XibLoadable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C48D0C9225CC804200CC7490 /* XibLoadable.swift */; }; + C471E81428F9BAE80021E251 /* NSWindowExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4E0F7EC27BEBDA9007475F2 /* NSWindowExtension.swift */; }; + C471E81528F9BAE80021E251 /* ArrayExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4EB53E628553117006F9937 /* ArrayExtension.swift */; }; + C471E81628F9BAE80021E251 /* DateExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4F8C0A322D4F12C002EFE61 /* DateExtension.swift */; }; + C471E81728F9BAE80021E251 /* NSMenuExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C42759662627662800093CAE /* NSMenuExtension.swift */; }; + C471E81828F9BAE80021E251 /* StringExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C46FA23E246C358E00944F05 /* StringExtension.swift */; }; + C471E81928F9BAE80021E251 /* NSMenuItemExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C40508B028ADAB44008FAC1F /* NSMenuItemExtension.swift */; }; + C471E81A28F9BAE80021E251 /* TimeIntervalExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C44B3A4528E5C70100718CB1 /* TimeIntervalExtension.swift */; }; + C471E81B28F9BB250021E251 /* BetterAlertVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4080FF927BD956700BF2C6B /* BetterAlertVC.swift */; }; + C471E81C28F9BB250021E251 /* BetterAlert.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4080FF527BD8C6400BF2C6B /* BetterAlert.swift */; }; + C471E81D28F9BB260021E251 /* BetterAlertVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4080FF927BD956700BF2C6B /* BetterAlertVC.swift */; }; + C471E81E28F9BB260021E251 /* BetterAlert.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4080FF527BD8C6400BF2C6B /* BetterAlert.swift */; }; + C471E81F28F9BB290021E251 /* NginxConfigurationFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4D5CFC927E0F9CD00035329 /* NginxConfigurationFile.swift */; }; + C471E82028F9BB290021E251 /* NginxConfigurationFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4D5CFC927E0F9CD00035329 /* NginxConfigurationFile.swift */; }; + C471E82128F9BB2E0021E251 /* PhpFrameworks.swift in Sources */ = {isa = PBXBuildFile; fileRef = C415937E27A1B54F00D2E1B7 /* PhpFrameworks.swift */; }; + C471E82228F9BB2E0021E251 /* ComposerWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4CE3BB927B31F670086CA49 /* ComposerWindow.swift */; }; + C471E82328F9BB2E0021E251 /* ComposerJson.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4D89BC52783C99400A02B68 /* ComposerJson.swift */; }; + C471E82428F9BB2E0021E251 /* PhpFrameworks.swift in Sources */ = {isa = PBXBuildFile; fileRef = C415937E27A1B54F00D2E1B7 /* PhpFrameworks.swift */; }; + C471E82528F9BB2E0021E251 /* ComposerWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4CE3BB927B31F670086CA49 /* ComposerWindow.swift */; }; + C471E82628F9BB2E0021E251 /* ComposerJson.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4D89BC52783C99400A02B68 /* ComposerJson.swift */; }; + C471E82728F9BB310021E251 /* HomebrewDiagnostics.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4F2E4362752F0870020E974 /* HomebrewDiagnostics.swift */; }; + C471E82828F9BB310021E251 /* HomebrewDiagnostics.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4F2E4362752F0870020E974 /* HomebrewDiagnostics.swift */; }; + C471E82928F9BB330021E251 /* Valet.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4AF9F792754499000D44ED0 /* Valet.swift */; }; + C471E82A28F9BB330021E251 /* DomainListable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C42F26722805B4B400938AC7 /* DomainListable.swift */; }; + C471E82B28F9BB340021E251 /* Valet.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4AF9F792754499000D44ED0 /* Valet.swift */; }; + C471E82C28F9BB340021E251 /* DomainListable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C42F26722805B4B400938AC7 /* DomainListable.swift */; }; + C471E82D28F9BB650021E251 /* AlertableError.swift in Sources */ = {isa = PBXBuildFile; fileRef = C44CCD3F27AFE2FC00CE40E5 /* AlertableError.swift */; }; + C471E82E28F9BB650021E251 /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4927F0A27B2DFC200C55AFD /* Errors.swift */; }; + C471E82F28F9BB650021E251 /* Alert.swift in Sources */ = {isa = PBXBuildFile; fileRef = C476FF9722B0DD830098105B /* Alert.swift */; }; + C471E83028F9BB650021E251 /* Application.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54B48B5E275F66AE006D90C5 /* Application.swift */; }; + C471E83128F9BB650021E251 /* LocalNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = C474B00524C0E98C00066A22 /* LocalNotification.swift */; }; + C471E83228F9BB650021E251 /* MenuBarImageGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = C41C1B4822B00A9800E7CF16 /* MenuBarImageGenerator.swift */; }; + C471E83328F9BB650021E251 /* PMWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4CCBA6B275C567B008C7055 /* PMWindowController.swift */; }; + C471E83428F9BB650021E251 /* VersionExtractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4B5635D276AB09000F12CCB /* VersionExtractor.swift */; }; + C471E83528F9BB650021E251 /* ValetProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4205A7D27F4D21800191A39 /* ValetProxy.swift */; }; + C471E83628F9BB650021E251 /* ValetProxy+Fake.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C0E8E927F88B80002D32A9 /* ValetProxy+Fake.swift */; }; + C471E83728F9BB650021E251 /* ProxyScanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C0E8E627F88B41002D32A9 /* ProxyScanner.swift */; }; + C471E83828F9BB650021E251 /* ValetProxyScanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = C484437A2804BB560041A78A /* ValetProxyScanner.swift */; }; + C471E83928F9BB650021E251 /* ValetSite.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4E4404527C56F4700D225E1 /* ValetSite.swift */; }; + C471E83A28F9BB650021E251 /* ValetSite+Fake.swift in Sources */ = {isa = PBXBuildFile; fileRef = C41C02A827E61A65009F26CB /* ValetSite+Fake.swift */; }; + C471E83B28F9BB650021E251 /* SiteScanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = C41C02A527E60D7A009F26CB /* SiteScanner.swift */; }; + C471E83C28F9BB650021E251 /* ValetSiteScanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C0E8E127F88B13002D32A9 /* ValetSiteScanner.swift */; }; + C471E83D28F9BB650021E251 /* FakeSiteScanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C0E8DE27F88AEB002D32A9 /* FakeSiteScanner.swift */; }; + C471E83F28F9BB650021E251 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = C41C1B3622B0097F00E7CF16 /* AppDelegate.swift */; }; + C471E84028F9BB650021E251 /* AppDelegate+MenuOutlets.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4B97B74275CF08C003F3378 /* AppDelegate+MenuOutlets.swift */; }; + C471E84128F9BB650021E251 /* AppDelegate+Notifications.swift in Sources */ = {isa = PBXBuildFile; fileRef = C436039F275E67610028EFC6 /* AppDelegate+Notifications.swift */; }; + C471E84228F9BB650021E251 /* AppDelegate+InterApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = C415D3E72770F692005EF286 /* AppDelegate+InterApp.swift */; }; + C471E84328F9BB650021E251 /* App.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4811D2322D70A4700B5F6B3 /* App.swift */; }; + C471E84428F9BB650021E251 /* App+ActivationPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4B97B77275CF1B5003F3378 /* App+ActivationPolicy.swift */; }; + C471E84528F9BB650021E251 /* App+GlobalHotkey.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4B97B7A275CF20A003F3378 /* App+GlobalHotkey.swift */; }; + C471E84628F9BB650021E251 /* InterAppHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4EED88827A48778006D7272 /* InterAppHandler.swift */; }; + C471E84728F9BB650021E251 /* Startup.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4D8016522B1584700C6DA1B /* Startup.swift */; }; + C471E84828F9BB650021E251 /* EnvironmentCheck.swift in Sources */ = {isa = PBXBuildFile; fileRef = C495F5AE28A42E080087F70A /* EnvironmentCheck.swift */; }; + C471E84928F9BB650021E251 /* AppUpdateChecker.swift in Sources */ = {isa = PBXBuildFile; fileRef = C46E206C28299B3800D909D6 /* AppUpdateChecker.swift */; }; + C471E84A28F9BB650021E251 /* AppVersion.swift in Sources */ = {isa = PBXBuildFile; fileRef = C40FE736282ABA4F00A302C2 /* AppVersion.swift */; }; + C471E84B28F9BB650021E251 /* ServicesManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C45E76132854A65300B4FE0C /* ServicesManager.swift */; }; + C471E84C28F9BB650021E251 /* EnvironmentManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4A6957528D23EE300A14CF8 /* EnvironmentManager.swift */; }; + C471E84D28F9BB650021E251 /* ActivePhpInstallation+Checks.swift in Sources */ = {isa = PBXBuildFile; fileRef = C40C7F2727721FF600DDDCDC /* ActivePhpInstallation+Checks.swift */; }; + C471E84E28F9BB650021E251 /* MainMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4811D2922D70F9A00B5F6B3 /* MainMenu.swift */; }; + C471E84F28F9BB650021E251 /* MainMenu+Startup.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C3ED402783497000AB15D8 /* MainMenu+Startup.swift */; }; + C471E85028F9BB650021E251 /* MainMenu+Async.swift in Sources */ = {isa = PBXBuildFile; fileRef = C44CCD4827AFF3B700CE40E5 /* MainMenu+Async.swift */; }; + C471E85128F9BB650021E251 /* MainMenu+Switcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4CE3BB727B31F2E0086CA49 /* MainMenu+Switcher.swift */; }; + C471E85228F9BB650021E251 /* MainMenu+FixMyValet.swift in Sources */ = {isa = PBXBuildFile; fileRef = C42C49DA27C2806F0074ABAC /* MainMenu+FixMyValet.swift */; }; + C471E85328F9BB650021E251 /* MainMenu+Actions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4F361602836BFD9003598CC /* MainMenu+Actions.swift */; }; + C471E85428F9BB650021E251 /* StatusMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = C47331A1247093B7009A0597 /* StatusMenu.swift */; }; + C471E85528F9BB650021E251 /* StatusMenu+Items.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C3643828AE4FCE00C0770E /* StatusMenu+Items.swift */; }; + C471E85628F9BB650021E251 /* DomainListCellProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = C464ADB1275A87CA003FCD53 /* DomainListCellProtocol.swift */; }; + C471E85728F9BB650021E251 /* DomainListTLSCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C44067FA27E25FD70045BD4E /* DomainListTLSCell.swift */; }; + C471E85828F9BB650021E251 /* DomainListNameCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C44067F427E2582B0045BD4E /* DomainListNameCell.swift */; }; + C471E85928F9BB650021E251 /* DomainListPhpCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C44067F627E258410045BD4E /* DomainListPhpCell.swift */; }; + C471E85A28F9BB650021E251 /* DomainListTypeCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C44067F827E2585E0045BD4E /* DomainListTypeCell.swift */; }; + C471E85B28F9BB650021E251 /* DomainListKindCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4AC51FB27E27F47008528CA /* DomainListKindCell.swift */; }; + C471E85C28F9BB650021E251 /* DomainListWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C464ADAB275A7A3F003FCD53 /* DomainListWindowController.swift */; }; + C471E85D28F9BB650021E251 /* DomainListVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = C464ADAE275A7A69003FCD53 /* DomainListVC.swift */; }; + C471E85E28F9BB650021E251 /* DomainListVC+ContextMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = C41E87192763D42300161EE0 /* DomainListVC+ContextMenu.swift */; }; + C471E85F28F9BB650021E251 /* DomainListVC+Actions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C41CA5EC2774F8EE00A2C80E /* DomainListVC+Actions.swift */; }; + C471E86028F9BB650021E251 /* SelectionVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4FE011028084FC200D1DE6D /* SelectionVC.swift */; }; + C471E86128F9BB650021E251 /* AddSiteVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4930849279F331F009C240B /* AddSiteVC.swift */; }; + C471E86228F9BB650021E251 /* AddProxyVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4D9F24A280B69E100DCD39A /* AddProxyVC.swift */; }; + C471E86328F9BB650021E251 /* PMTableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4A81CA328C67101008DD9D1 /* PMTableView.swift */; }; + C471E86428F9BB650021E251 /* Warning.swift in Sources */ = {isa = PBXBuildFile; fileRef = C47699F028A2F3150060FEB8 /* Warning.swift */; }; + C471E86528F9BB650021E251 /* WarningManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C47699EE28A2F2A30060FEB8 /* WarningManager.swift */; }; + C471E86628F9BB650021E251 /* WarningsWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C422DDAC28A2DAC600CEAC97 /* WarningsWindowController.swift */; }; + C471E86728F9BB650021E251 /* OnboardingWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4FACE82288F1F9700FC478F /* OnboardingWindowController.swift */; }; + C471E86828F9BB650021E251 /* PreferencesWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4998F092617633900B2526E /* PreferencesWindowController.swift */; }; + C471E86928F9BB650021E251 /* PreferencesWindowController+Hotkey.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4FACE7F288F1C0D00FC478F /* PreferencesWindowController+Hotkey.swift */; }; + C471E86A28F9BB650021E251 /* PrefsVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5420395826135DC100FB00FA /* PrefsVC.swift */; }; + C471E86B28F9BB650021E251 /* PreferenceName.swift in Sources */ = {isa = PBXBuildFile; fileRef = C450C8C528C919EC002A2B4B /* PreferenceName.swift */; }; + C471E86C28F9BB650021E251 /* Preferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5420395E2613607600FB00FA /* Preferences.swift */; }; + C471E86D28F9BB650021E251 /* CustomPrefs.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C3ED4227834C5200AB15D8 /* CustomPrefs.swift */; }; + C471E86E28F9BB650021E251 /* MenuBarIcons.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4068CA927B0890D00544CD5 /* MenuBarIcons.swift */; }; + C471E86F28F9BB650021E251 /* Stats.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4DEB7D327A5D60B00834718 /* Stats.swift */; }; + C471E87028F9BB650021E251 /* GlobalKeybindPreference.swift in Sources */ = {isa = PBXBuildFile; fileRef = C41CD0282628D8EE0065BBED /* GlobalKeybindPreference.swift */; }; + C471E87228F9BB650021E251 /* CheckboxPreferenceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54FCFD29276C8AA4004CE748 /* CheckboxPreferenceView.swift */; }; + C471E87428F9BB650021E251 /* SelectPreferenceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4068CA627B07A1300544CD5 /* SelectPreferenceView.swift */; }; + C471E87628F9BB650021E251 /* HotkeyPreferenceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54FCFD2F276C8DA4004CE748 /* HotkeyPreferenceView.swift */; }; + C471E87728F9BB650021E251 /* Keys.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4CDA892288F1A71007CE25F /* Keys.swift */; }; + C471E87828F9BB650021E251 /* TerminalProgressWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C44C198C276E3A1C0072762D /* TerminalProgressWindowController.swift */; }; + C471E87928F9BB650021E251 /* ProgressVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = C44A874728905BB000498BC4 /* ProgressVC.swift */; }; + C471E87B28F9BB650021E251 /* App+ConfigWatch.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C8E817276F54D8003AC782 /* App+ConfigWatch.swift */; }; + C471E87C28F9BB650021E251 /* PhpConfigWatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C8E81A276F54E5003AC782 /* PhpConfigWatcher.swift */; }; + C471E87D28F9BB650021E251 /* Preset.swift in Sources */ = {isa = PBXBuildFile; fileRef = C40C5C9B2846A40600E28255 /* Preset.swift */; }; + C471E87E28F9BB650021E251 /* PresetHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = C463E37F284930EE00422731 /* PresetHelper.swift */; }; + C471E87F28F9BB650021E251 /* WarningView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4297F7928970D59004C4630 /* WarningView.swift */; }; + C471E88028F9BB650021E251 /* WarningListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C422DDA928A2C49900CEAC97 /* WarningListView.swift */; }; + C471E88128F9BB650021E251 /* NoWarningsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C41C708C28AA7F7900E8D498 /* NoWarningsView.swift */; }; + C471E88228F9BB650021E251 /* OnboardingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4E9D2BF2878B336008FFDAD /* OnboardingView.swift */; }; + C471E88328F9BB650021E251 /* VersionPopoverView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C44264BF2850BD2A007400F1 /* VersionPopoverView.swift */; }; + C471E88428F9BB650021E251 /* NoDomainResultsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C40508AE28ADA23D008FAC1F /* NoDomainResultsView.swift */; }; + C471E88528F9BB650021E251 /* ServicesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4B6091C2853AB9700C95265 /* ServicesView.swift */; }; + C471E88628F9BB650021E251 /* StatsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4709CA128524B3400088BB8 /* StatsView.swift */; }; + C471E88728F9BB650021E251 /* SectionHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4B609192853AAD300C95265 /* SectionHeaderView.swift */; }; + C471E88828F9BB650021E251 /* HeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4EB53E428551F9B006F9937 /* HeaderView.swift */; }; + C471E88928F9BB650021E251 /* SwiftUIHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = C44264BD2850B86C007400F1 /* SwiftUIHelper.swift */; }; + C471E88B28F9BB650021E251 /* HotKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54D9E0AE27E4F51E003B9AD9 /* HotKey.swift */; }; + C471E88C28F9BB650021E251 /* HotKeysController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54D9E0AC27E4F51E003B9AD9 /* HotKeysController.swift */; }; + C471E88D28F9BB650021E251 /* Key.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54D9E0AD27E4F51E003B9AD9 /* Key.swift */; }; + C471E88E28F9BB650021E251 /* KeyCombo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54D9E0AF27E4F51E003B9AD9 /* KeyCombo.swift */; }; + C471E88F28F9BB650021E251 /* ModifierFlagsExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54D9E0B027E4F51E003B9AD9 /* ModifierFlagsExtension.swift */; }; + C471E89028F9BB8F0021E251 /* AlertableError.swift in Sources */ = {isa = PBXBuildFile; fileRef = C44CCD3F27AFE2FC00CE40E5 /* AlertableError.swift */; }; + C471E89128F9BB8F0021E251 /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4927F0A27B2DFC200C55AFD /* Errors.swift */; }; + C471E89228F9BB8F0021E251 /* Alert.swift in Sources */ = {isa = PBXBuildFile; fileRef = C476FF9722B0DD830098105B /* Alert.swift */; }; + C471E89328F9BB8F0021E251 /* Application.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54B48B5E275F66AE006D90C5 /* Application.swift */; }; + C471E89428F9BB8F0021E251 /* LocalNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = C474B00524C0E98C00066A22 /* LocalNotification.swift */; }; + C471E89528F9BB8F0021E251 /* MenuBarImageGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = C41C1B4822B00A9800E7CF16 /* MenuBarImageGenerator.swift */; }; + C471E89628F9BB8F0021E251 /* PMWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4CCBA6B275C567B008C7055 /* PMWindowController.swift */; }; + C471E89728F9BB8F0021E251 /* VersionExtractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4B5635D276AB09000F12CCB /* VersionExtractor.swift */; }; + C471E89828F9BB8F0021E251 /* ValetProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4205A7D27F4D21800191A39 /* ValetProxy.swift */; }; + C471E89928F9BB8F0021E251 /* ValetProxy+Fake.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C0E8E927F88B80002D32A9 /* ValetProxy+Fake.swift */; }; + C471E89A28F9BB8F0021E251 /* ProxyScanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C0E8E627F88B41002D32A9 /* ProxyScanner.swift */; }; + C471E89B28F9BB8F0021E251 /* ValetProxyScanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = C484437A2804BB560041A78A /* ValetProxyScanner.swift */; }; + C471E89C28F9BB8F0021E251 /* ValetSite.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4E4404527C56F4700D225E1 /* ValetSite.swift */; }; + C471E89D28F9BB8F0021E251 /* ValetSite+Fake.swift in Sources */ = {isa = PBXBuildFile; fileRef = C41C02A827E61A65009F26CB /* ValetSite+Fake.swift */; }; + C471E89E28F9BB8F0021E251 /* SiteScanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = C41C02A527E60D7A009F26CB /* SiteScanner.swift */; }; + C471E89F28F9BB8F0021E251 /* ValetSiteScanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C0E8E127F88B13002D32A9 /* ValetSiteScanner.swift */; }; + C471E8A028F9BB8F0021E251 /* FakeSiteScanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C0E8DE27F88AEB002D32A9 /* FakeSiteScanner.swift */; }; + C471E8A228F9BB8F0021E251 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = C41C1B3622B0097F00E7CF16 /* AppDelegate.swift */; }; + C471E8A328F9BB8F0021E251 /* AppDelegate+MenuOutlets.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4B97B74275CF08C003F3378 /* AppDelegate+MenuOutlets.swift */; }; + C471E8A428F9BB8F0021E251 /* AppDelegate+Notifications.swift in Sources */ = {isa = PBXBuildFile; fileRef = C436039F275E67610028EFC6 /* AppDelegate+Notifications.swift */; }; + C471E8A528F9BB8F0021E251 /* AppDelegate+InterApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = C415D3E72770F692005EF286 /* AppDelegate+InterApp.swift */; }; + C471E8A628F9BB8F0021E251 /* App.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4811D2322D70A4700B5F6B3 /* App.swift */; }; + C471E8A728F9BB8F0021E251 /* App+ActivationPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4B97B77275CF1B5003F3378 /* App+ActivationPolicy.swift */; }; + C471E8A828F9BB8F0021E251 /* App+GlobalHotkey.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4B97B7A275CF20A003F3378 /* App+GlobalHotkey.swift */; }; + C471E8A928F9BB8F0021E251 /* InterAppHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4EED88827A48778006D7272 /* InterAppHandler.swift */; }; + C471E8AA28F9BB8F0021E251 /* Startup.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4D8016522B1584700C6DA1B /* Startup.swift */; }; + C471E8AB28F9BB8F0021E251 /* EnvironmentCheck.swift in Sources */ = {isa = PBXBuildFile; fileRef = C495F5AE28A42E080087F70A /* EnvironmentCheck.swift */; }; + C471E8AC28F9BB8F0021E251 /* AppUpdateChecker.swift in Sources */ = {isa = PBXBuildFile; fileRef = C46E206C28299B3800D909D6 /* AppUpdateChecker.swift */; }; + C471E8AD28F9BB8F0021E251 /* AppVersion.swift in Sources */ = {isa = PBXBuildFile; fileRef = C40FE736282ABA4F00A302C2 /* AppVersion.swift */; }; + C471E8AE28F9BB8F0021E251 /* ServicesManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C45E76132854A65300B4FE0C /* ServicesManager.swift */; }; + C471E8AF28F9BB8F0021E251 /* EnvironmentManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4A6957528D23EE300A14CF8 /* EnvironmentManager.swift */; }; + C471E8B028F9BB8F0021E251 /* ActivePhpInstallation+Checks.swift in Sources */ = {isa = PBXBuildFile; fileRef = C40C7F2727721FF600DDDCDC /* ActivePhpInstallation+Checks.swift */; }; + C471E8B128F9BB8F0021E251 /* MainMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4811D2922D70F9A00B5F6B3 /* MainMenu.swift */; }; + C471E8B228F9BB8F0021E251 /* MainMenu+Startup.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C3ED402783497000AB15D8 /* MainMenu+Startup.swift */; }; + C471E8B328F9BB8F0021E251 /* MainMenu+Async.swift in Sources */ = {isa = PBXBuildFile; fileRef = C44CCD4827AFF3B700CE40E5 /* MainMenu+Async.swift */; }; + C471E8B428F9BB8F0021E251 /* MainMenu+Switcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4CE3BB727B31F2E0086CA49 /* MainMenu+Switcher.swift */; }; + C471E8B528F9BB8F0021E251 /* MainMenu+FixMyValet.swift in Sources */ = {isa = PBXBuildFile; fileRef = C42C49DA27C2806F0074ABAC /* MainMenu+FixMyValet.swift */; }; + C471E8B628F9BB8F0021E251 /* MainMenu+Actions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4F361602836BFD9003598CC /* MainMenu+Actions.swift */; }; + C471E8B728F9BB8F0021E251 /* StatusMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = C47331A1247093B7009A0597 /* StatusMenu.swift */; }; + C471E8B828F9BB8F0021E251 /* StatusMenu+Items.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C3643828AE4FCE00C0770E /* StatusMenu+Items.swift */; }; + C471E8B928F9BB8F0021E251 /* DomainListCellProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = C464ADB1275A87CA003FCD53 /* DomainListCellProtocol.swift */; }; + C471E8BA28F9BB8F0021E251 /* DomainListTLSCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C44067FA27E25FD70045BD4E /* DomainListTLSCell.swift */; }; + C471E8BB28F9BB8F0021E251 /* DomainListNameCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C44067F427E2582B0045BD4E /* DomainListNameCell.swift */; }; + C471E8BC28F9BB8F0021E251 /* DomainListPhpCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C44067F627E258410045BD4E /* DomainListPhpCell.swift */; }; + C471E8BD28F9BB8F0021E251 /* DomainListTypeCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C44067F827E2585E0045BD4E /* DomainListTypeCell.swift */; }; + C471E8BE28F9BB8F0021E251 /* DomainListKindCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4AC51FB27E27F47008528CA /* DomainListKindCell.swift */; }; + C471E8BF28F9BB8F0021E251 /* DomainListWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C464ADAB275A7A3F003FCD53 /* DomainListWindowController.swift */; }; + C471E8C028F9BB8F0021E251 /* DomainListVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = C464ADAE275A7A69003FCD53 /* DomainListVC.swift */; }; + C471E8C128F9BB8F0021E251 /* DomainListVC+ContextMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = C41E87192763D42300161EE0 /* DomainListVC+ContextMenu.swift */; }; + C471E8C228F9BB8F0021E251 /* DomainListVC+Actions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C41CA5EC2774F8EE00A2C80E /* DomainListVC+Actions.swift */; }; + C471E8C328F9BB8F0021E251 /* SelectionVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4FE011028084FC200D1DE6D /* SelectionVC.swift */; }; + C471E8C428F9BB8F0021E251 /* AddSiteVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4930849279F331F009C240B /* AddSiteVC.swift */; }; + C471E8C528F9BB8F0021E251 /* AddProxyVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4D9F24A280B69E100DCD39A /* AddProxyVC.swift */; }; + C471E8C628F9BB8F0021E251 /* PMTableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4A81CA328C67101008DD9D1 /* PMTableView.swift */; }; + C471E8C728F9BB8F0021E251 /* Warning.swift in Sources */ = {isa = PBXBuildFile; fileRef = C47699F028A2F3150060FEB8 /* Warning.swift */; }; + C471E8C828F9BB8F0021E251 /* WarningManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C47699EE28A2F2A30060FEB8 /* WarningManager.swift */; }; + C471E8C928F9BB8F0021E251 /* WarningsWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C422DDAC28A2DAC600CEAC97 /* WarningsWindowController.swift */; }; + C471E8CA28F9BB8F0021E251 /* OnboardingWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4FACE82288F1F9700FC478F /* OnboardingWindowController.swift */; }; + C471E8CB28F9BB8F0021E251 /* PreferencesWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4998F092617633900B2526E /* PreferencesWindowController.swift */; }; + C471E8CC28F9BB8F0021E251 /* PreferencesWindowController+Hotkey.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4FACE7F288F1C0D00FC478F /* PreferencesWindowController+Hotkey.swift */; }; + C471E8CD28F9BB8F0021E251 /* PrefsVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5420395826135DC100FB00FA /* PrefsVC.swift */; }; + C471E8CE28F9BB8F0021E251 /* PreferenceName.swift in Sources */ = {isa = PBXBuildFile; fileRef = C450C8C528C919EC002A2B4B /* PreferenceName.swift */; }; + C471E8CF28F9BB8F0021E251 /* Preferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5420395E2613607600FB00FA /* Preferences.swift */; }; + C471E8D028F9BB8F0021E251 /* CustomPrefs.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C3ED4227834C5200AB15D8 /* CustomPrefs.swift */; }; + C471E8D128F9BB8F0021E251 /* MenuBarIcons.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4068CA927B0890D00544CD5 /* MenuBarIcons.swift */; }; + C471E8D228F9BB8F0021E251 /* Stats.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4DEB7D327A5D60B00834718 /* Stats.swift */; }; + C471E8D328F9BB8F0021E251 /* GlobalKeybindPreference.swift in Sources */ = {isa = PBXBuildFile; fileRef = C41CD0282628D8EE0065BBED /* GlobalKeybindPreference.swift */; }; + C471E8D528F9BB8F0021E251 /* CheckboxPreferenceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54FCFD29276C8AA4004CE748 /* CheckboxPreferenceView.swift */; }; + C471E8D728F9BB8F0021E251 /* SelectPreferenceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4068CA627B07A1300544CD5 /* SelectPreferenceView.swift */; }; + C471E8D928F9BB8F0021E251 /* HotkeyPreferenceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54FCFD2F276C8DA4004CE748 /* HotkeyPreferenceView.swift */; }; + C471E8DA28F9BB8F0021E251 /* Keys.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4CDA892288F1A71007CE25F /* Keys.swift */; }; + C471E8DB28F9BB8F0021E251 /* TerminalProgressWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C44C198C276E3A1C0072762D /* TerminalProgressWindowController.swift */; }; + C471E8DC28F9BB8F0021E251 /* ProgressVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = C44A874728905BB000498BC4 /* ProgressVC.swift */; }; + C471E8DE28F9BB8F0021E251 /* App+ConfigWatch.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C8E817276F54D8003AC782 /* App+ConfigWatch.swift */; }; + C471E8DF28F9BB8F0021E251 /* PhpConfigWatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C8E81A276F54E5003AC782 /* PhpConfigWatcher.swift */; }; + C471E8E028F9BB8F0021E251 /* Preset.swift in Sources */ = {isa = PBXBuildFile; fileRef = C40C5C9B2846A40600E28255 /* Preset.swift */; }; + C471E8E128F9BB8F0021E251 /* PresetHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = C463E37F284930EE00422731 /* PresetHelper.swift */; }; + C471E8E228F9BB8F0021E251 /* WarningView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4297F7928970D59004C4630 /* WarningView.swift */; }; + C471E8E328F9BB8F0021E251 /* WarningListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C422DDA928A2C49900CEAC97 /* WarningListView.swift */; }; + C471E8E428F9BB8F0021E251 /* NoWarningsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C41C708C28AA7F7900E8D498 /* NoWarningsView.swift */; }; + C471E8E528F9BB8F0021E251 /* OnboardingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4E9D2BF2878B336008FFDAD /* OnboardingView.swift */; }; + C471E8E628F9BB8F0021E251 /* VersionPopoverView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C44264BF2850BD2A007400F1 /* VersionPopoverView.swift */; }; + C471E8E728F9BB8F0021E251 /* NoDomainResultsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C40508AE28ADA23D008FAC1F /* NoDomainResultsView.swift */; }; + C471E8E828F9BB8F0021E251 /* ServicesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4B6091C2853AB9700C95265 /* ServicesView.swift */; }; + C471E8E928F9BB8F0021E251 /* StatsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4709CA128524B3400088BB8 /* StatsView.swift */; }; + C471E8EA28F9BB8F0021E251 /* SectionHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4B609192853AAD300C95265 /* SectionHeaderView.swift */; }; + C471E8EB28F9BB8F0021E251 /* HeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4EB53E428551F9B006F9937 /* HeaderView.swift */; }; + C471E8EC28F9BB8F0021E251 /* SwiftUIHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = C44264BD2850B86C007400F1 /* SwiftUIHelper.swift */; }; + C471E8EE28F9BB8F0021E251 /* HotKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54D9E0AE27E4F51E003B9AD9 /* HotKey.swift */; }; + C471E8EF28F9BB8F0021E251 /* HotKeysController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54D9E0AC27E4F51E003B9AD9 /* HotKeysController.swift */; }; + C471E8F028F9BB8F0021E251 /* Key.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54D9E0AD27E4F51E003B9AD9 /* Key.swift */; }; + C471E8F128F9BB8F0021E251 /* KeyCombo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54D9E0AF27E4F51E003B9AD9 /* KeyCombo.swift */; }; + C471E8F228F9BB8F0021E251 /* ModifierFlagsExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54D9E0B027E4F51E003B9AD9 /* ModifierFlagsExtension.swift */; }; C473319F2470923A009A0597 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = C473319E2470923A009A0597 /* Localizable.strings */; }; C47331A2247093B7009A0597 /* StatusMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = C47331A1247093B7009A0597 /* StatusMenu.swift */; }; C474B00624C0E98C00066A22 /* LocalNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = C474B00524C0E98C00066A22 /* LocalNotification.swift */; }; @@ -335,6 +623,20 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + C471E7B128F9B4940021E251 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = C41C1B2B22B0097F00E7CF16 /* Project object */; + proxyType = 1; + remoteGlobalIDString = C41C1B3222B0097F00E7CF16; + remoteInfo = "PHP Monitor"; + }; + C471E7C228F9B90F0021E251 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = C41C1B2B22B0097F00E7CF16 /* Project object */; + proxyType = 1; + remoteGlobalIDString = C41C1B3222B0097F00E7CF16; + remoteInfo = "PHP Monitor"; + }; C4F7807E25D7F84B000DBC97 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = C41C1B2B22B0097F00E7CF16 /* Project object */; @@ -446,7 +748,11 @@ C46FA9872822EFDC00D78807 /* PhpConfigurationFile.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhpConfigurationFile.swift; sourceTree = ""; }; C46FA98A2822F08F00D78807 /* PhpConfigurationTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhpConfigurationTest.swift; sourceTree = ""; }; C4709CA128524B3400088BB8 /* StatsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatsView.swift; sourceTree = ""; }; - C471E79228F9B1D30021E251 /* PHP Monitor.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; name = "PHP Monitor.xctestplan"; path = "PHP Monitor.xcodeproj/PHP Monitor.xctestplan"; sourceTree = ""; }; + C471E79228F9B1D30021E251 /* PHP Monitor.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = "PHP Monitor.xctestplan"; sourceTree = ""; }; + C471E7AD28F9B4940021E251 /* Feature Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Feature Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + C471E7AF28F9B4940021E251 /* EmptyTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmptyTest.swift; sourceTree = ""; }; + C471E7BC28F9B90F0021E251 /* UI Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "UI Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + C471E7BE28F9B90F0021E251 /* UI_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UI_Tests.swift; sourceTree = ""; }; C473319E2470923A009A0597 /* Localizable.strings */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; path = Localizable.strings; sourceTree = ""; }; C47331A1247093B7009A0597 /* StatusMenu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusMenu.swift; sourceTree = ""; }; C474B00524C0E98C00066A22 /* LocalNotification.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalNotification.swift; sourceTree = ""; }; @@ -525,8 +831,7 @@ C4F30B06278E195800755FCE /* brew-services.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "brew-services.json"; sourceTree = ""; }; C4F361602836BFD9003598CC /* MainMenu+Actions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MainMenu+Actions.swift"; sourceTree = ""; }; C4F5FBCC28218C93001065C5 /* .swiftlint.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = .swiftlint.yml; sourceTree = ""; }; - C4F7807925D7F84B000DBC97 /* phpmon-tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "phpmon-tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; - C4F7807D25D7F84B000DBC97 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + C4F7807925D7F84B000DBC97 /* Unit Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Unit Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; C4F7809B25D80344000DBC97 /* CommandTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CommandTest.swift; sourceTree = ""; }; C4F780A725D80AE8000DBC97 /* php.ini */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = php.ini; sourceTree = ""; }; C4F780AD25D80B37000DBC97 /* PhpExtensionTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhpExtensionTest.swift; sourceTree = ""; }; @@ -546,6 +851,20 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + C471E7AA28F9B4940021E251 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C471E7B928F9B90F0021E251 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; C4F7807625D7F84B000DBC97 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -701,10 +1020,9 @@ C4168F4427ADB4A3003B6C39 /* DEVELOPER.md */, 54D9E0C027E4F5E9003B9AD9 /* LICENSE */, C4F5FBCC28218C93001065C5 /* .swiftlint.yml */, - C471E79228F9B1D30021E251 /* PHP Monitor.xctestplan */, C4E713572570151400007428 /* docs */, C41C1B3522B0097F00E7CF16 /* phpmon */, - C4F7807A25D7F84B000DBC97 /* phpmon-tests */, + C471E79628F9B4260021E251 /* tests */, C41C1B3422B0097F00E7CF16 /* Products */, C4D309E72770EF2F00958BCF /* Frameworks */, ); @@ -714,7 +1032,9 @@ isa = PBXGroup; children = ( C41C1B3322B0097F00E7CF16 /* PHP Monitor.app */, - C4F7807925D7F84B000DBC97 /* phpmon-tests.xctest */, + C4F7807925D7F84B000DBC97 /* Unit Tests.xctest */, + C471E7AD28F9B4940021E251 /* Feature Tests.xctest */, + C471E7BC28F9B90F0021E251 /* UI Tests.xctest */, ); name = Products; sourceTree = ""; @@ -916,6 +1236,33 @@ path = Command; sourceTree = ""; }; + C471E79628F9B4260021E251 /* tests */ = { + isa = PBXGroup; + children = ( + C471E79228F9B1D30021E251 /* PHP Monitor.xctestplan */, + C4F7807A25D7F84B000DBC97 /* unit */, + C471E7AE28F9B4940021E251 /* feature */, + C471E7BD28F9B90F0021E251 /* ui */, + ); + path = tests; + sourceTree = ""; + }; + C471E7AE28F9B4940021E251 /* feature */ = { + isa = PBXGroup; + children = ( + C471E7AF28F9B4940021E251 /* EmptyTest.swift */, + ); + path = feature; + sourceTree = ""; + }; + C471E7BD28F9B90F0021E251 /* ui */ = { + isa = PBXGroup; + children = ( + C471E7BE28F9B90F0021E251 /* UI_Tests.swift */, + ); + path = ui; + sourceTree = ""; + }; C47331A0247093AC009A0597 /* Menu */ = { isa = PBXGroup; children = ( @@ -1223,18 +1570,17 @@ path = Homebrew; sourceTree = ""; }; - C4F7807A25D7F84B000DBC97 /* phpmon-tests */ = { + C4F7807A25D7F84B000DBC97 /* unit */ = { isa = PBXGroup; children = ( - C471E6D928F9AFC20021E251 /* Testables */, - C4F7807D25D7F84B000DBC97 /* Info.plist */, C43A8A1925D9CD1000591B77 /* Utility.swift */, + C471E6D928F9AFC20021E251 /* Testables */, C40C7F1C27720E1400DDDCDC /* Test Files */, C4C1019927C65A4D001FACC2 /* Commands */, C4C1019827C65A1A001FACC2 /* Versions */, C4C1019727C65A11001FACC2 /* Parsers */, ); - path = "phpmon-tests"; + path = unit; sourceTree = ""; }; C4F787A628EF811000790735 /* Shell */ = { @@ -1296,9 +1642,45 @@ productReference = C41C1B3322B0097F00E7CF16 /* PHP Monitor.app */; productType = "com.apple.product-type.application"; }; - C4F7807825D7F84B000DBC97 /* phpmon-tests */ = { + C471E7AC28F9B4940021E251 /* Feature Tests */ = { isa = PBXNativeTarget; - buildConfigurationList = C4F7808025D7F84B000DBC97 /* Build configuration list for PBXNativeTarget "phpmon-tests" */; + buildConfigurationList = C471E7B328F9B4940021E251 /* Build configuration list for PBXNativeTarget "Feature Tests" */; + buildPhases = ( + C471E7A928F9B4940021E251 /* Sources */, + C471E7AA28F9B4940021E251 /* Frameworks */, + C471E7AB28F9B4940021E251 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + C471E7B228F9B4940021E251 /* PBXTargetDependency */, + ); + name = "Feature Tests"; + productName = "Feature Tests"; + productReference = C471E7AD28F9B4940021E251 /* Feature Tests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + C471E7BB28F9B90F0021E251 /* UI Tests */ = { + isa = PBXNativeTarget; + buildConfigurationList = C471E7C428F9B90F0021E251 /* Build configuration list for PBXNativeTarget "UI Tests" */; + buildPhases = ( + C471E7B828F9B90F0021E251 /* Sources */, + C471E7B928F9B90F0021E251 /* Frameworks */, + C471E7BA28F9B90F0021E251 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + C471E7C328F9B90F0021E251 /* PBXTargetDependency */, + ); + name = "UI Tests"; + productName = "UI Tests"; + productReference = C471E7BC28F9B90F0021E251 /* UI Tests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; + C4F7807825D7F84B000DBC97 /* Unit Tests */ = { + isa = PBXNativeTarget; + buildConfigurationList = C4F7808025D7F84B000DBC97 /* Build configuration list for PBXNativeTarget "Unit Tests" */; buildPhases = ( C4F7807525D7F84B000DBC97 /* Sources */, C4F7807625D7F84B000DBC97 /* Frameworks */, @@ -1309,11 +1691,11 @@ dependencies = ( C4F7807F25D7F84B000DBC97 /* PBXTargetDependency */, ); - name = "phpmon-tests"; + name = "Unit Tests"; packageProductDependencies = ( ); productName = "phpmon-tests"; - productReference = C4F7807925D7F84B000DBC97 /* phpmon-tests.xctest */; + productReference = C4F7807925D7F84B000DBC97 /* Unit Tests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; /* End PBXNativeTarget section */ @@ -1322,13 +1704,20 @@ C41C1B2B22B0097F00E7CF16 /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 1320; + LastSwiftUpdateCheck = 1400; LastUpgradeCheck = 1400; ORGANIZATIONNAME = "Nico Verbruggen"; TargetAttributes = { C41C1B3222B0097F00E7CF16 = { CreatedOnToolsVersion = 10.2.1; }; + C471E7AC28F9B4940021E251 = { + CreatedOnToolsVersion = 14.0.1; + }; + C471E7BB28F9B90F0021E251 = { + CreatedOnToolsVersion = 14.0.1; + TestTargetID = C41C1B3222B0097F00E7CF16; + }; C4F7807825D7F84B000DBC97 = { CreatedOnToolsVersion = 12.4; }; @@ -1350,7 +1739,9 @@ projectRoot = ""; targets = ( C41C1B3222B0097F00E7CF16 /* PHP Monitor */, - C4F7807825D7F84B000DBC97 /* phpmon-tests */, + C4F7807825D7F84B000DBC97 /* Unit Tests */, + C471E7AC28F9B4940021E251 /* Feature Tests */, + C471E7BB28F9B90F0021E251 /* UI Tests */, ); }; /* End PBXProject section */ @@ -1374,6 +1765,20 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + C471E7AB28F9B4940021E251 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C471E7BA28F9B90F0021E251 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; C4F7807725D7F84B000DBC97 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -1570,6 +1975,308 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + C471E7A928F9B4940021E251 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C471E82D28F9BB650021E251 /* AlertableError.swift in Sources */, + C471E82E28F9BB650021E251 /* Errors.swift in Sources */, + C471E82F28F9BB650021E251 /* Alert.swift in Sources */, + C471E83028F9BB650021E251 /* Application.swift in Sources */, + C471E83128F9BB650021E251 /* LocalNotification.swift in Sources */, + C471E83228F9BB650021E251 /* MenuBarImageGenerator.swift in Sources */, + C471E83328F9BB650021E251 /* PMWindowController.swift in Sources */, + C471E83428F9BB650021E251 /* VersionExtractor.swift in Sources */, + C471E83528F9BB650021E251 /* ValetProxy.swift in Sources */, + C471E83628F9BB650021E251 /* ValetProxy+Fake.swift in Sources */, + C471E83728F9BB650021E251 /* ProxyScanner.swift in Sources */, + C471E83828F9BB650021E251 /* ValetProxyScanner.swift in Sources */, + C471E83928F9BB650021E251 /* ValetSite.swift in Sources */, + C471E83A28F9BB650021E251 /* ValetSite+Fake.swift in Sources */, + C471E83B28F9BB650021E251 /* SiteScanner.swift in Sources */, + C471E83C28F9BB650021E251 /* ValetSiteScanner.swift in Sources */, + C471E83D28F9BB650021E251 /* FakeSiteScanner.swift in Sources */, + C471E83F28F9BB650021E251 /* AppDelegate.swift in Sources */, + C471E84028F9BB650021E251 /* AppDelegate+MenuOutlets.swift in Sources */, + C471E84128F9BB650021E251 /* AppDelegate+Notifications.swift in Sources */, + C471E84228F9BB650021E251 /* AppDelegate+InterApp.swift in Sources */, + C471E84328F9BB650021E251 /* App.swift in Sources */, + C471E84428F9BB650021E251 /* App+ActivationPolicy.swift in Sources */, + C471E84528F9BB650021E251 /* App+GlobalHotkey.swift in Sources */, + C471E84628F9BB650021E251 /* InterAppHandler.swift in Sources */, + C471E84728F9BB650021E251 /* Startup.swift in Sources */, + C471E84828F9BB650021E251 /* EnvironmentCheck.swift in Sources */, + C471E84928F9BB650021E251 /* AppUpdateChecker.swift in Sources */, + C471E84A28F9BB650021E251 /* AppVersion.swift in Sources */, + C471E84B28F9BB650021E251 /* ServicesManager.swift in Sources */, + C471E84C28F9BB650021E251 /* EnvironmentManager.swift in Sources */, + C471E84D28F9BB650021E251 /* ActivePhpInstallation+Checks.swift in Sources */, + C471E84E28F9BB650021E251 /* MainMenu.swift in Sources */, + C471E84F28F9BB650021E251 /* MainMenu+Startup.swift in Sources */, + C471E85028F9BB650021E251 /* MainMenu+Async.swift in Sources */, + C471E85128F9BB650021E251 /* MainMenu+Switcher.swift in Sources */, + C471E85228F9BB650021E251 /* MainMenu+FixMyValet.swift in Sources */, + C471E85328F9BB650021E251 /* MainMenu+Actions.swift in Sources */, + C471E85428F9BB650021E251 /* StatusMenu.swift in Sources */, + C471E85528F9BB650021E251 /* StatusMenu+Items.swift in Sources */, + C471E85628F9BB650021E251 /* DomainListCellProtocol.swift in Sources */, + C471E85728F9BB650021E251 /* DomainListTLSCell.swift in Sources */, + C471E85828F9BB650021E251 /* DomainListNameCell.swift in Sources */, + C471E85928F9BB650021E251 /* DomainListPhpCell.swift in Sources */, + C471E85A28F9BB650021E251 /* DomainListTypeCell.swift in Sources */, + C471E85B28F9BB650021E251 /* DomainListKindCell.swift in Sources */, + C471E85C28F9BB650021E251 /* DomainListWindowController.swift in Sources */, + C471E85D28F9BB650021E251 /* DomainListVC.swift in Sources */, + C471E85E28F9BB650021E251 /* DomainListVC+ContextMenu.swift in Sources */, + C471E85F28F9BB650021E251 /* DomainListVC+Actions.swift in Sources */, + C471E86028F9BB650021E251 /* SelectionVC.swift in Sources */, + C471E86128F9BB650021E251 /* AddSiteVC.swift in Sources */, + C471E86228F9BB650021E251 /* AddProxyVC.swift in Sources */, + C471E86328F9BB650021E251 /* PMTableView.swift in Sources */, + C471E86428F9BB650021E251 /* Warning.swift in Sources */, + C471E86528F9BB650021E251 /* WarningManager.swift in Sources */, + C471E86628F9BB650021E251 /* WarningsWindowController.swift in Sources */, + C471E86728F9BB650021E251 /* OnboardingWindowController.swift in Sources */, + C471E86828F9BB650021E251 /* PreferencesWindowController.swift in Sources */, + C471E86928F9BB650021E251 /* PreferencesWindowController+Hotkey.swift in Sources */, + C471E86A28F9BB650021E251 /* PrefsVC.swift in Sources */, + C471E86B28F9BB650021E251 /* PreferenceName.swift in Sources */, + C471E86C28F9BB650021E251 /* Preferences.swift in Sources */, + C471E86D28F9BB650021E251 /* CustomPrefs.swift in Sources */, + C471E86E28F9BB650021E251 /* MenuBarIcons.swift in Sources */, + C471E86F28F9BB650021E251 /* Stats.swift in Sources */, + C471E87028F9BB650021E251 /* GlobalKeybindPreference.swift in Sources */, + C471E87228F9BB650021E251 /* CheckboxPreferenceView.swift in Sources */, + C471E87428F9BB650021E251 /* SelectPreferenceView.swift in Sources */, + C471E87628F9BB650021E251 /* HotkeyPreferenceView.swift in Sources */, + C471E87728F9BB650021E251 /* Keys.swift in Sources */, + C471E87828F9BB650021E251 /* TerminalProgressWindowController.swift in Sources */, + C471E87928F9BB650021E251 /* ProgressVC.swift in Sources */, + C471E87B28F9BB650021E251 /* App+ConfigWatch.swift in Sources */, + C471E87C28F9BB650021E251 /* PhpConfigWatcher.swift in Sources */, + C471E87D28F9BB650021E251 /* Preset.swift in Sources */, + C471E87E28F9BB650021E251 /* PresetHelper.swift in Sources */, + C471E87F28F9BB650021E251 /* WarningView.swift in Sources */, + C471E88028F9BB650021E251 /* WarningListView.swift in Sources */, + C471E88128F9BB650021E251 /* NoWarningsView.swift in Sources */, + C471E88228F9BB650021E251 /* OnboardingView.swift in Sources */, + C471E88328F9BB650021E251 /* VersionPopoverView.swift in Sources */, + C471E88428F9BB650021E251 /* NoDomainResultsView.swift in Sources */, + C471E88528F9BB650021E251 /* ServicesView.swift in Sources */, + C471E88628F9BB650021E251 /* StatsView.swift in Sources */, + C471E88728F9BB650021E251 /* SectionHeaderView.swift in Sources */, + C471E88828F9BB650021E251 /* HeaderView.swift in Sources */, + C471E88928F9BB650021E251 /* SwiftUIHelper.swift in Sources */, + C471E88B28F9BB650021E251 /* HotKey.swift in Sources */, + C471E88C28F9BB650021E251 /* HotKeysController.swift in Sources */, + C471E88D28F9BB650021E251 /* Key.swift in Sources */, + C471E88E28F9BB650021E251 /* KeyCombo.swift in Sources */, + C471E88F28F9BB650021E251 /* ModifierFlagsExtension.swift in Sources */, + C471E7E928F9BAC20021E251 /* Paths.swift in Sources */, + C471E7FE28F9BACE0021E251 /* HomebrewPackage.swift in Sources */, + C471E7D828F9BA8F0021E251 /* FileSystemProtocol.swift in Sources */, + C471E7F328F9BAC70021E251 /* PhpHelper.swift in Sources */, + C471E7E728F9BAC20021E251 /* Constants.swift in Sources */, + C471E81628F9BAE80021E251 /* DateExtension.swift in Sources */, + C471E7D728F9BA8F0021E251 /* TestableFileSystem.swift in Sources */, + C471E81A28F9BAE80021E251 /* TimeIntervalExtension.swift in Sources */, + C471E7E128F9BAAB0021E251 /* RealCommand.swift in Sources */, + C471E7E228F9BAAB0021E251 /* ActiveCommand.swift in Sources */, + C471E80A28F9BADC0021E251 /* CreatedFromFile.swift in Sources */, + C471E80528F9BAD40021E251 /* ActivePhpInstallation.swift in Sources */, + C471E80628F9BAD40021E251 /* PhpInstallation.swift in Sources */, + C471E81828F9BAE80021E251 /* StringExtension.swift in Sources */, + C471E7FA28F9BACB0021E251 /* InternalSwitcher.swift in Sources */, + C471E82628F9BB2E0021E251 /* ComposerJson.swift in Sources */, + C471E82428F9BB2E0021E251 /* PhpFrameworks.swift in Sources */, + C471E7E828F9BAC20021E251 /* Actions.swift in Sources */, + C471E82528F9BB2E0021E251 /* ComposerWindow.swift in Sources */, + C471E80828F9BAD40021E251 /* PhpExtension.swift in Sources */, + C471E7F928F9BACB0021E251 /* PhpSwitcher.swift in Sources */, + C471E82A28F9BB330021E251 /* DomainListable.swift in Sources */, + C471E82728F9BB310021E251 /* HomebrewDiagnostics.swift in Sources */, + C471E81C28F9BB250021E251 /* BetterAlert.swift in Sources */, + C471E7DB28F9BA8F0021E251 /* RealShell.swift in Sources */, + C471E7FF28F9BAD10021E251 /* Xdebug.swift in Sources */, + C471E7F228F9BAC70021E251 /* PhpEnv.swift in Sources */, + C471E7E628F9BAC20021E251 /* Process.swift in Sources */, + C471E81928F9BAE80021E251 /* NSMenuItemExtension.swift in Sources */, + C471E7D928F9BA8F0021E251 /* TestableShell.swift in Sources */, + C471E81428F9BAE80021E251 /* NSWindowExtension.swift in Sources */, + C471E7D328F9BA8F0021E251 /* ActiveShell.swift in Sources */, + C471E7DE28F9BAA30021E251 /* CommandProtocol.swift in Sources */, + C471E7B028F9B4940021E251 /* EmptyTest.swift in Sources */, + C471E81B28F9BB250021E251 /* BetterAlertVC.swift in Sources */, + C471E82928F9BB330021E251 /* Valet.swift in Sources */, + C471E80728F9BAD40021E251 /* PhpConfigurationFile.swift in Sources */, + C471E7D528F9BA8F0021E251 /* TestableConfigurations.swift in Sources */, + C471E7E328F9BAC20021E251 /* Logger.swift in Sources */, + C471E7FD28F9BACE0021E251 /* HomebrewService.swift in Sources */, + C471E7E428F9BAC20021E251 /* Helpers.swift in Sources */, + C471E82028F9BB290021E251 /* NginxConfigurationFile.swift in Sources */, + C471E7D428F9BA8F0021E251 /* ActiveFileSystem.swift in Sources */, + C471E81528F9BAE80021E251 /* ArrayExtension.swift in Sources */, + C471E7DA28F9BA8F0021E251 /* TestableCommand.swift in Sources */, + C471E7E528F9BAC20021E251 /* Events.swift in Sources */, + C471E7D628F9BA8F0021E251 /* RealFileSystem.swift in Sources */, + C471E81728F9BAE80021E251 /* NSMenuExtension.swift in Sources */, + C471E81328F9BAE80021E251 /* XibLoadable.swift in Sources */, + C471E7F128F9BAC70021E251 /* PhpVersionNumber.swift in Sources */, + C471E7DC28F9BA8F0021E251 /* ShellProtocol.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C471E7B828F9B90F0021E251 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C471E89028F9BB8F0021E251 /* AlertableError.swift in Sources */, + C471E89128F9BB8F0021E251 /* Errors.swift in Sources */, + C471E89228F9BB8F0021E251 /* Alert.swift in Sources */, + C471E89328F9BB8F0021E251 /* Application.swift in Sources */, + C471E89428F9BB8F0021E251 /* LocalNotification.swift in Sources */, + C471E89528F9BB8F0021E251 /* MenuBarImageGenerator.swift in Sources */, + C471E89628F9BB8F0021E251 /* PMWindowController.swift in Sources */, + C471E89728F9BB8F0021E251 /* VersionExtractor.swift in Sources */, + C471E89828F9BB8F0021E251 /* ValetProxy.swift in Sources */, + C471E89928F9BB8F0021E251 /* ValetProxy+Fake.swift in Sources */, + C471E89A28F9BB8F0021E251 /* ProxyScanner.swift in Sources */, + C471E89B28F9BB8F0021E251 /* ValetProxyScanner.swift in Sources */, + C471E89C28F9BB8F0021E251 /* ValetSite.swift in Sources */, + C471E89D28F9BB8F0021E251 /* ValetSite+Fake.swift in Sources */, + C471E89E28F9BB8F0021E251 /* SiteScanner.swift in Sources */, + C471E89F28F9BB8F0021E251 /* ValetSiteScanner.swift in Sources */, + C471E8A028F9BB8F0021E251 /* FakeSiteScanner.swift in Sources */, + C471E8A228F9BB8F0021E251 /* AppDelegate.swift in Sources */, + C471E8A328F9BB8F0021E251 /* AppDelegate+MenuOutlets.swift in Sources */, + C471E8A428F9BB8F0021E251 /* AppDelegate+Notifications.swift in Sources */, + C471E8A528F9BB8F0021E251 /* AppDelegate+InterApp.swift in Sources */, + C471E8A628F9BB8F0021E251 /* App.swift in Sources */, + C471E8A728F9BB8F0021E251 /* App+ActivationPolicy.swift in Sources */, + C471E8A828F9BB8F0021E251 /* App+GlobalHotkey.swift in Sources */, + C471E8A928F9BB8F0021E251 /* InterAppHandler.swift in Sources */, + C471E8AA28F9BB8F0021E251 /* Startup.swift in Sources */, + C471E8AB28F9BB8F0021E251 /* EnvironmentCheck.swift in Sources */, + C471E8AC28F9BB8F0021E251 /* AppUpdateChecker.swift in Sources */, + C471E8AD28F9BB8F0021E251 /* AppVersion.swift in Sources */, + C471E8AE28F9BB8F0021E251 /* ServicesManager.swift in Sources */, + C471E8AF28F9BB8F0021E251 /* EnvironmentManager.swift in Sources */, + C471E8B028F9BB8F0021E251 /* ActivePhpInstallation+Checks.swift in Sources */, + C471E8B128F9BB8F0021E251 /* MainMenu.swift in Sources */, + C471E8B228F9BB8F0021E251 /* MainMenu+Startup.swift in Sources */, + C471E8B328F9BB8F0021E251 /* MainMenu+Async.swift in Sources */, + C471E8B428F9BB8F0021E251 /* MainMenu+Switcher.swift in Sources */, + C471E8B528F9BB8F0021E251 /* MainMenu+FixMyValet.swift in Sources */, + C471E8B628F9BB8F0021E251 /* MainMenu+Actions.swift in Sources */, + C471E8B728F9BB8F0021E251 /* StatusMenu.swift in Sources */, + C471E8B828F9BB8F0021E251 /* StatusMenu+Items.swift in Sources */, + C471E8B928F9BB8F0021E251 /* DomainListCellProtocol.swift in Sources */, + C471E8BA28F9BB8F0021E251 /* DomainListTLSCell.swift in Sources */, + C471E8BB28F9BB8F0021E251 /* DomainListNameCell.swift in Sources */, + C471E8BC28F9BB8F0021E251 /* DomainListPhpCell.swift in Sources */, + C471E8BD28F9BB8F0021E251 /* DomainListTypeCell.swift in Sources */, + C471E8BE28F9BB8F0021E251 /* DomainListKindCell.swift in Sources */, + C471E8BF28F9BB8F0021E251 /* DomainListWindowController.swift in Sources */, + C471E8C028F9BB8F0021E251 /* DomainListVC.swift in Sources */, + C471E8C128F9BB8F0021E251 /* DomainListVC+ContextMenu.swift in Sources */, + C471E8C228F9BB8F0021E251 /* DomainListVC+Actions.swift in Sources */, + C471E8C328F9BB8F0021E251 /* SelectionVC.swift in Sources */, + C471E8C428F9BB8F0021E251 /* AddSiteVC.swift in Sources */, + C471E8C528F9BB8F0021E251 /* AddProxyVC.swift in Sources */, + C471E8C628F9BB8F0021E251 /* PMTableView.swift in Sources */, + C471E8C728F9BB8F0021E251 /* Warning.swift in Sources */, + C471E8C828F9BB8F0021E251 /* WarningManager.swift in Sources */, + C471E8C928F9BB8F0021E251 /* WarningsWindowController.swift in Sources */, + C471E8CA28F9BB8F0021E251 /* OnboardingWindowController.swift in Sources */, + C471E8CB28F9BB8F0021E251 /* PreferencesWindowController.swift in Sources */, + C471E8CC28F9BB8F0021E251 /* PreferencesWindowController+Hotkey.swift in Sources */, + C471E8CD28F9BB8F0021E251 /* PrefsVC.swift in Sources */, + C471E8CE28F9BB8F0021E251 /* PreferenceName.swift in Sources */, + C471E8CF28F9BB8F0021E251 /* Preferences.swift in Sources */, + C471E8D028F9BB8F0021E251 /* CustomPrefs.swift in Sources */, + C471E8D128F9BB8F0021E251 /* MenuBarIcons.swift in Sources */, + C471E8D228F9BB8F0021E251 /* Stats.swift in Sources */, + C471E8D328F9BB8F0021E251 /* GlobalKeybindPreference.swift in Sources */, + C471E8D528F9BB8F0021E251 /* CheckboxPreferenceView.swift in Sources */, + C471E8D728F9BB8F0021E251 /* SelectPreferenceView.swift in Sources */, + C471E8D928F9BB8F0021E251 /* HotkeyPreferenceView.swift in Sources */, + C471E8DA28F9BB8F0021E251 /* Keys.swift in Sources */, + C471E8DB28F9BB8F0021E251 /* TerminalProgressWindowController.swift in Sources */, + C471E8DC28F9BB8F0021E251 /* ProgressVC.swift in Sources */, + C471E8DE28F9BB8F0021E251 /* App+ConfigWatch.swift in Sources */, + C471E8DF28F9BB8F0021E251 /* PhpConfigWatcher.swift in Sources */, + C471E8E028F9BB8F0021E251 /* Preset.swift in Sources */, + C471E8E128F9BB8F0021E251 /* PresetHelper.swift in Sources */, + C471E8E228F9BB8F0021E251 /* WarningView.swift in Sources */, + C471E8E328F9BB8F0021E251 /* WarningListView.swift in Sources */, + C471E8E428F9BB8F0021E251 /* NoWarningsView.swift in Sources */, + C471E8E528F9BB8F0021E251 /* OnboardingView.swift in Sources */, + C471E8E628F9BB8F0021E251 /* VersionPopoverView.swift in Sources */, + C471E8E728F9BB8F0021E251 /* NoDomainResultsView.swift in Sources */, + C471E8E828F9BB8F0021E251 /* ServicesView.swift in Sources */, + C471E8E928F9BB8F0021E251 /* StatsView.swift in Sources */, + C471E8EA28F9BB8F0021E251 /* SectionHeaderView.swift in Sources */, + C471E8EB28F9BB8F0021E251 /* HeaderView.swift in Sources */, + C471E8EC28F9BB8F0021E251 /* SwiftUIHelper.swift in Sources */, + C471E8EE28F9BB8F0021E251 /* HotKey.swift in Sources */, + C471E8EF28F9BB8F0021E251 /* HotKeysController.swift in Sources */, + C471E8F028F9BB8F0021E251 /* Key.swift in Sources */, + C471E8F128F9BB8F0021E251 /* KeyCombo.swift in Sources */, + C471E8F228F9BB8F0021E251 /* ModifierFlagsExtension.swift in Sources */, + C471E7F028F9BAC30021E251 /* Paths.swift in Sources */, + C471E7FC28F9BACE0021E251 /* HomebrewPackage.swift in Sources */, + C471E7CF28F9BA600021E251 /* ActiveShell.swift in Sources */, + C471E7F628F9BAC80021E251 /* PhpHelper.swift in Sources */, + C471E7EE28F9BAC30021E251 /* Constants.swift in Sources */, + C471E80E28F9BAE80021E251 /* DateExtension.swift in Sources */, + C471E7D028F9BA630021E251 /* FileSystemProtocol.swift in Sources */, + C471E81228F9BAE80021E251 /* TimeIntervalExtension.swift in Sources */, + C471E7DF28F9BAAB0021E251 /* RealCommand.swift in Sources */, + C471E7E028F9BAAB0021E251 /* ActiveCommand.swift in Sources */, + C471E80928F9BADC0021E251 /* CreatedFromFile.swift in Sources */, + C471E80128F9BAD40021E251 /* ActivePhpInstallation.swift in Sources */, + C471E80228F9BAD40021E251 /* PhpInstallation.swift in Sources */, + C471E81028F9BAE80021E251 /* StringExtension.swift in Sources */, + C471E7F828F9BACB0021E251 /* InternalSwitcher.swift in Sources */, + C471E82328F9BB2E0021E251 /* ComposerJson.swift in Sources */, + C471E82128F9BB2E0021E251 /* PhpFrameworks.swift in Sources */, + C471E7EF28F9BAC30021E251 /* Actions.swift in Sources */, + C471E82228F9BB2E0021E251 /* ComposerWindow.swift in Sources */, + C471E80428F9BAD40021E251 /* PhpExtension.swift in Sources */, + C471E7F728F9BACB0021E251 /* PhpSwitcher.swift in Sources */, + C471E82C28F9BB340021E251 /* DomainListable.swift in Sources */, + C471E82828F9BB310021E251 /* HomebrewDiagnostics.swift in Sources */, + C471E81E28F9BB260021E251 /* BetterAlert.swift in Sources */, + C471E7D228F9BA630021E251 /* ActiveFileSystem.swift in Sources */, + C471E80028F9BAD10021E251 /* Xdebug.swift in Sources */, + C471E7F528F9BAC80021E251 /* PhpEnv.swift in Sources */, + C471E7ED28F9BAC30021E251 /* Process.swift in Sources */, + C471E81128F9BAE80021E251 /* NSMenuItemExtension.swift in Sources */, + C471E7CC28F9BA5B0021E251 /* TestableShell.swift in Sources */, + C471E80C28F9BAE80021E251 /* NSWindowExtension.swift in Sources */, + C471E7CA28F9BA480021E251 /* TestableFileSystem.swift in Sources */, + C471E7DD28F9BAA30021E251 /* CommandProtocol.swift in Sources */, + C471E7D128F9BA630021E251 /* RealFileSystem.swift in Sources */, + C471E81D28F9BB260021E251 /* BetterAlertVC.swift in Sources */, + C471E82B28F9BB340021E251 /* Valet.swift in Sources */, + C471E80328F9BAD40021E251 /* PhpConfigurationFile.swift in Sources */, + C471E7C928F9BA2F0021E251 /* TestableConfigurations.swift in Sources */, + C471E7EA28F9BAC30021E251 /* Logger.swift in Sources */, + C471E7FB28F9BACE0021E251 /* HomebrewService.swift in Sources */, + C471E7EB28F9BAC30021E251 /* Helpers.swift in Sources */, + C471E81F28F9BB290021E251 /* NginxConfigurationFile.swift in Sources */, + C471E7BF28F9B90F0021E251 /* UI_Tests.swift in Sources */, + C471E80D28F9BAE80021E251 /* ArrayExtension.swift in Sources */, + C471E7CD28F9BA600021E251 /* ShellProtocol.swift in Sources */, + C471E7EC28F9BAC30021E251 /* Events.swift in Sources */, + C471E7CE28F9BA600021E251 /* RealShell.swift in Sources */, + C471E80F28F9BAE80021E251 /* NSMenuExtension.swift in Sources */, + C471E80B28F9BAE80021E251 /* XibLoadable.swift in Sources */, + C471E7F428F9BAC80021E251 /* PhpVersionNumber.swift in Sources */, + C471E7CB28F9BA5B0021E251 /* TestableCommand.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; C4F7807525D7F84B000DBC97 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -1737,6 +2444,16 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ + C471E7B228F9B4940021E251 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = C41C1B3222B0097F00E7CF16 /* PHP Monitor */; + targetProxy = C471E7B128F9B4940021E251 /* PBXContainerItemProxy */; + }; + C471E7C328F9B90F0021E251 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = C41C1B3222B0097F00E7CF16 /* PHP Monitor */; + targetProxy = C471E7C228F9B90F0021E251 /* PBXContainerItemProxy */; + }; C4F7807F25D7F84B000DBC97 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = C41C1B3222B0097F00E7CF16 /* PHP Monitor */; @@ -1933,6 +2650,150 @@ }; name = Release; }; + C471E7B428F9B4940021E251 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 8M54J5J787; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = ""; + MACOSX_DEPLOYMENT_TARGET = 11.0; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon.feature-tests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + C471E7B528F9B4940021E251 /* Debug.Dev */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 8M54J5J787; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = ""; + MACOSX_DEPLOYMENT_TARGET = 11.0; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon.feature-tests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + }; + name = Debug.Dev; + }; + C471E7B628F9B4940021E251 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 8M54J5J787; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = ""; + MACOSX_DEPLOYMENT_TARGET = 11.0; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon.feature-tests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + C471E7B728F9B4940021E251 /* Release.Dev */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 8M54J5J787; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = ""; + MACOSX_DEPLOYMENT_TARGET = 11.0; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon.feature-tests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + }; + name = Release.Dev; + }; + C471E7C528F9B90F0021E251 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 8M54J5J787; + GENERATE_INFOPLIST_FILE = YES; + MACOSX_DEPLOYMENT_TARGET = 12.3; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon.ui-tests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TEST_TARGET_NAME = "PHP Monitor"; + }; + name = Debug; + }; + C471E7C628F9B90F0021E251 /* Debug.Dev */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 8M54J5J787; + GENERATE_INFOPLIST_FILE = YES; + MACOSX_DEPLOYMENT_TARGET = 12.3; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon.ui-tests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TEST_TARGET_NAME = "PHP Monitor"; + }; + name = Debug.Dev; + }; + C471E7C728F9B90F0021E251 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 8M54J5J787; + GENERATE_INFOPLIST_FILE = YES; + MACOSX_DEPLOYMENT_TARGET = 12.3; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon.ui-tests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TEST_TARGET_NAME = "PHP Monitor"; + }; + name = Release; + }; + C471E7C828F9B90F0021E251 /* Release.Dev */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 8M54J5J787; + GENERATE_INFOPLIST_FILE = YES; + MACOSX_DEPLOYMENT_TARGET = 12.3; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon.ui-tests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TEST_TARGET_NAME = "PHP Monitor"; + }; + name = Release.Dev; + }; C4975D0728CD190C00FFB4E8 /* Release.Dev */ = { isa = XCBuildConfiguration; buildSettings = { @@ -2022,14 +2883,15 @@ CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; DEVELOPMENT_TEAM = 8M54J5J787; - INFOPLIST_FILE = "phpmon-tests/Info.plist"; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = ""; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", "@loader_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 11.0; - PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon-tests"; + PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon.unit-tests"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; }; @@ -2131,14 +2993,15 @@ CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; DEVELOPMENT_TEAM = 8M54J5J787; - INFOPLIST_FILE = "phpmon-tests/Info.plist"; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = ""; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", "@loader_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 11.0; - PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon-tests"; + PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon.unit-tests"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; }; @@ -2151,14 +3014,15 @@ COMBINE_HIDPI_IMAGES = YES; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 8M54J5J787; - INFOPLIST_FILE = "phpmon-tests/Info.plist"; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = ""; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", "@loader_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 11.0; - PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon-tests"; + PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon.unit-tests"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; }; @@ -2171,14 +3035,15 @@ COMBINE_HIDPI_IMAGES = YES; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 8M54J5J787; - INFOPLIST_FILE = "phpmon-tests/Info.plist"; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = ""; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", "@loader_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 11.0; - PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon-tests"; + PRODUCT_BUNDLE_IDENTIFIER = "com.nicoverbruggen.phpmon.unit-tests"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; }; @@ -2209,7 +3074,29 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - C4F7808025D7F84B000DBC97 /* Build configuration list for PBXNativeTarget "phpmon-tests" */ = { + C471E7B328F9B4940021E251 /* Build configuration list for PBXNativeTarget "Feature Tests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C471E7B428F9B4940021E251 /* Debug */, + C471E7B528F9B4940021E251 /* Debug.Dev */, + C471E7B628F9B4940021E251 /* Release */, + C471E7B728F9B4940021E251 /* Release.Dev */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C471E7C428F9B90F0021E251 /* Build configuration list for PBXNativeTarget "UI Tests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C471E7C528F9B90F0021E251 /* Debug */, + C471E7C628F9B90F0021E251 /* Debug.Dev */, + C471E7C728F9B90F0021E251 /* Release */, + C471E7C828F9B90F0021E251 /* Release.Dev */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C4F7808025D7F84B000DBC97 /* Build configuration list for PBXNativeTarget "Unit Tests" */ = { isa = XCConfigurationList; buildConfigurations = ( C4F7808125D7F84B000DBC97 /* Debug */, diff --git a/PHP Monitor.xcodeproj/xcshareddata/xcschemes/PHP Monitor DEV.xcscheme b/PHP Monitor.xcodeproj/xcshareddata/xcschemes/PHP Monitor DEV.xcscheme index de38b69..f129fcd 100644 --- a/PHP Monitor.xcodeproj/xcshareddata/xcschemes/PHP Monitor DEV.xcscheme +++ b/PHP Monitor.xcodeproj/xcshareddata/xcschemes/PHP Monitor DEV.xcscheme @@ -29,12 +29,24 @@ shouldUseLaunchSchemeArgsEnv = "YES"> + skipped = "NO" + parallelizable = "YES"> + + + + diff --git a/PHP Monitor.xcodeproj/xcshareddata/xcschemes/PHP Monitor.xcscheme b/PHP Monitor.xcodeproj/xcshareddata/xcschemes/PHP Monitor.xcscheme index 71155db..b7409be 100644 --- a/PHP Monitor.xcodeproj/xcshareddata/xcschemes/PHP Monitor.xcscheme +++ b/PHP Monitor.xcodeproj/xcshareddata/xcschemes/PHP Monitor.xcscheme @@ -39,8 +39,30 @@ + + + + + + + + diff --git a/PHP Monitor.xcodeproj/xcshareddata/xcschemes/Unit Tests.xcscheme b/PHP Monitor.xcodeproj/xcshareddata/xcschemes/Unit Tests.xcscheme index 59a0b6d..25a1543 100644 --- a/PHP Monitor.xcodeproj/xcshareddata/xcschemes/Unit Tests.xcscheme +++ b/PHP Monitor.xcodeproj/xcshareddata/xcschemes/Unit Tests.xcscheme @@ -17,8 +17,8 @@ diff --git a/phpmon-tests/Info.plist b/phpmon-tests/Info.plist deleted file mode 100644 index 64d65ca..0000000 --- a/phpmon-tests/Info.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - $(PRODUCT_BUNDLE_PACKAGE_TYPE) - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - - diff --git a/phpmon/Common/Extensions/StringExtension.swift b/phpmon/Common/Extensions/StringExtension.swift index a8746c1..a67b0d4 100644 --- a/phpmon/Common/Extensions/StringExtension.swift +++ b/phpmon/Common/Extensions/StringExtension.swift @@ -42,6 +42,11 @@ extension String { return count } + func matches(pattern: String) -> Bool { + let pred = NSPredicate(format: "self LIKE %@", pattern) + return !NSArray(object: self).filtered(using: pred).isEmpty + } + subscript(r: Range) -> String { let start = r.lowerBound let end = r.upperBound @@ -98,5 +103,4 @@ extension String { return "" } } - } diff --git a/phpmon/Domain/App/AppDelegate.swift b/phpmon/Domain/App/AppDelegate.swift index 73fc12f..71a7d12 100644 --- a/phpmon/Domain/App/AppDelegate.swift +++ b/phpmon/Domain/App/AppDelegate.swift @@ -61,8 +61,9 @@ class AppDelegate: NSObject, NSApplicationDelegate, UNUserNotificationCenterDele #if DEBUG logger.verbosity = .performance - // Use a "working" test configuration - TestableConfigurations.working.apply() + if let profile = CommandLine.arguments.first(where: { $0.matches(pattern: "--configuration:*") }) { + Self.initializeTestingProfile(profile.replacingOccurrences(of: "--configuration:", with: "")) + } #endif if CommandLine.arguments.contains("--v") { @@ -86,6 +87,10 @@ class AppDelegate: NSObject, NSApplicationDelegate, UNUserNotificationCenterDele self.phpEnvironment = PhpEnv.shared } + static func initializeTestingProfile(_ profile: String) { + Log.info("The profile `\(profile)` is being requested...") + } + // MARK: - Lifecycle /** diff --git a/phpmon/Domain/Menu/MainMenu.swift b/phpmon/Domain/Menu/MainMenu.swift index 4744b99..175aba7 100644 --- a/phpmon/Domain/Menu/MainMenu.swift +++ b/phpmon/Domain/Menu/MainMenu.swift @@ -21,7 +21,7 @@ class MainMenu: NSObject, NSWindowDelegate, NSMenuDelegate, PhpSwitcherDelegate /** The status bar item with variable length. */ - @MainActor let statusItem = NSStatusBar.system.statusItem( + let statusItem = NSStatusBar.system.statusItem( withLength: NSStatusItem.variableLength ) diff --git a/PHP Monitor.xcodeproj/PHP Monitor.xctestplan b/tests/PHP Monitor.xctestplan similarity index 71% rename from PHP Monitor.xcodeproj/PHP Monitor.xctestplan rename to tests/PHP Monitor.xctestplan index a315285..cd0bc27 100644 --- a/PHP Monitor.xcodeproj/PHP Monitor.xctestplan +++ b/tests/PHP Monitor.xctestplan @@ -41,10 +41,25 @@ }, "testTargets" : [ { + "parallelizable" : true, "target" : { "containerPath" : "container:PHP Monitor.xcodeproj", "identifier" : "C4F7807825D7F84B000DBC97", - "name" : "phpmon-tests" + "name" : "Unit Tests" + } + }, + { + "target" : { + "containerPath" : "container:PHP Monitor.xcodeproj", + "identifier" : "C471E7AC28F9B4940021E251", + "name" : "Feature Tests" + } + }, + { + "target" : { + "containerPath" : "container:PHP Monitor.xcodeproj", + "identifier" : "C471E7BB28F9B90F0021E251", + "name" : "UI Tests" } } ], diff --git a/tests/feature/EmptyTest.swift b/tests/feature/EmptyTest.swift new file mode 100644 index 0000000..762a07e --- /dev/null +++ b/tests/feature/EmptyTest.swift @@ -0,0 +1,11 @@ +// +// Feature_Tests.swift +// Feature Tests +// +// Created by Nico Verbruggen on 14/10/2022. +// Copyright © 2022 Nico Verbruggen. All rights reserved. +// + +import XCTest + +final class Feature_Tests: XCTestCase {} diff --git a/tests/ui/UI_Tests.swift b/tests/ui/UI_Tests.swift new file mode 100644 index 0000000..e003de5 --- /dev/null +++ b/tests/ui/UI_Tests.swift @@ -0,0 +1,35 @@ +// +// UI_Tests.swift +// UI Tests +// +// Created by Nico Verbruggen on 14/10/2022. +// Copyright © 2022 Nico Verbruggen. All rights reserved. +// + +import XCTest + +final class UI_Tests: XCTestCase { + + override func setUpWithError() throws { + continueAfterFailure = false + TestableConfigurations.broken.apply() + } + + override func tearDownWithError() throws { + } + + func testExample() throws { + // UI tests must launch the application that they test. + let app = XCUIApplication() + app.launchArguments = ["--configuration:broken"] + app.launch() + } + + /* + func testLaunchPerformance() throws { + measure(metrics: [XCTApplicationLaunchMetric()]) { + XCUIApplication().launch() + } + } + */ +} diff --git a/phpmon-tests/Commands/CommandTest.swift b/tests/unit/Commands/CommandTest.swift similarity index 100% rename from phpmon-tests/Commands/CommandTest.swift rename to tests/unit/Commands/CommandTest.swift diff --git a/phpmon-tests/Parsers/HomebrewPackageTest.swift b/tests/unit/Parsers/HomebrewPackageTest.swift similarity index 100% rename from phpmon-tests/Parsers/HomebrewPackageTest.swift rename to tests/unit/Parsers/HomebrewPackageTest.swift diff --git a/phpmon-tests/Parsers/NginxConfigurationTest.swift b/tests/unit/Parsers/NginxConfigurationTest.swift similarity index 100% rename from phpmon-tests/Parsers/NginxConfigurationTest.swift rename to tests/unit/Parsers/NginxConfigurationTest.swift diff --git a/phpmon-tests/Parsers/PhpConfigurationTest.swift b/tests/unit/Parsers/PhpConfigurationTest.swift similarity index 100% rename from phpmon-tests/Parsers/PhpConfigurationTest.swift rename to tests/unit/Parsers/PhpConfigurationTest.swift diff --git a/phpmon-tests/Parsers/PhpExtensionTest.swift b/tests/unit/Parsers/PhpExtensionTest.swift similarity index 100% rename from phpmon-tests/Parsers/PhpExtensionTest.swift rename to tests/unit/Parsers/PhpExtensionTest.swift diff --git a/phpmon-tests/Parsers/ValetConfigurationTest.swift b/tests/unit/Parsers/ValetConfigurationTest.swift similarity index 100% rename from phpmon-tests/Parsers/ValetConfigurationTest.swift rename to tests/unit/Parsers/ValetConfigurationTest.swift diff --git a/phpmon-tests/Test Files/brew/brew-formula.json b/tests/unit/Test Files/brew/brew-formula.json similarity index 100% rename from phpmon-tests/Test Files/brew/brew-formula.json rename to tests/unit/Test Files/brew/brew-formula.json diff --git a/phpmon-tests/Test Files/brew/brew-services.json b/tests/unit/Test Files/brew/brew-services.json similarity index 100% rename from phpmon-tests/Test Files/brew/brew-services.json rename to tests/unit/Test Files/brew/brew-services.json diff --git a/phpmon-tests/Test Files/nginx/nginx-proxy.test b/tests/unit/Test Files/nginx/nginx-proxy.test similarity index 100% rename from phpmon-tests/Test Files/nginx/nginx-proxy.test rename to tests/unit/Test Files/nginx/nginx-proxy.test diff --git a/phpmon-tests/Test Files/nginx/nginx-secure-proxy-custom-tld.test b/tests/unit/Test Files/nginx/nginx-secure-proxy-custom-tld.test similarity index 100% rename from phpmon-tests/Test Files/nginx/nginx-secure-proxy-custom-tld.test rename to tests/unit/Test Files/nginx/nginx-secure-proxy-custom-tld.test diff --git a/phpmon-tests/Test Files/nginx/nginx-secure-proxy.test b/tests/unit/Test Files/nginx/nginx-secure-proxy.test similarity index 100% rename from phpmon-tests/Test Files/nginx/nginx-secure-proxy.test rename to tests/unit/Test Files/nginx/nginx-secure-proxy.test diff --git a/phpmon-tests/Test Files/nginx/nginx-site-isolated.test b/tests/unit/Test Files/nginx/nginx-site-isolated.test similarity index 100% rename from phpmon-tests/Test Files/nginx/nginx-site-isolated.test rename to tests/unit/Test Files/nginx/nginx-site-isolated.test diff --git a/phpmon-tests/Test Files/nginx/nginx-site.test b/tests/unit/Test Files/nginx/nginx-site.test similarity index 100% rename from phpmon-tests/Test Files/nginx/nginx-site.test rename to tests/unit/Test Files/nginx/nginx-site.test diff --git a/phpmon-tests/Test Files/php/php.ini b/tests/unit/Test Files/php/php.ini similarity index 100% rename from phpmon-tests/Test Files/php/php.ini rename to tests/unit/Test Files/php/php.ini diff --git a/phpmon-tests/Test Files/phpmon/phpmon-config.json b/tests/unit/Test Files/phpmon/phpmon-config.json similarity index 100% rename from phpmon-tests/Test Files/phpmon/phpmon-config.json rename to tests/unit/Test Files/phpmon/phpmon-config.json diff --git a/phpmon-tests/Test Files/valet/valet-config.json b/tests/unit/Test Files/valet/valet-config.json similarity index 100% rename from phpmon-tests/Test Files/valet/valet-config.json rename to tests/unit/Test Files/valet/valet-config.json diff --git a/phpmon-tests/Testables/Shell/FakeShellTest.swift b/tests/unit/Testables/Shell/FakeShellTest.swift similarity index 100% rename from phpmon-tests/Testables/Shell/FakeShellTest.swift rename to tests/unit/Testables/Shell/FakeShellTest.swift diff --git a/phpmon-tests/Testables/Shell/SystemShellTest.swift b/tests/unit/Testables/Shell/SystemShellTest.swift similarity index 100% rename from phpmon-tests/Testables/Shell/SystemShellTest.swift rename to tests/unit/Testables/Shell/SystemShellTest.swift diff --git a/phpmon-tests/Utility.swift b/tests/unit/Utility.swift similarity index 100% rename from phpmon-tests/Utility.swift rename to tests/unit/Utility.swift diff --git a/phpmon-tests/Versions/AppUpdaterCheckTest.swift b/tests/unit/Versions/AppUpdaterCheckTest.swift similarity index 100% rename from phpmon-tests/Versions/AppUpdaterCheckTest.swift rename to tests/unit/Versions/AppUpdaterCheckTest.swift diff --git a/phpmon-tests/Versions/AppVersionTest.swift b/tests/unit/Versions/AppVersionTest.swift similarity index 100% rename from phpmon-tests/Versions/AppVersionTest.swift rename to tests/unit/Versions/AppVersionTest.swift diff --git a/phpmon-tests/Versions/PhpVersionDetectionTest.swift b/tests/unit/Versions/PhpVersionDetectionTest.swift similarity index 100% rename from phpmon-tests/Versions/PhpVersionDetectionTest.swift rename to tests/unit/Versions/PhpVersionDetectionTest.swift diff --git a/phpmon-tests/Versions/PhpVersionNumberTest.swift b/tests/unit/Versions/PhpVersionNumberTest.swift similarity index 100% rename from phpmon-tests/Versions/PhpVersionNumberTest.swift rename to tests/unit/Versions/PhpVersionNumberTest.swift diff --git a/phpmon-tests/Versions/ValetVersionExtractorTest.swift b/tests/unit/Versions/ValetVersionExtractorTest.swift similarity index 100% rename from phpmon-tests/Versions/ValetVersionExtractorTest.swift rename to tests/unit/Versions/ValetVersionExtractorTest.swift diff --git a/phpmon-tests/Versions/VersionExtractorTest.swift b/tests/unit/Versions/VersionExtractorTest.swift similarity index 100% rename from phpmon-tests/Versions/VersionExtractorTest.swift rename to tests/unit/Versions/VersionExtractorTest.swift