Sluz 0.9.4 unit tests on PHP 8.5.6

Hooray! All tests passed successfully
Basic #1 - Static string
Pass
Basic #2 - Basic variable
Pass
Basic #3 - Missing variable
Pass
Basic #4 - PHP Modifier
Pass
Basic #5 - Hash Lookup
Pass
Basic #6 - Array Lookup
Pass
Basic #7 - PHP Modifier array
Pass
Basic #8 - Addition
Pass
Basic #9 - Multiplication of two vars
Pass
Basic #10 - Number literal
Pass
Basic #11 - String literal
Pass
Basic #12 - Single Character variable
Pass
Basic #13 - Array Lookup - PHP Syntax
Pass
Basic #14 - Hash Lookup - PHP Syntax
Pass
Basic #15 - Default - Not Used
Pass
Basic #16 - Default - Zero Not Used
Pass
Basic #17 - Default - Empty String
Pass
Basic #18 - Default - Null
Pass
Basic #19 - Default - non word char
Pass
Basic #20 - Unclosed block
Pass
Basic #21 - Unclosed block variable
Pass
Basic #22 - Hash with default value, not used
Pass
Basic #23 - Hash with default value, used
Pass
Basic #24 - Array used as a scalar
Pass
Basic #25 - Chaining modifiers
Pass
Basic #26 - PHP function with one param
Pass
Basic #27 - PHP function with two params
Pass
Basic #28 - Negated hash lookup
Pass
Basic #29 - Simple math that returns floating point
Pass
Basic #30 - Default chained with modifier (empty var)
Pass
Basic #31 - Default chained with modifier (non-empty var)
Pass
Basic #32 - Mixed types: number + null
Pass
Basic #33 - Mixed types: number + numeric string
Pass
Basic #34 - Default with forward slash (empty)
Pass
Basic #35 - Default with forward slash (non-empty)
Pass
Basic #36 - Default with path containing slashes
Pass
Basic #37 - Default with slash abbreviation
Pass
Basic #38 - Default with forward slash
Pass
Escape #1 - No special chars passthrough
Pass
Escape #2 - HTML encoding
Pass
Escape #3 - Explicit HTML
Pass
Escape #4 - URL encoding
Pass
Escape #5 - JS encoding
Pass
Escape #6 - Default chained with escape
Pass
Escape #7 - Default with escape on empty
Pass
Escape #8 - Invalid escape type
Pass
Auto Escape #1 - Variable auto-escaped
Pass
Auto Escape #2 - Explicit escape, no double-escape
Pass
Auto Escape #3 - Explicit URL escape not overridden
Pass
Auto Escape #4 - Modifier then auto-escape
Pass
Auto Escape #5 - raw opt-out
Pass
Auto Escape #6 - Safe string passthrough
Pass
Auto Escape #7 - Safe string passthrough
Pass
Auto Escape #8 - Expression block not escaped
Pass
Custom function #1 - Modifier with param
Pass
Custom function #2 - Two modifiers with params
Pass
Custom function #3 - Function with default param
Pass
Custom function #4 - Function with integer param
Pass
Custom function #5 - Function with string param
Pass
Custom function #6 - Function with string param pipe
Pass
Custom function #7 - Function with string param pipe comma
Pass
Custom function #8 - Function with string param pipe single quote
Pass
Custom function #9 - Function with string param and space
Pass
Custom function #10 - Function with string param and tab
Pass
Custom function #11 - TypeError in modifier
Pass
Custom function #12 - Unknown modifier function
Pass
Custom function #13 - Exception in modifier
Pass
Function #1 - Hello world
Pass
Function #2 - Return false
Pass
Function #3 - Return null
Pass
Error #1 - bare string
Pass
Error #2 - string with action char
Pass
Error #3 - syntax error
Pass
Error #4 - syntax error
Pass
If #1 - Simple
Pass
If #2 - Missing var
Pass
If #3 - Variable as payload
Pass
If #4 - Nested
Pass
If #5 - Nested with else
Pass
If #6 - Nested with two elses
Pass
If #7 - Else
Pass
If #8 - Hash lookup
Pass
If #9 - Comparison
Pass
If #10 - ||
Pass
If #11 - Two comparisons
Pass
If #12 - Negated comparison
Pass
If #13 - Parens
Pass
If #14 - PHP function conditional
Pass
If #15 - Two block payload
Pass
If #16 - Else not needed
Pass
If #17 - Elseif
Pass
If #18 - Nested if with elseif
Pass
If #19 - Nested if leading/trailing chars
Pass
If #20 - Boolean
Pass
If #21 - Boolean inverted
Pass
If #22 - Hash boolean
Pass
If #23 - Hash boolean inverted
Pass
If #24 - Negated zero (falsy)
Pass
If #25 - Negated false (falsy)
Pass
If #26 - Negated null (falsy)
Pass
If #27 - Negated empty string (falsy)
Pass
If #28 - Nested if with an else
Pass
If #29 - Nested with true
Pass
If #30 - Nested with false
Pass
If #31 - If with "" for payload
Pass
If #32 - Multiple elseif
Pass
If #33 - Double-quoted string comparison
Pass
If #34 - Arithmetic in condition (true)
Pass
If #35 - Arithmetic in condition (false)
Pass
Foreach #1 - Simple
Pass
Foreach #2 - Simple with whitespace
Pass
Foreach #3 - Hash
Pass
Foreach #4 - Array
Pass
Foreach #6 - Key/val array
Pass
Foreach #7 - Key/val hash
Pass
Foreach #8 - Hash key
Pass
Foreach #9 - Missing var
Pass
Foreach #10 - Empty array
Pass
Foreach #11 - One char variables
Pass
Foreach #12 - Foreach with nested if
Pass
Foreach #13 - Foreach with nested if (array)
Pass
Foreach #14 - Null
Pass
Foreach #15 - Scalar
Pass
Foreach #16 - Nested
Pass
Foreach #17 - NOT overwrite variable - previously set
Pass
Foreach #18 - NOT overwrite variable - no initial value
Pass
Foreach #19 - Foreach one char key
Pass
Foreach #20 - Foreach FIRST item
Pass
Foreach #21 - Foreach LAST item
Pass
Foreach #22 - Foreach index
Pass
Foreach #23 - Single element FIRST/LAST both true
Pass
Foreach #24 - String keys
Pass
Plain text #1 - Static text
Pass
Plain text #2 - HTML
Pass
Bad block #1 - Padding with whitespace
Pass
Bad block #2 - {word}
Pass
Literal #1 - {
Pass
Literal #2 - }
Pass
Literal #3 - Literal + {}
Pass
Literal #4 - {literal}
Pass
Literal #5 - Meta literal
Pass
Literal #6 - { with whitespace
Pass
Literal #7 - Raw {}
Pass
Whitespace input/output #1
Pass
Whitespace input/output #2
Pass
Whitespace input/output #3
Pass
Whitespace input/output #4
Pass
Whitespace input/output #5
Pass
Whitespace input/output #6
Pass
Whitespace input/output #7
Pass
Whitespace input/output #8
Pass
Whitespace input/output #9
Pass
Comment #1 - With text
Pass
Comment #2 - ******
Pass
Comment #3 - No whitespace
Pass
Comment #4 - Variable inside
Pass
Comment #5 - Nested
Pass
Comment #6 - Triple Nested
Pass
Comment #7 - Unclosed comment
Pass
Comment #8 - Multi-line comment
Pass
Comment #9 - Multi-line comment with variable
Pass
Include #1 - file='extra.stpl'
Pass
Include #2 - 'extra.stpl'
Pass
Include #3 - No payload
Pass
Include #4 - With variable
Pass
Include #5 - File not found
Pass
Include #6 - Malformed
Pass
Include #7 - With variable file path
Pass
Get blocks #1 - Basic variables
Pass
Get blocks #2 - Basic variables
Pass
Get blocks #3 - Basic variables
Pass
Get blocks #4 - javascript function
Pass
Get blocks #5 - Comments
Pass
Get blocks #6 - Whitespace around variable
Pass
Get blocks #7 - Lots of brackets
Pass
Get blocks #8 - Comment with variable
Pass
Get blocks #9 - Comments with variables
Pass
Get blocks #10 - Comments with variables and whitespace
Pass
Get blocks #11 - Nested foreach
Pass
Get blocks #12 - Only whitespace block
Pass
Get blocks #13 - Double whitespace block
Pass
Get blocks #14 - Only comments
Pass
Fetch #1 - Simple fetch
Pass
Parent/Child #1 - Fetch with two params
Pass
Parent/Child #2 - Fetch with preset parent
Pass
AltDelim #1 - Basic variable
Pass
AltDelim #2 - Modifier
Pass
AltDelim #3 - Modifier chaining
Pass
AltDelim #4 - If block
Pass
AltDelim #5 - If/else
Pass
AltDelim #6 - Foreach
Pass
AltDelim #7 - Comment
Pass
AltDelim #8 - Literal
Pass
AltDelim #9 - Block counting
Pass
AltDelim #10 - Unclosed tag
Pass
AltDelim #11 - Default delimiters restored
Pass

196 tests passed and 0 tests failed