polserver/testsuite/pol/testpkgs/sql/test_sql.src
Kevin Eady 3ccf701ce9
Format testsuite scripts, pol-core support modules (#713)
* Format escript testsuite

* Manual formatting for escript testsuite
- Add format-off to places where formatter does what it should, but we don't like the results
- Manually change places where formatter outputs weird things _without_ format-off, so next format-all would show changes if not fixed

* Update .err files; add update_err.py helper script

Use the format `:line:col: message` for all .err file checks. This
allows us to change the file names without needing to edit the .err
contents.

Note that `in/inc0{1,2}.err` need have error messages between POSIX and
Windows, so their messages are a bit more "generic" than the other errs.

* Format pol testsuite

* Manual formatting for pol testsuite

* Format pol-core modules

* Manual formatting for pol-core modules

* Additional format pol-core modules

Use FormatterLineWidth=10000 since module functions must be on one line
because of the parse_modules target

* Address Discord comments

- Support multi-line module function declarations in parse_modules

* Format on df07831
2024-10-04 10:29:55 +02:00

82 lines
2.5 KiB
Text

use uo;
use os;
use sql;
include "testutil";
var conn;
program testsql()
conn := mysql_connect( "localhost", "root", "root" );
if ( !conn )
return ret_error( $"failed to connect: {conn}" );
endif
var db := mysql_select_db( conn, "poltest" );
if ( !db )
mysql_close( conn );
return ret_error( $"failed to select db: {db}" );
endif
var query := mysql_query( conn,
"CREATE TABLE IF NOT EXISTS db_test (`key` int(11) NOT NULL, `val` varchar(128) NOT NULL, PRIMARY KEY (`key`))"
);
if ( !query )
mysql_close( conn );
return ret_error( $"failed to create table {query}" );
endif
query := mysql_query( conn, "INSERT INTO db_test VALUES (1,'one'), (2,'two');" );
if ( !query )
mysql_close( conn );
return ret_error( $"failed to insert values {query}" );
endif
return 1;
endprogram
exported function sqlquery()
var res := mysql_query( conn, "SELECT val FROM db_test" );
var num := mysql_num_rows( res );
if ( num != 2 )
return ret_error( $"failed to get values {num}!=2 - {res}" );
endif
for i := 1 to ( mysql_num_rows( res ) )
var val := mysql_fetch_row( res )[1];
if ( i == 1 && val != "one" )
return ret_error( $"wrong value {val}!=one" );
elseif ( i == 2 && val != "two" )
return ret_error( $"wrong value {val}!=two" );
endif
endfor
return 1;
endfunction
exported function sqlquery_param()
var query := mysql_query( conn, "INSERT INTO db_test VALUES (3,?), (4,?);", { "three", "four" } );
if ( !query )
return ret_error( $"failed to add values {query}" );
endif
var res := mysql_query( conn, "SELECT val FROM db_test" );
var num := mysql_num_rows( res );
if ( num != 4 )
return ret_error( $"failed to get values {num}!=4 - {res}" );
endif
for i := 1 to ( mysql_num_rows( res ) )
var val := mysql_fetch_row( res )[1];
if ( i == 1 && val != "one" )
return ret_error( $"wrong value {val}!=one" );
elseif ( i == 2 && val != "two" )
return ret_error( $"wrong value {val}!=two" );
elseif ( i == 3 && val != "three" )
return ret_error( $"wrong value {val}!=three" );
elseif ( i == 4 && val != "four" )
return ret_error( $"wrong value {val}!=four" );
endif
endfor
return 1;
endfunction
exported function sql_escape_string()
var text := mysql_escape_string( conn, "blubb'" );
if ( text != "blubb\\'" )
return ret_error( $"wrong value: {text}!=blubb\\'" );
endif
return 1;
endfunction