ynhtest_exec_warn_less() {

    FOO='foo'
    bar=""
    BAR='$bar'
    FOOBAR="foo bar"

    # These looks like stupid edge case
    # but in fact happens when dealing with passwords
    # (which could also contain bash chars like [], {}, ...)
    # or urls containing &, ...
    FOOANDBAR="foo&bar"
    FOO1QUOTEBAR="foo'bar"
    FOO2QUOTEBAR="foo\"bar"
    
    ynh_exec_warn_less uptime
   
    test ! -e $FOO
    ynh_exec_warn_less touch $FOO
    test -e $FOO
    rm $FOO

    test ! -e $FOO1QUOTEBAR
    ynh_exec_warn_less touch $FOO1QUOTEBAR
    test -e $FOO1QUOTEBAR
    rm $FOO1QUOTEBAR

    test ! -e $FOO2QUOTEBAR
    ynh_exec_warn_less touch $FOO2QUOTEBAR
    test -e $FOO2QUOTEBAR
    rm $FOO2QUOTEBAR

    test ! -e $BAR
    ynh_exec_warn_less touch $BAR
    test -e $BAR
    rm $BAR

    test ! -e "$FOOBAR"
    ynh_exec_warn_less touch "$FOOBAR"
    test -e "$FOOBAR"
    rm "$FOOBAR"

    test ! -e "$FOOANDBAR"
    ynh_exec_warn_less touch $FOOANDBAR
    test -e "$FOOANDBAR"
    rm "$FOOANDBAR"

    ###########################
    # Legacy stuff using eval #
    ###########################
    
    test ! -e $FOO
    ynh_exec_warn_less "touch $FOO"
    test -e $FOO
    rm $FOO

    test ! -e $FOO1QUOTEBAR
    ynh_exec_warn_less "touch \"$FOO1QUOTEBAR\""
    # (this works but expliciy *double* quotes have to be provided)
    test -e $FOO1QUOTEBAR
    rm $FOO1QUOTEBAR

    #test ! -e $FOO2QUOTEBAR
    #ynh_exec_warn_less "touch \'$FOO2QUOTEBAR\'"
    ## (this doesn't work with simple or double quotes)
    #test -e $FOO2QUOTEBAR
    #rm $FOO2QUOTEBAR

    test ! -e $BAR
    ynh_exec_warn_less 'touch $BAR'
    # That one works because $BAR is only interpreted during eval
    test -e $BAR
    rm $BAR

    #test ! -e $BAR
    #ynh_exec_warn_less "touch $BAR"
    # That one doesn't work because $bar gets interpreted as empty var by eval...
    #test -e $BAR
    #rm $BAR

    test ! -e "$FOOBAR"
    ynh_exec_warn_less "touch \"$FOOBAR\""
    # (works but requires explicit double quotes otherwise eval would interpret 'foo bar' as two separate args..)
    test -e "$FOOBAR"
    rm "$FOOBAR"

    test ! -e "$FOOANDBAR"
    ynh_exec_warn_less "touch \"$FOOANDBAR\""
    # (works but requires explicit double quotes otherwise eval would interpret '&' as a "run command in background" and also bar is not a valid command)
    test -e "$FOOANDBAR"
    rm "$FOOANDBAR"
}