Julian Bouzas
227dd97036
m-lua-scripting: always parse JSON to String if its type is not recognized
...
This allows parsing JSON strings without quotes.
2023-08-11 14:48:13 -04:00
Julian Bouzas
6b761c03e1
m-lua-scripting: ignore string/integer table keys when constructing a JSON Array/Object
2023-01-04 11:20:14 -05:00
George Kiagiadakis
6fd04f5267
tests: wplua: json: test json object key with spaces and special characters
...
Related to: #386
2022-12-05 10:13:52 +02:00
Julian Bouzas
0996f5a5ca
spa-json: add wp_spa_json_to_string() API
...
Since the string length returned by wp_spa_pod_get_data() does not always match
the size of the actual json object because it is stored in contiguous memory, we
cannot always rely on that API to get the json string data.
The new wp_spa_pod_to_string() always allocates a new string with the same
length as the json size, guaranteeing that the string returned always represents
the json object, regardless of whether it is nested or not. It is always
recommented to use wp_spa_pod_to_string() unless you know what you are doing.
2022-06-27 10:07:16 +00:00
George Kiagiadakis
81af8c2069
lua: sandbox: remove all traces of the minimal_std flag, as it's no longer used
2022-04-23 20:14:59 +03:00
George Kiagiadakis
b29b313e7b
tests: wplua: add a test for asynchronous script activation
2022-04-23 20:14:59 +03:00
George Kiagiadakis
ecb6100b77
m-lua-scripting: wrap every script in a WpPlugin and expose async activation api
...
This allows scripts to declare when they have finished their loading,
so we can now also know when wireplumber is done loading and ready to
handle clients
Related to !313
2022-04-23 20:14:59 +03:00
George Kiagiadakis
9387ce0d95
wplua: implement reference counting of the lua_State
2022-04-23 20:14:59 +03:00
George Kiagiadakis
9c22f6076a
wplua: enable the use of require() to load lua libraries from scripts/lib
2022-04-23 20:14:59 +03:00
George Kiagiadakis
e1d0240bc9
wplua: split the functionality of the load functions into smaller functions
...
The load functions used to do 3 things:
- push the sandbox function on the stack
- load the file and push it as a function on the stack
- call the sandbox (or the file)
Now there are separate functions to do these 3:
- wplua_push_sandbox
- wplua_load_*
- wplua_pcall
2022-04-23 20:14:59 +03:00
Wim Taymans
f46a801edb
tests: use GNU_SOURCE for compiling tests as well
...
So that strtod_l is found.
2022-03-21 12:01:00 +01:00
Julian Bouzas
b0ddd6f890
m-lua-scripting: add Json.Raw constructor
2022-01-26 09:53:24 -05:00
Julian Bouzas
20187e07b5
m-lua-scripting: add WpSpaJson API
2022-01-25 07:20:35 -05:00
Julian Bouzas
711d1ee686
spa-pod: add support for custom Id properties
...
Allows creating and parsing Pod Objects with custom properties.
2021-09-21 12:29:54 -04:00
Julian Bouzas
70197f498c
tests: fix coverity scan side effect in assertion issues
2021-06-25 08:50:08 -04:00
George Kiagiadakis
c24db9f353
tests: add pipewire env variables when running tests, tidy up common_env
...
Related to pipewire!767
2021-06-18 19:34:25 +03:00
George Kiagiadakis
b6a5750595
Revert "tests: enable G_SLICE=debug-blocks in all tests"
...
This breaks the valgrind test setup, as this G_SLICE overrides
G_SLICE=always-malloc from valgrind_env
This reverts commit a0d0069f18 .
2021-06-10 14:52:30 +03:00
George Kiagiadakis
a0d0069f18
tests: enable G_SLICE=debug-blocks in all tests
...
This can catch allocation mistakes in the g_slice allocator
2021-06-09 12:21:56 +03:00
George Kiagiadakis
82c054f1bd
meson: use environment() objects to define env for tests
...
it's just a nicer syntax
2021-06-09 12:03:14 +03:00
George Kiagiadakis
51e24c58b5
m-lua-scripting/pod: retrieve Ids in Array & Choice as strings, if possible
...
When an Array or Choice that contains Spa:Id appears as a value for an object
field, it is possible to retrieve the Id type from that object field type.
2021-02-23 13:56:38 +02:00
George Kiagiadakis
5302700c6d
m-lua-scripting/pod: s/id_type/object_id/ as commented on !125
2021-02-23 12:47:24 +02:00
Julian Bouzas
bd65f9578d
m-lua-scripting: add support for choices when creating object pods
2021-02-23 10:41:46 +00:00
Julian Bouzas
0694889245
m-lua-scripting: refactor array and choice pod constructors to accept Id names
2021-02-23 10:41:46 +00:00
Julian Bouzas
910ff838e4
m-lua-scripting: allow constructing pod Ids with the Id name
2021-02-23 10:41:46 +00:00
Julian Bouzas
cd2e648b3c
m-lua-scripting: set id_type field when parsing pod objects
2021-02-23 10:41:46 +00:00
Julian Bouzas
2465088c5a
m-lua-scripting: set pod_type and value_type fieds when parsing non-primitive pods
2021-02-23 10:41:46 +00:00
Julian Bouzas
8fa6116786
m-lua-scripting: start indices from 1 when parsing pods
...
For consistency with LUA
2021-02-23 10:41:46 +00:00
George Kiagiadakis
7c1fc1c567
wplua: table_to_properties: use luaL_tolstring to do string conversions
...
The advantage is that luaL_tolstring behaves the same as the native lua
tostring() function, while lua_tostring() does not. In particular, boolean
values are converted properly to "true" and "false" now, while they were
not converted with lua_tostring()
Add a unit test too
2021-02-16 16:53:22 +02:00
George Kiagiadakis
b3ff7347cd
wplua: improve GVariant array conversion
...
* index array items from 1
* handle any kind of value, not just GVariant basic types
* unit test
2021-02-15 14:43:18 +02:00
George Kiagiadakis
dacf19d9c7
wplua: improve gvariant <-> lua conversion functions
...
* Add more generic lua -> gvariant conversion
* Cleanup the gvariant -> lua function and rename it
2021-02-15 14:43:18 +02:00
George Kiagiadakis
0196b49453
tests/lua: test monitor configuration rules code
2021-02-13 11:55:00 +02:00
Julian Bouzas
cbe90a5c75
wplua: handle more GVariant cases
2021-02-12 14:28:38 -05:00
George Kiagiadakis
6039223642
tests/wplua: set WIREPLUMBER_CONFIG_DIR to an invalid directory
...
... because loading a script first looks in that directory, so it's
easy to make tests break by a conflicting file in the system config dir,
for instance, /etc/wireplumber/scripts/pod.lua
2021-02-05 19:49:52 +02:00
George Kiagiadakis
33e546d79b
lua/pod: convert Id object fields to strings, if possible
2021-02-05 18:58:02 +02:00
Julian Bouzas
b32072a2ed
tests: wplua: add pod.lua script to validate pod API
2021-02-05 08:47:27 +00:00
George Kiagiadakis
b58eff2b69
tests: wplua: add a script tester to validate lua scripts
2021-02-05 08:47:27 +00:00
George Kiagiadakis
460ff6591d
wplua: allow exchanging arguments and results with scripts
2021-02-03 17:16:51 +02:00
George Kiagiadakis
81d6f055a0
wplua: add GVariant dictionary conversion functions
2021-02-03 17:16:51 +02:00
George Kiagiadakis
94d527e187
wplua: add flags to modify the sandbox behavior
...
with ISOLATE_ENV, it isolates the global environment between scripts
just like it did before; without it, it uses a common environment
with MINIMAL_STD, it restricts even further the available library
functions; useful for configuration files that don't need to do
actual scripting, just to define some tables
2021-02-03 17:16:51 +02:00
George Kiagiadakis
70931969b4
wplua: remove TypeClass, push constructors as ClassName_new
2020-12-16 23:14:58 +02:00
George Kiagiadakis
65b817f6fc
wplua: add proper GError domain & error codes
2020-12-15 18:36:14 +02:00
George Kiagiadakis
8b4c5af49c
wplua: implement sandboxing of scripts
...
All loaded scripts can now be run in a protected environment
so that they cannot do any harm to the host or to each other
2020-12-15 18:28:28 +02:00
George Kiagiadakis
7d692e0246
wplua: new simple engine to integrate GObject with Lua
2020-12-11 17:07:20 +02:00