From c8202a1d339d989a2210a86678a624085d56c55c Mon Sep 17 00:00:00 2001 From: Alliballibaba Date: Fri, 7 Nov 2025 23:53:49 +0100 Subject: [PATCH 1/2] Fails immediately on missing file. --- worker.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/worker.go b/worker.go index ee468bd6cd..0f9aa08765 100644 --- a/worker.go +++ b/worker.go @@ -4,6 +4,7 @@ package frankenphp import "C" import ( "fmt" + "os" "strings" "sync" "time" @@ -98,6 +99,10 @@ func newWorker(o workerOpt) (*worker, error) { return nil, fmt.Errorf("worker filename is invalid %q: %w", o.fileName, err) } + if _, err := os.Stat(absFileName); err != nil { + return nil, fmt.Errorf("worker file not found %q: %w", absFileName, err) + } + if o.name == "" { o.name = absFileName } From d9e8bcd8d035e3b483e638bee70cc5606852f313 Mon Sep 17 00:00:00 2001 From: Alliballibaba Date: Sat, 8 Nov 2025 12:28:09 +0100 Subject: [PATCH 2/2] Fixes tests. --- phpmainthread_test.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/phpmainthread_test.go b/phpmainthread_test.go index a49484b61f..b2d37b359f 100644 --- a/phpmainthread_test.go +++ b/phpmainthread_test.go @@ -175,9 +175,9 @@ func TestFinishBootingAWorkerScript(t *testing.T) { func TestReturnAnErrorIf2WorkersHaveTheSameFileName(t *testing.T) { workers = []*worker{} - w, err1 := newWorker(workerOpt{fileName: "filename.php", maxConsecutiveFailures: defaultMaxConsecutiveFailures}) + w, err1 := newWorker(workerOpt{fileName: testDataPath + "/index.php"}) workers = append(workers, w) - _, err2 := newWorker(workerOpt{fileName: "filename.php", maxConsecutiveFailures: defaultMaxConsecutiveFailures}) + _, err2 := newWorker(workerOpt{fileName: testDataPath + "/index.php"}) assert.NoError(t, err1) assert.Error(t, err2, "two workers cannot have the same filename") @@ -185,9 +185,9 @@ func TestReturnAnErrorIf2WorkersHaveTheSameFileName(t *testing.T) { func TestReturnAnErrorIf2ModuleWorkersHaveTheSameName(t *testing.T) { workers = []*worker{} - w, err1 := newWorker(workerOpt{fileName: "filename.php", name: "workername", maxConsecutiveFailures: defaultMaxConsecutiveFailures}) + w, err1 := newWorker(workerOpt{fileName: testDataPath + "/index.php", name: "workername"}) workers = append(workers, w) - _, err2 := newWorker(workerOpt{fileName: "filename2.php", name: "workername", maxConsecutiveFailures: defaultMaxConsecutiveFailures}) + _, err2 := newWorker(workerOpt{fileName: testDataPath + "/hello.php", name: "workername"}) assert.NoError(t, err1) assert.Error(t, err2, "two workers cannot have the same name")