<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<div id=log></div>
<script>
  var log = function() {}, // see comment below
      p = function() {}, // see comment below
      fails = ["", "?type=", "?type=x", "?type=x/x"],
      passes = ["?type=text/javascript", "?type=text/ecmascript", "?type=text/ecmascript;blah"]

  // Ideally we'd also check whether the scripts in fact execute, but that would involve
  // timers and might get a bit racy without cross-browser support for the execute events.

  fails.forEach(function(urlpart) {
    async_test(function(t) {
      var script = document.createElement("script")
      script.onerror = t.step_func_done(function(){})
      script.onload = t.unreached_func("Unexpected load event")
      script.src = "resources/js.py" + urlpart
      document.body.appendChild(script)
    }, "URL query: " + urlpart)
  })

  passes.forEach(function(urlpart) {
    async_test(function(t) {
      var script = document.createElement("script")
      script.onerror = t.unreached_func("Unexpected error event")
      script.onload = t.step_func_done(function(){})
      script.src = "resources/js.py" + urlpart + "&outcome=p"
      document.body.appendChild(script)
    }, "URL query: " + urlpart)
  })
</script>
