diff --git a/Formula/phpunit@9.5.rb b/Formula/phpunit@9.5.rb new file mode 100644 index 0000000..7fc1634 --- /dev/null +++ b/Formula/phpunit@9.5.rb @@ -0,0 +1,114 @@ +class PhpunitAT95 < Formula + desc "Programmer-oriented testing framework for PHP" + homepage "https://phpunit.de" + url "https://phar.phpunit.de/phpunit-9.5.28.phar" + sha256 "d8b2b96468c0b66ceeb2c345ed14925248089fe76cb76c7b591ab99aa04d319a" + license "BSD-3-Clause" + + livecheck do + skip "static version" + end + + depends_on "php" => :test + + def install + bin.install "phpunit-#{version}.phar" => "phpunit" + end + + test do + (testpath/"src/autoload.php").write <<~EOS + '/Email.php' + ); + } + $cn = strtolower($class); + if (isset($classes[$cn])) { + require __DIR__ . $classes[$cn]; + } + }, + true, + false + ); + EOS + + (testpath/"src/Email.php").write <<~EOS + ensureIsValidEmail($email); + + $this->email = $email; + } + + public static function fromString(string $email): self + { + return new self($email); + } + + public function __toString(): string + { + return $this->email; + } + + private function ensureIsValidEmail(string $email): void + { + if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { + throw new InvalidArgumentException( + sprintf( + '"%s" is not a valid email address', + $email + ) + ); + } + } + } + EOS + + (testpath/"tests/EmailTest.php").write <<~EOS + assertInstanceOf( + Email::class, + Email::fromString('user@example.com') + ); + } + + public function testCannotBeCreatedFromInvalidEmailAddress(): void + { + $this->expectException(InvalidArgumentException::class); + + Email::fromString('invalid'); + } + + public function testCanBeUsedAsString(): void + { + $this->assertEquals( + 'user@example.com', + Email::fromString('user@example.com') + ); + } + } + + EOS + assert_match(/^OK \(3 tests, 3 assertions\)$/, + shell_output("#{bin}/phpunit --bootstrap src/autoload.php tests/EmailTest.php")) + end +end