! Title: Static Filtering Parser Checklist
! Homepage: https://github.com/gorhill/uBlock
! Licence: https://github.com/gorhill/uBlock/blob/master/LICENSE.txt
!
! Description:
! To verify that the static filtering parser is properly parsing valid and
! invalid cases, by typically adding the list to uBO, disabling the list,
! and viewing it in uBO's asset viewer.
!
! Feel free to add more entries to more thoroughly validate the static
! filtering parser, submit the changes in your fork of uBO by opening an
! issue at https://github.com/uBlockOrigin/uBlock-issues/issues




!-----------------------
! Parsing should succeed
!-----------------------

! valid patterns
a*
*$xhr
|*$xhr
|$xhr
||*$xhr
||$xhr
||*|$xhr

! valid hosts file entries
:: ab
:: AB
:: ab # comment

! valid hosts file entries
0.0.0.0 0.0.0.0.example.com
0.0.0.0 localhost.example.com
0.0.0.0 local-host.example.com
0.0.0.0 local.com
0.0.0.0 localhost.com
0.0.0.0 local-host.com

! valid options
$script,redirect=noop.js
*$redirect=noop.js
*$empty
*$xhr,empty
*$xhr,redirect=empty

*$csp=default-src 'none'

*$all,~document
*$all,~popup
*$all,~inline-script
*$all,~inline-font

! valid domain option values
*$domain=toto.com|toto.*|~toto.com|~toto.*|tôtó.ça|tôtó.*|~tôtó.ça|[ff00::0]|1.1.1.1

! valid denyallow option values
*$denyallow=toto.com|tôtó.ça|[ff00::0]|1.1.1.1,domain=toto.com




!--------------------
! Parsing should fail
!--------------------

! bad patterns
a
|
||
$
*
|*
||*
||*|

! bad hosts file entries
:: a
:: ab/
:: ab/ # comment
::/ ab
:: ab$

! ignored hosts file entries
0.0.0.0 0.0.0.0
0.0.0.0 local
0.0.0.0 localhost

! bad regex
/(abc|def/$xhr

! non-redirectable types
*$beacon,redirect-rule=empty
*$ping,redirect-rule=empty
*$websocket,redirect-rule=empty
*$ghide,redirect=noop.js

! can't mix csp with other types or redirect directives
*$csp=default-src 'none',empty
*$csp=default-src 'none',redirect=empty
*$redirect=empty,csp=default-src 'none'
*$csp=default-src 'none',xhr
*$csp=default-src 'none',ghide
*$csp=default-src 'none',csp=script-src 'none'

! https://github.com/gorhill/uBlock/issues/2385#issuecomment-494078763
*$~document
*$~popup
*$~inline-script
*$~inline-font

! invalidity of IP addresses is browser-dependent
! invalid domain= option values
*$domain=.toto.com|toto.com.|[ff00::00000]|1.1.1.1111

! invalid denyallow= option values
*$denyallow=.toto.com|toto.com.|toto.*|~toto.com|~toto.*|[ff00::00000]|1.1.1.1111,domain=toto.com

! denyallow= requires a domain= option
*$script,denyallow=toto.com
