Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DO_NOT_MERGE: test #8

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions ext/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
*.lo
*.la
.libs
acinclude.m4
aclocal.m4
autom4te.cache
build
config.guess
config.h
config.h.in
config.log
config.nice
config.status
config.sub
configure
configure.ac
configure.in
include
install-sh
libtool
ltmain.sh
Makefile
Makefile.fragments
Makefile.global
Makefile.objects
missing
mkinstalldirs
modules
php_test_results_*.txt
phpt.*
run-test-info.php
run-tests.php
tests/**/*.diff
tests/**/*.out
tests/**/*.php
tests/**/*.exp
tests/**/*.log
tests/**/*.sh
tests/**/*.db
tests/**/*.mem
tmp-php.ini
1 change: 0 additions & 1 deletion ext/.gitkeep

This file was deleted.

94 changes: 94 additions & 0 deletions ext/config.m4
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
dnl config.m4 for extension conga

dnl Comments in this file start with the string 'dnl'.
dnl Remove where necessary.

dnl If your extension references something external, use 'with':

dnl PHP_ARG_WITH([conga],
dnl [for conga support],
dnl [AS_HELP_STRING([--with-conga],
dnl [Include conga support])])

dnl Otherwise use 'enable':

PHP_ARG_ENABLE([conga],
[whether to enable conga support],
[AS_HELP_STRING([--enable-conga],
[Enable conga support])],
[no])

if test "$PHP_CONGA" != "no"; then
dnl Write more examples of tests here...

dnl Remove this code block if the library does not support pkg-config.
dnl PKG_CHECK_MODULES([LIBFOO], [foo])
dnl PHP_EVAL_INCLINE($LIBFOO_CFLAGS)
dnl PHP_EVAL_LIBLINE($LIBFOO_LIBS, CONGA_SHARED_LIBADD)

dnl If you need to check for a particular library version using PKG_CHECK_MODULES,
dnl you can use comparison operators. For example:
dnl PKG_CHECK_MODULES([LIBFOO], [foo >= 1.2.3])
dnl PKG_CHECK_MODULES([LIBFOO], [foo < 3.4])
dnl PKG_CHECK_MODULES([LIBFOO], [foo = 1.2.3])

dnl Remove this code block if the library supports pkg-config.
dnl --with-conga -> check with-path
dnl SEARCH_PATH="/usr/local /usr" # you might want to change this
dnl SEARCH_FOR="/include/conga.h" # you most likely want to change this
dnl if test -r $PHP_CONGA/$SEARCH_FOR; then # path given as parameter
dnl CONGA_DIR=$PHP_CONGA
dnl else # search default path list
dnl AC_MSG_CHECKING([for conga files in default path])
dnl for i in $SEARCH_PATH ; do
dnl if test -r $i/$SEARCH_FOR; then
dnl CONGA_DIR=$i
dnl AC_MSG_RESULT(found in $i)
dnl fi
dnl done
dnl fi
dnl
dnl if test -z "$CONGA_DIR"; then
dnl AC_MSG_RESULT([not found])
dnl AC_MSG_ERROR([Please reinstall the conga distribution])
dnl fi

dnl Remove this code block if the library supports pkg-config.
dnl --with-conga -> add include path
dnl PHP_ADD_INCLUDE($CONGA_DIR/include)

dnl Remove this code block if the library supports pkg-config.
dnl --with-conga -> check for lib and symbol presence
dnl LIBNAME=CONGA # you may want to change this
dnl LIBSYMBOL=CONGA # you most likely want to change this

dnl If you need to check for a particular library function (e.g. a conditional
dnl or version-dependent feature) and you are using pkg-config:
dnl PHP_CHECK_LIBRARY($LIBNAME, $LIBSYMBOL,
dnl [
dnl AC_DEFINE(HAVE_CONGA_FEATURE, 1, [ ])
dnl ],[
dnl AC_MSG_ERROR([FEATURE not supported by your conga library.])
dnl ], [
dnl $LIBFOO_LIBS
dnl ])

dnl If you need to check for a particular library function (e.g. a conditional
dnl or version-dependent feature) and you are not using pkg-config:
dnl PHP_CHECK_LIBRARY($LIBNAME, $LIBSYMBOL,
dnl [
dnl PHP_ADD_LIBRARY_WITH_PATH($LIBNAME, $CONGA_DIR/$PHP_LIBDIR, CONGA_SHARED_LIBADD)
dnl AC_DEFINE(HAVE_CONGA_FEATURE, 1, [ ])
dnl ],[
dnl AC_MSG_ERROR([FEATURE not supported by your conga library.])
dnl ],[
dnl -L$CONGA_DIR/$PHP_LIBDIR -lm
dnl ])
dnl
dnl PHP_SUBST(CONGA_SHARED_LIBADD)

dnl In case of no dependencies
AC_DEFINE(HAVE_CONGA, 1, [ Have conga support ])

PHP_NEW_EXTENSION(conga, conga.c, $ext_shared)
fi
7 changes: 7 additions & 0 deletions ext/config.w32
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
ARG_ENABLE('conga', 'conga support', 'no');

if (PHP_CONGA != 'no') {
AC_DEFINE('HAVE_CONGA', 1, 'conga support enabled');

EXTENSION('conga', 'conga.c', null, '/DZEND_ENABLE_STATIC_TSRMLS_CACHE=1');
}
86 changes: 86 additions & 0 deletions ext/conga.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
/* conga extension for PHP */

