chore: import upstream snapshot with attribution
CI / compile_and_lint (push) Failing after 0s
CI / docker_build (linux/amd64, -linux-amd64-duckdb, duckdb) (push) Failing after 0s
CI / docker_build (linux/arm64, -linux-arm64, minimal) (push) Failing after 2s
CI / docker_build (linux/arm64, -linux-arm64-duckdb, duckdb) (push) Failing after 1s
CI / docker_build (linux/amd64, minimal) (push) Failing after 1s
CI / test (, sqlite, sqlite::memory:) (push) Has been skipped
CI / test (mssql, mssql, mssql://root:Password123!@127.0.0.1/sqlpage) (push) Has been skipped
CI / test (mysql, mysql, mysql://root:Password123!@127.0.0.1/sqlpage) (push) Has been skipped
CI / test (oracle, oracle, Driver=Oracle 21 ODBC driver;Dbq=//127.0.0.1:1521/FREEPDB1;Uid=root;Pwd=Password123!) (push) Has been skipped
CI / test (postgres, odbc, Driver=PostgreSQL Unicode;Server=127.0.0.1;Port=5432;Database=sqlpage;UID=root;PWD=Password123!, true) (push) Has been skipped
CI / test (postgres, postgres, postgres://root:Password123!@127.0.0.1/sqlpage) (push) Has been skipped
CI / playwright (push) Has been skipped
CI / docker_build (linux/arm/v7, -linux-arm-v7, minimal) (push) Failing after 0s
CI / hurl_examples (push) Failing after 8s
deploy website / deploy_official_site (push) Failing after 1s
CI / hurl (${{ matrix.example }}) (push) Has been skipped
CI / docker_push (duckdb) (push) Has been cancelled
CI / docker_push (minimal) (push) Has been cancelled
CI / windows_test (push) Has been cancelled
CI / compile_and_lint (push) Failing after 0s
CI / docker_build (linux/amd64, -linux-amd64-duckdb, duckdb) (push) Failing after 0s
CI / docker_build (linux/arm64, -linux-arm64, minimal) (push) Failing after 2s
CI / docker_build (linux/arm64, -linux-arm64-duckdb, duckdb) (push) Failing after 1s
CI / docker_build (linux/amd64, minimal) (push) Failing after 1s
CI / test (, sqlite, sqlite::memory:) (push) Has been skipped
CI / test (mssql, mssql, mssql://root:Password123!@127.0.0.1/sqlpage) (push) Has been skipped
CI / test (mysql, mysql, mysql://root:Password123!@127.0.0.1/sqlpage) (push) Has been skipped
CI / test (oracle, oracle, Driver=Oracle 21 ODBC driver;Dbq=//127.0.0.1:1521/FREEPDB1;Uid=root;Pwd=Password123!) (push) Has been skipped
CI / test (postgres, odbc, Driver=PostgreSQL Unicode;Server=127.0.0.1;Port=5432;Database=sqlpage;UID=root;PWD=Password123!, true) (push) Has been skipped
CI / test (postgres, postgres, postgres://root:Password123!@127.0.0.1/sqlpage) (push) Has been skipped
CI / playwright (push) Has been skipped
CI / docker_build (linux/arm/v7, -linux-arm-v7, minimal) (push) Failing after 0s
CI / hurl_examples (push) Failing after 8s
deploy website / deploy_official_site (push) Failing after 1s
CI / hurl (${{ matrix.example }}) (push) Has been skipped
CI / docker_push (duckdb) (push) Has been cancelled
CI / docker_push (minimal) (push) Has been cancelled
CI / windows_test (push) Has been cancelled
This commit is contained in:
+6
@@ -0,0 +1,6 @@
|
||||
-- this test is skipped on MSSQL and postgres because their json_object function has a different syntax
|
||||
select 'columns' as component;
|
||||
select
|
||||
JSON_OBJECT('description', 'It works !') as item,
|
||||
JSON_OBJECT('description', 'It works !') as item
|
||||
;
|
||||
@@ -0,0 +1,129 @@
|
||||
select 'dynamic' as component,'{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"dynamic","properties":
|
||||
{"component":"text", "contents": "It works ! (but it shouldn''t)"}
|
||||
}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
|
||||
' as properties;
|
||||
@@ -0,0 +1 @@
|
||||
select 'yes' as "It works !";
|
||||
@@ -0,0 +1,2 @@
|
||||
-- "<!DOCTYPE html><body>It works !</body>" in base64
|
||||
select 'download' as component, 'data:text/html;base64,PCFET0NUWVBFIGh0bWw+PGJvZHk+SXQgd29ya3MgITwvYm9keT4K' as data_url;
|
||||
@@ -0,0 +1,2 @@
|
||||
-- "<!DOCTYPE html><body>It works !</body>" percent encoded
|
||||
select 'download' as component, 'data:text/html,%3C!DOCTYPE%20html%3E%3Cbody%3EIt%20works%20!%3C%2Fbody%3E' as data_url;
|
||||
@@ -0,0 +1,8 @@
|
||||
-- Checks that we can have a page with a single dynamic component containing multiple children
|
||||
select 'dynamic' as component,
|
||||
'[
|
||||
{"component":"dynamic", "properties": [
|
||||
{"component":"text"},
|
||||
{"contents":"It works !", "bold":true}
|
||||
]}
|
||||
]' as properties;
|
||||
@@ -0,0 +1,6 @@
|
||||
-- Checks that we can have a page with a single dynamic component containing multiple children
|
||||
select 'dynamic' as component,
|
||||
'{"component":"text"}' as properties,
|
||||
'{"contents":"Hello, ", "bold":true}' as properties,
|
||||
'{"component":"text"}' as properties,
|
||||
'{"contents":"It works !", "bold":true}' as properties;
|
||||
@@ -0,0 +1,2 @@
|
||||
select 'dynamic' as component,
|
||||
sqlpage.run_sql('tests/sql_test_files/component_rendering/dynamic_shell.sql') as properties;
|
||||
@@ -0,0 +1,7 @@
|
||||
-- Checks that we can have a page with a single dynamic component containing multiple children
|
||||
select 'dynamic' as component,
|
||||
'[
|
||||
{"component":"shell", "title":"It works !"},
|
||||
{"component":"text"},
|
||||
{"contents":"Yes it does !", "bold":true}
|
||||
]' as properties;
|
||||
@@ -0,0 +1,8 @@
|
||||
-- Checks that we can have a page with a single dynamic component containing multiple children
|
||||
select 'dynamic' as component,
|
||||
'[
|
||||
{"component":"text"},
|
||||
{"contents":"Hello, ", "bold":true},
|
||||
{"component":"text"},
|
||||
{"contents":"It works !", "bold":true}
|
||||
]' as properties;
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
select 'text' as component;
|
||||
select 'hello world' as contents;
|
||||
select 'cookie' as component,
|
||||
'username' as name,
|
||||
'John Doe' as value;
|
||||
@@ -0,0 +1,2 @@
|
||||
-- https://github.com/sqlpage/SQLPage/issues/788
|
||||
copy this_table_does_not_exist (csv) from 'recon_csv_file_input' DELIMITER '*' CSV;
|
||||
@@ -0,0 +1,2 @@
|
||||
select 'dynamic' as component,
|
||||
'{ "this object": "has a forbidden comma" , }' as properties; -- this is invalid JSON, and should cause an error
|
||||
@@ -0,0 +1,4 @@
|
||||
select 'shell' as component,
|
||||
lower(sqlpage.url_encode(lower('HELLO'))) as title;
|
||||
-- this is invalid, because the sqlpage pseudo-function is sandwiched between two native SQL functions.
|
||||
-- It can't be executed neither before nor after the query is executed.
|
||||
@@ -0,0 +1,2 @@
|
||||
select 'shell' as component, 'hello' as title;
|
||||
select 'shell' as component, 'world' as title;
|
||||
+1
@@ -0,0 +1 @@
|
||||
select 'dynamic' as component; -- missing "properties" column
|
||||
@@ -0,0 +1,4 @@
|
||||
select 'debug' as component,
|
||||
sqlpage.run_sql(
|
||||
'tests/sql_test_files/component_rendering/error_too_many_nested_inclusions.sql'
|
||||
) as contents;
|
||||
@@ -0,0 +1,4 @@
|
||||
select sqlpage.fetch('{
|
||||
"url": "https://example.com",
|
||||
"invalid_field": "should fail"
|
||||
}')
|
||||
@@ -0,0 +1,6 @@
|
||||
select 'log' as component,
|
||||
'Hello, World!' as message,
|
||||
'info' as level;
|
||||
|
||||
select 'text' as component,
|
||||
'It works !' as contents;
|
||||
@@ -0,0 +1,6 @@
|
||||
-- https://github.com/sqlpage/SQLPage/discussions/600
|
||||
select 'table' as component, 'Link' AS markdown; -- uppercase Link
|
||||
select '[It works !](https://example.com)
|
||||
|
||||
[comment]: <> (This is a comment. If this is visible, there is an error in markdown rendering)' as link; -- lowercase "link".
|
||||
-- If the markdown is not rendered, the page will contain the string "error" and trigger a test failure.
|
||||
@@ -0,0 +1,2 @@
|
||||
select 'dynamic' as component,
|
||||
sqlpage.run_sql('tests/sql_test_files/component_rendering/simple.sql') as properties;
|
||||
@@ -0,0 +1,14 @@
|
||||
select
|
||||
'dynamic' as component,
|
||||
sqlpage.run_sql (
|
||||
'tests/components/display_text.sql',
|
||||
CONCAT ('{"html":"', html, '"}') -- UNSAFE. Don't do that with untrusted data. We do it here because we can't use json_object (the syntax is not the same in all supported databases)
|
||||
) as properties
|
||||
from
|
||||
(
|
||||
select
|
||||
'It ' as html
|
||||
union all
|
||||
select
|
||||
'works !'
|
||||
) t1;
|
||||
@@ -0,0 +1,4 @@
|
||||
set html = 'It ';
|
||||
select 'dynamic' as component, sqlpage.run_sql('tests/components/display_text.sql') as properties;
|
||||
set html = 'works !';
|
||||
select 'dynamic' as component, sqlpage.run_sql('tests/components/display_text.sql') as properties;
|
||||
@@ -0,0 +1,3 @@
|
||||
select 'shell' as component,
|
||||
'/' as search_target,
|
||||
'It works !' as search_value;
|
||||
@@ -0,0 +1,2 @@
|
||||
select 'shell' as component, 'Hello world !' AS title;
|
||||
select 'text' as component, 'It works !' AS contents;
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
-- Doesnt work on mssql because it does not support "create temporary table"
|
||||
create temporary table temp_t(x text);
|
||||
insert into temp_t(x) values ('It works !');
|
||||
select 'dynamic' as component, sqlpage.run_sql('tests/sql_test_files/select_temp_t.sql') AS properties;
|
||||
@@ -0,0 +1,2 @@
|
||||
select 'text' as component,
|
||||
'### It works !' AS contents_md;
|
||||
@@ -0,0 +1,2 @@
|
||||
select 'text' as component,
|
||||
'<span>It works !</span>' AS unsafe_contents_md;
|
||||
@@ -0,0 +1,2 @@
|
||||
select 'shell-empty' as component;
|
||||
select 'text' as component, '<!DOCTYPE html><html><head><title>My page</title></head><body><h1>It works !</h1></body></html>' as html;
|
||||
Reference in New Issue
Block a user