mirror of
https://github.com/dunglas/frankenphp.git
synced 2025-12-24 13:38:11 +08:00
* feat: add helpers to create PHP extensions (#1644) * feat: add helpers to create PHP extensions * cs * feat: GoString * test * add test for RegisterExtension * cs * optimize includes * fix * feat(extensions): add the PHP extension generator (#1649) * feat(extensions): add the PHP extension generator * unexport many types * unexport more symbols * cleanup some tests * unexport more symbols * fix * revert types files * revert * add better validation and fix templates * remove GoStringCopy * small fixes --------- Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * try to fix tests * fix CS * try some workarounds * try some workarounds * ingore TestRegisterExtension * exclude cgo tests in Docker images * fix * workaround... * race detector * simplify tests and code * make linter happy * feat(gofile): use templates to generate the Go file (#1666) --------- Co-authored-by: Alexandre Daubois <2144837+alexandre-daubois@users.noreply.github.com>
45 lines
1.5 KiB
Go
45 lines
1.5 KiB
Go
package testext
|
|
|
|
// #cgo darwin pkg-config: libxml-2.0
|
|
// #cgo CFLAGS: -Wall -Werror
|
|
// #cgo CFLAGS: -I/usr/local/include -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib
|
|
// #cgo linux CFLAGS: -D_GNU_SOURCE
|
|
// #cgo darwin CFLAGS: -I/opt/homebrew/include
|
|
// #cgo LDFLAGS: -L/usr/local/lib -L/usr/lib -lphp -lm -lutil
|
|
// #cgo linux LDFLAGS: -ldl -lresolv
|
|
// #cgo darwin LDFLAGS: -Wl,-rpath,/usr/local/lib -L/opt/homebrew/lib -L/opt/homebrew/opt/libiconv/lib -liconv -ldl
|
|
// #include "extension.h"
|
|
import "C"
|
|
import (
|
|
"github.com/dunglas/frankenphp"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
"io"
|
|
"net/http/httptest"
|
|
"testing"
|
|
"unsafe"
|
|
)
|
|
|
|
func testRegisterExtension(t *testing.T) {
|
|
frankenphp.RegisterExtension(unsafe.Pointer(&C.module1_entry))
|
|
frankenphp.RegisterExtension(unsafe.Pointer(&C.module2_entry))
|
|
|
|
err := frankenphp.Init()
|
|
require.Nil(t, err)
|
|
defer frankenphp.Shutdown()
|
|
|
|
req := httptest.NewRequest("GET", "http://example.com/index.php", nil)
|
|
w := httptest.NewRecorder()
|
|
|
|
req, err = frankenphp.NewRequestWithContext(req, frankenphp.WithRequestDocumentRoot("./testdata", false))
|
|
assert.NoError(t, err)
|
|
|
|
err = frankenphp.ServeHTTP(w, req)
|
|
assert.NoError(t, err)
|
|
|
|
resp := w.Result()
|
|
body, _ := io.ReadAll(resp.Body)
|
|
assert.Contains(t, string(body), "ext1")
|
|
assert.Contains(t, string(body), "ext2")
|
|
}
|