#ifdef HAVE_CONFIG_H
# include "config.h"
#endif

#include "php.h"
#include "ext/standard/info.h"
#include "php_conga.h"
#include "conga_arginfo.h"

/* For compatibility with older PHP versions */
#ifndef ZEND_PARSE_PARAMETERS_NONE
#define ZEND_PARSE_PARAMETERS_NONE() \
ZEND_PARSE_PARAMETERS_START(0, 0) \
ZEND_PARSE_PARAMETERS_END()
#endif

/* {{{ void test1() */
PHP_FUNCTION(test1)
{
ZEND_PARSE_PARAMETERS_NONE();

php_printf("The extension %s is loaded and working!\r\n", "conga");
}
/* }}} */

/* {{{ string test2( [ string $var ] ) */
PHP_FUNCTION(test2)
{
char *var = "World";
size_t var_len = sizeof("World") - 1;
zend_string *retval;

ZEND_PARSE_PARAMETERS_START(0, 1)
Z_PARAM_OPTIONAL
Z_PARAM_STRING(var, var_len)
ZEND_PARSE_PARAMETERS_END();

retval = strpprintf(0, "Hello %s", var);

RETURN_STR(retval);
}
/* }}}*/

/* {{{ PHP_RINIT_FUNCTION */
PHP_RINIT_FUNCTION(conga)
{
#if defined(ZTS) && defined(COMPILE_DL_CONGA)
ZEND_TSRMLS_CACHE_UPDATE();
#endif

return SUCCESS;
}
/* }}} */

/* {{{ PHP_MINFO_FUNCTION */
PHP_MINFO_FUNCTION(conga)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These lines are not covered by tests.

{
php_info_print_table_start();
php_info_print_table_row(2, "conga support", "enabled");
php_info_print_table_end();
}
Comment on lines +60 to +63

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These lines are not covered by tests.

/* }}} */

/* {{{ conga_module_entry */
zend_module_entry conga_module_entry = {
STANDARD_MODULE_HEADER,
"conga", /* Extension name */
ext_functions, /* zend_function_entry */
NULL, /* PHP_MINIT - Module initialization */
NULL, /* PHP_MSHUTDOWN - Module shutdown */
PHP_RINIT(conga), /* PHP_RINIT - Request initialization */
NULL, /* PHP_RSHUTDOWN - Request shutdown */
PHP_MINFO(conga), /* PHP_MINFO - Module info */
PHP_CONGA_VERSION, /* Version */
STANDARD_MODULE_PROPERTIES
};
/* }}} */

#ifdef COMPILE_DL_CONGA
# ifdef ZTS
ZEND_TSRMLS_CACHE_DEFINE()
# endif
ZEND_GET_MODULE(conga)
#endif
10 changes: 10 additions & 0 deletions ext/conga.stub.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?php

/**
* @generate-class-entries
* @undocumentable
*/

function test1(): void {}

function test2(string $str = ""): string {}
20 changes: 20 additions & 0 deletions ext/conga_arginfo.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/* This is a generated file, edit the .stub.php file instead.
* Stub hash: 54b0ffc3af871b189435266df516f7575c1b9675 */

ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_test1, 0, 0, IS_VOID, 0)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_test2, 0, 0, IS_STRING, 0)
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, str, IS_STRING, 0, "\"\"")
ZEND_END_ARG_INFO()


ZEND_FUNCTION(test1);
ZEND_FUNCTION(test2);


static const zend_function_entry ext_functions[] = {
ZEND_FE(test1, arginfo_test1)
ZEND_FE(test2, arginfo_test2)
ZEND_FE_END
};
15 changes: 15 additions & 0 deletions ext/php_conga.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/* conga extension for PHP */

#ifndef PHP_CONGA_H
# define PHP_CONGA_H

extern zend_module_entry conga_module_entry;
# define phpext_conga_ptr &conga_module_entry

# define PHP_CONGA_VERSION "0.1.0"

# if defined(ZTS) && defined(COMPILE_DL_CONGA)
ZEND_TSRMLS_CACHE_EXTERN()
# endif

#endif /* PHP_CONGA_H */
10 changes: 10 additions & 0 deletions ext/tests/001.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
--TEST--
Check if conga is loaded
--EXTENSIONS--
conga
--FILE--
<?php
echo 'The extension "conga" is available';
?>
--EXPECT--
The extension "conga" is available
13 changes: 13 additions & 0 deletions ext/tests/002.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
--TEST--
test1() Basic test
--EXTENSIONS--
conga
--FILE--
<?php
$ret = test1();

var_dump($ret);
?>
--EXPECT--
The extension conga is loaded and working!
NULL
12 changes: 12 additions & 0 deletions ext/tests/003.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
--TEST--
test2() Basic test
--EXTENSIONS--
conga
--FILE--
<?php
var_dump(test2());
var_dump(test2('PHP'));
?>
--EXPECT--
string(11) "Hello World"
string(9) "Hello PHP"
15 changes: 15 additions & 0 deletions ext/tests/004.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
--TEST--
Test phpinfo()
--EXTENSIONS--
conga
--FILE--
<?php
ob_start(
static fn (string $phpinfo): string
=> str_contains($phpinfo, 'conga support') ? 'Success' : 'Failure'
);
phpinfo();
ob_end_flush();
?>
--EXPECT--
Success