/* Any copyright is dedicated to the Public Domain.
   http://creativecommons.org/publicdomain/zero/1.0/ */

"use strict";

/**
 * Make sure that setting a breakpoint in a not-yet-existing script doesn't throw
 * an error (see bug 897567). Also make sure that this breakpoint works.
 */

const URL = "test.js";

function setUpCode(debuggee) {
  /* eslint-disable mozilla/var-only-at-top-level, no-unused-vars */
  // prettier-ignore
  Cu.evalInSandbox(
    "" + function test() { // 1
      var a = 1;           // 2
      debugger;            // 3
    } +                    // 4
    "\ndebugger;",         // 5
    debuggee,
    "1.8",
    URL
  );
  /* eslint-enable mozilla/var-only-at-top-level, no-unused-vars */
}

add_task(
  threadFrontTest(async ({ threadFront, debuggee }) => {
    setBreakpoint(threadFront, { sourceUrl: URL, line: 2 });

    await executeOnNextTickAndWaitForPause(
      () => setUpCode(debuggee),
      threadFront
    );
    await resume(threadFront);

    const packet = await executeOnNextTickAndWaitForPause(
      debuggee.test,
      threadFront
    );
    equal(packet.why.type, "breakpoint");
  })
);
