From bfe17007584724916b91324906b0b7024a35b2ef Mon Sep 17 00:00:00 2001 From: brendt Date: Mon, 9 Feb 2026 13:11:11 +0100 Subject: [PATCH 1/5] wip --- packages/view/src/Parser/TempestViewLexer.php | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/packages/view/src/Parser/TempestViewLexer.php b/packages/view/src/Parser/TempestViewLexer.php index 9b38a66c3..55b36b7e1 100644 --- a/packages/view/src/Parser/TempestViewLexer.php +++ b/packages/view/src/Parser/TempestViewLexer.php @@ -4,7 +4,7 @@ final class TempestViewLexer { - private const string WHITESPACE = PHP_EOL . "\n\t\f "; + private const string WHITESPACE = "\r\n\t\f "; private int $position = 0; @@ -35,7 +35,7 @@ public function lex(): TokenCollection $tokens = [...$tokens, ...$this->lexCharacterData()]; } elseif ($this->comesNext('<')) { $tokens = [...$tokens, ...$this->lexTag()]; - } elseif ($this->comesNext(' ') || $this->comesNext(PHP_EOL)) { + } elseif ($this->comesNext("\r") || $this->comesNext("\n") || $this->comesNext("\t") || $this->comesNext("\f") || $this->comesNext(' ')) { $tokens[] = $this->lexWhitespace(); } else { $tokens[] = $this->lexContent(); @@ -218,17 +218,7 @@ private function lexDoctype(): Token private function lexWhitespace(): Token { - $buffer = ''; - - while ($this->current !== null) { - $seek = $this->seek(); - - if ($seek !== ' ' && $seek !== PHP_EOL) { - break; - } - - $buffer .= $this->consume(); - } + $buffer = $this->consumeWhile(self::WHITESPACE); return new Token($buffer, TokenType::WHITESPACE); } From 57d123baca40ac586538778a802bee9cafb8d870 Mon Sep 17 00:00:00 2001 From: brendt Date: Mon, 9 Feb 2026 13:30:30 +0100 Subject: [PATCH 2/5] wip --- .../workflows/integration-tests-windows.yml | 114 ------------------ .github/workflows/integration-tests.yml | 11 +- 2 files changed, 6 insertions(+), 119 deletions(-) delete mode 100644 .github/workflows/integration-tests-windows.yml diff --git a/.github/workflows/integration-tests-windows.yml b/.github/workflows/integration-tests-windows.yml deleted file mode 100644 index c2875b06d..000000000 --- a/.github/workflows/integration-tests-windows.yml +++ /dev/null @@ -1,114 +0,0 @@ -name: Integration Tests (Windows) - -on: - workflow_dispatch: - schedule: - - cron: '0 8 * * *' -env: - POSTGRES_USER: runner - POSTGRES_PASSWORD: "" - POSTGRES_DB: postgres - -jobs: - vitest: - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - matrix: - php: - - 8.5 - os: - - windows-latest - env: - POSTGRES_USER: ${{ matrix.os == 'windows-latest' && 'postgres' || 'runner' }} - - name: "Run tests: ${{ matrix.os }}" - - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php }} - extensions: dom, curl, libxml, mbstring, pcntl, fileinfo, pdo, sqlite, pdo_sqlite, pdo_mysql, pdo_pgsql, intl, ftp, zip - coverage: pcov - - - name: Setup Bun - uses: oven-sh/setup-bun@v2 - - - name: Install dependencies - run: bun install --frozen-lockfile - - - name: Run build - run: bun run build - - - name: Run tests - run: bun run test - - phpunit: - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - matrix: - os: - - windows-latest - php: - - 8.5 - database: - - sqlite - - mysql - - postgres - stability: - - prefer-stable - env: - POSTGRES_USER: ${{ matrix.os == 'windows-latest' && 'postgres' || 'runner' }} - - name: "Run tests: PHP ${{ matrix.php }} - ${{ matrix.database }} - ${{ matrix.stability }} - ${{ matrix.os }}" - - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php }} - extensions: dom, curl, libxml, mbstring, pcntl, fileinfo, pdo, sqlite, pdo_sqlite, pdo_mysql, pdo_pgsql, intl, ftp, zip - coverage: pcov - - - name: Setup problem matchers - run: | - echo "::add-matcher::${{ runner.tool_cache }}/php.json" - echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" - - - name: Install dependencies - run: composer update --${{ matrix.stability }} --prefer-dist --no-interaction --ignore-platform-reqs - - - name: "Setup Redis" - if: ${{ matrix.os != 'windows-latest' }} - uses: supercharge/redis-github-action@1.7.0 - - - name: "Setup MySQL" - if: ${{ matrix.database == 'mysql' }} - uses: ankane/setup-mysql@v1 - with: - mysql-version: 8.0 - database: "app" - - - name: "Setup PostgreSQL" - if: ${{ matrix.database == 'postgres' }} - uses: ankane/setup-postgres@v1 - - - name: Set database config - ${{ matrix.database }} - run: php -r "copy('tests/Fixtures/Config/database.${{ matrix.database }}.php', 'tests/Fixtures/Config/database.config.php');" - - - name: Tempest about - run: php ./tempest about -v - - - name: List discovered locations - run: php ./tempest discovery:status - - - name: Execute tests - run: php -d"error_reporting = E_ALL & ~E_DEPRECATED" -dmemory_limit=1G vendor/bin/phpunit diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml index d9e3e67ff..47f4b65fa 100644 --- a/.github/workflows/integration-tests.yml +++ b/.github/workflows/integration-tests.yml @@ -23,7 +23,9 @@ jobs: - 8.5 os: - ubuntu-latest -# - windows-latest + - windows-latest + env: + POSTGRES_USER: ${{ matrix.os == 'windows-latest' && 'postgres' || 'runner' }} name: "Run tests: ${{ matrix.os }}" @@ -57,7 +59,7 @@ jobs: matrix: os: - ubuntu-latest -# - windows-latest + - windows-latest php: - 8.5 database: @@ -67,9 +69,8 @@ jobs: stability: - prefer-stable - prefer-lowest -# exclude: -# - os: windows-latest -# database: postgres + env: + POSTGRES_USER: ${{ matrix.os == 'windows-latest' && 'postgres' || 'runner' }} name: "Run tests: PHP ${{ matrix.php }} - ${{ matrix.database }} - ${{ matrix.stability }} - ${{ matrix.os }}" From 4c00501ea58448315933541ec8c074dd3a11e83c Mon Sep 17 00:00:00 2001 From: brendt Date: Mon, 9 Feb 2026 13:40:30 +0100 Subject: [PATCH 3/5] wip --- packages/core/src/Kernel/LoadConfig.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/core/src/Kernel/LoadConfig.php b/packages/core/src/Kernel/LoadConfig.php index 9efc0396f..6c916f166 100644 --- a/packages/core/src/Kernel/LoadConfig.php +++ b/packages/core/src/Kernel/LoadConfig.php @@ -9,6 +9,7 @@ use Tempest\Core\Kernel; use Tempest\Support\Arr\MutableArray; use Tempest\Support\Filesystem; +use Tempest\Support\Path; use Tempest\Support\Str; use function Tempest\root_path; @@ -96,6 +97,8 @@ private function scan(string $path, MutableArray $configPaths): void return; } + $input = Path\normalize($input); + // Directories are scanned recursively if (is_dir($input)) { // Make sure the current directory is not marked for skipping From e4fd6f03568b5b8d5b0007506927db2622bfebd0 Mon Sep 17 00:00:00 2001 From: Brent Roose Date: Tue, 10 Feb 2026 11:36:22 +0100 Subject: [PATCH 4/5] Update packages/view/src/Parser/TempestViewLexer.php MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Márk Magyar --- packages/view/src/Parser/TempestViewLexer.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/view/src/Parser/TempestViewLexer.php b/packages/view/src/Parser/TempestViewLexer.php index 55b36b7e1..bed2f59ff 100644 --- a/packages/view/src/Parser/TempestViewLexer.php +++ b/packages/view/src/Parser/TempestViewLexer.php @@ -35,7 +35,7 @@ public function lex(): TokenCollection $tokens = [...$tokens, ...$this->lexCharacterData()]; } elseif ($this->comesNext('<')) { $tokens = [...$tokens, ...$this->lexTag()]; - } elseif ($this->comesNext("\r") || $this->comesNext("\n") || $this->comesNext("\t") || $this->comesNext("\f") || $this->comesNext(' ')) { + } elseif (str_contains(self::WHITESPACE, $this->current)) { $tokens[] = $this->lexWhitespace(); } else { $tokens[] = $this->lexContent(); From a890d1dbacfed2ff78b4ebac1095f827a545e8a4 Mon Sep 17 00:00:00 2001 From: brendt Date: Tue, 10 Feb 2026 13:15:45 +0100 Subject: [PATCH 5/5] wip --- packages/console/src/Highlight/DynamicTokenType.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/console/src/Highlight/DynamicTokenType.php b/packages/console/src/Highlight/DynamicTokenType.php index 81516521a..e52c2bc73 100644 --- a/packages/console/src/Highlight/DynamicTokenType.php +++ b/packages/console/src/Highlight/DynamicTokenType.php @@ -88,7 +88,7 @@ public function getAfterStyle(): TerminalStyle public function getValue(): string { - return ''; + return $this->style; } public function canContain(TokenType $other): bool