It looks like ExpressionOrScriptMixin makes the script option never work. Since, the expression is always set with a default value, the mutual exclusive condition on script/expression option would never be met.
May be this is an issue with ExpressionOrScriptMixin itself?