tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

extract-test-corpus.js (1870B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2 * License, v. 2.0. If a copy of the MPL was not distributed with this
      3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 "use strict";
      6 
      7 const { CFRMessageProvider } = ChromeUtils.importESModule(
      8  "resource:///modules/asrouter/CFRMessageProvider.sys.mjs"
      9 );
     10 const { OnboardingMessageProvider } = ChromeUtils.importESModule(
     11  "resource:///modules/asrouter/OnboardingMessageProvider.sys.mjs"
     12 );
     13 const { PanelTestProvider } = ChromeUtils.importESModule(
     14  "resource:///modules/asrouter/PanelTestProvider.sys.mjs"
     15 );
     16 
     17 const CWD = Services.dirsvc.get("CurWorkD", Ci.nsIFile).path;
     18 const CORPUS_DIR = PathUtils.join(CWD, "corpus");
     19 
     20 const CORPUS = [
     21  {
     22    name: "CFRMessageProvider.messages.json",
     23    provider: CFRMessageProvider,
     24  },
     25  {
     26    name: "OnboardingMessageProvider.messages.json",
     27    provider: OnboardingMessageProvider,
     28  },
     29  {
     30    name: "PanelTestProvider.messages.json",
     31    provider: PanelTestProvider,
     32  },
     33  {
     34    name: "PanelTestProvider_toast_notification.messages.json",
     35    provider: PanelTestProvider,
     36    filter: message => message.template === "toast_notification",
     37  },
     38 ];
     39 
     40 let exit = false;
     41 async function main() {
     42  try {
     43    await IOUtils.makeDirectory(CORPUS_DIR);
     44 
     45    for (const entry of CORPUS) {
     46      const { name, provider } = entry;
     47      const filter = entry.filter ?? (() => true);
     48      const messages = await provider.getMessages();
     49      const json = `${JSON.stringify(messages.filter(filter), undefined, 2)}\n`;
     50 
     51      const path = PathUtils.join(CORPUS_DIR, name);
     52      await IOUtils.writeUTF8(path, json);
     53    }
     54  } finally {
     55    exit = true;
     56  }
     57 }
     58 
     59 main();
     60 
     61 // We need to spin the event loop here, otherwise everything goes out of scope.
     62 Services.tm.spinEventLoopUntil(
     63  "extract-test-corpus.js: waiting for completion",
     64  () => exit
     65 );