File: test_failedOpenConnection_leak.html

package info (click to toggle)
firefox 147.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 4,683,324 kB
  • sloc: cpp: 7,607,156; javascript: 6,532,492; ansic: 3,775,158; python: 1,415,368; xml: 634,556; asm: 438,949; java: 186,241; sh: 62,751; makefile: 18,079; objc: 13,092; perl: 12,808; yacc: 4,583; cs: 3,846; pascal: 3,448; lex: 1,720; ruby: 1,003; php: 436; lisp: 258; awk: 247; sql: 66; sed: 54; csh: 10; exp: 6
file content (61 lines) | stat: -rw-r--r-- 1,821 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<!DOCTYPE HTML>
<html>

<head>
  <meta charset="utf-8">
  <title>Tests for the BackupSettings component</title>
  <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
  <script src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script>
  <link rel="stylesheet" href="chrome://mochikit/content/tests/SimpleTest/test.css" />
  <script>

    const { Assert } = ChromeUtils.importESModule(
      "resource://testing-common/Assert.sys.mjs"
    );

    /**
     * Tests that failing to open a SQLite connection doesn't leak the SQLite
     * structure. sqlite3_close() must always be invoked, even in case of failures.
     * This will only fail on asan builds and requires shutdown leaks detection.
     */

    add_task(async function test_initWidget() {
      let file = Services.dirsvc.get("ProfDS", Ci.nsIFile);
      file.append("nonexisting.sqlite");

      try {
        file.remove(true);
      } catch (ex) { }
      await Assert.rejects(
        new Promise((resolve, reject) => {
          Services.storage.openAsyncDatabase(
            file,
            Ci.mozIStorageService.OPEN_READONLY,
            Ci.mozIStorageService.CONNECTION_DEFAULT,
            function (status, db) {
              if (Components.isSuccessCode(status)) {
                resolve(db.QueryInterface(Ci.mozIStorageAsyncConnection));
              } else {
                reject(new Components.Exception("Error opening database", status));
              }
            }
          );
        }),
        /NS_ERROR_FILE_ACCESS_DENIED/,
        "Should fail to open non existing database"
      );
    });

    ok(true, "Must have at least one test");

  </script>
</head>

<body>
  <p id="display"></p>
  <div id="content" style="display: none">
  </div>
  <pre id="test"></pre>
</body>

</html>