addon-sdk/source/test/test-modules.js

Thu, 15 Jan 2015 15:59:08 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 15 Jan 2015 15:59:08 +0100
branch
TOR_BUG_9701
changeset 10
ac0c01689b40
permissions
-rw-r--r--

Implement a real Private Browsing Mode condition by changing the API/ABI;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.

     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/. */
     5 exports.testDefine = function(assert) {
     6   let tiger = require('./modules/tiger');
     7   assert.equal(tiger.name, 'tiger', 'name proprety was exported properly');
     8   assert.equal(tiger.type, 'cat', 'property form other module exported');
     9 };
    11 exports.testDefineInoresNonFactory = function(assert) {
    12   let mod = require('./modules/async2');
    13   assert.equal(mod.name, 'async2', 'name proprety was exported properly');
    14   assert.ok(mod.traditional2Name !== 'traditional2', '1st is ignored');
    15 };
    16 /* Disable test that require AMD specific functionality:
    18 // define() that exports a function as the module value,
    19 // specifying a module name.
    20 exports.testDefExport = function(assert) {
    21   var add = require('modules/add');
    22   assert.equal(add(1, 1), 2, 'Named define() exporting a function');
    23 };
    25 // define() that exports function as a value, but is anonymous
    26 exports.testAnonDefExport = function (assert) {
    27   var subtract = require('modules/subtract');
    28   assert.equal(subtract(4, 2), 2,
    29                    'Anonymous define() exporting a function');
    30 }
    32 // using require([], function () {}) to load modules.
    33 exports.testSimpleRequire = function (assert) {
    34   require(['modules/blue', 'modules/orange'], function (blue, orange) {
    35     assert.equal(blue.name, 'blue', 'Simple require for blue');
    36     assert.equal(orange.name, 'orange', 'Simple require for orange');
    37     assert.equal(orange.parentType, 'color',
    38                      'Simple require dependency check for orange');
    39   });
    40 }
    42 // using nested require([]) calls.
    43 exports.testSimpleRequireNested = function (assert) {
    44   require(['modules/blue', 'modules/orange', 'modules/green'],
    45   function (blue, orange, green) {
    47     require(['modules/orange', 'modules/red'], function (orange, red) {
    48       assert.equal(red.name, 'red', 'Simple require for red');
    49       assert.equal(red.parentType, 'color',
    50                        'Simple require dependency check for red');
    51       assert.equal(blue.name, 'blue', 'Simple require for blue');
    52       assert.equal(orange.name, 'orange', 'Simple require for orange');
    53       assert.equal(orange.parentType, 'color',
    54                        'Simple require dependency check for orange');
    55       assert.equal(green.name, 'green', 'Simple require for green');
    56       assert.equal(green.parentType, 'color',
    57                        'Simple require dependency check for green');
    58     });
    60   });
    61 }
    63 // requiring a traditional module, that uses async, that use traditional and
    64 // async, with a circular reference
    65 exports.testMixedCircular = function (assert) {
    66   var t = require('modules/traditional1');
    67   assert.equal(t.name, 'traditional1', 'Testing name');
    68   assert.equal(t.traditional2Name, 'traditional2',
    69                    'Testing dependent name');
    70   assert.equal(t.traditional1Name, 'traditional1', 'Testing circular name');
    71   assert.equal(t.async2Name, 'async2', 'Testing async2 name');
    72   assert.equal(t.async2Traditional2Name, 'traditional2',
    73                    'Testing nested traditional2 name');
    74 }
    76 // Testing define()(function(require) {}) with some that use exports,
    77 // some that use return.
    78 exports.testAnonExportsReturn = function (assert) {
    79   var lion = require('modules/lion');
    80   require(['modules/tiger', 'modules/cheetah'], function (tiger, cheetah) {
    81     assert.equal('lion', lion, 'Check lion name');
    82     assert.equal('tiger', tiger.name, 'Check tiger name');
    83     assert.equal('cat', tiger.type, 'Check tiger type');
    84     assert.equal('cheetah', cheetah(), 'Check cheetah name');
    85   });
    86 }
    88 // circular dependency
    89 exports.testCircular = function (assert) {
    90   var pollux = require('modules/pollux'),
    91       castor = require('modules/castor');
    93   assert.equal(pollux.name, 'pollux', 'Pollux\'s name');
    94   assert.equal(pollux.getCastorName(),
    95                    'castor', 'Castor\'s name from Pollux.');
    96   assert.equal(castor.name, 'castor', 'Castor\'s name');
    97   assert.equal(castor.getPolluxName(), 'pollux',
    98                    'Pollux\'s name from Castor.');
    99 }
   101 // test a bad module that asks for exports but also does a define() return
   102 exports.testBadExportAndReturn = function (assert) {
   103   var passed = false;
   104   try {
   105     var bad = require('modules/badExportAndReturn');
   106   } catch(e) {
   107     passed = /cannot use exports and also return/.test(e.toString());
   108   }
   109   assert.equal(passed, true, 'Make sure exports and return fail');
   110 }
   112 // test a bad circular dependency, where an exported value is needed, but
   113 // the return value happens too late, a module already asked for the exported
   114 // value.
   115 exports.testBadExportAndReturnCircular = function (assert) {
   116   var passed = false;
   117   try {
   118     var bad = require('modules/badFirst');
   119   } catch(e) {
   120     passed = /after another module has referenced its exported value/
   121              .test(e.toString());
   122   }
   123   assert.equal(passed, true, 'Make sure return after an exported ' +
   124                                  'value is grabbed by another module fails.');
   125 }
   127 // only allow one define call per file.
   128 exports.testOneDefine = function (assert) {
   129   var passed = false;
   130   try {
   131     var dupe = require('modules/dupe');
   132   } catch(e) {
   133     passed = /Only one call to define/.test(e.toString());
   134   }
   135   assert.equal(passed, true, 'Only allow one define call per module');
   136 }
   138 // only allow one define call per file, testing a bad nested define call.
   139 exports.testOneDefineNested = function (assert) {
   140   var passed = false;
   141   try {
   142     var dupe = require('modules/dupeNested');
   143   } catch(e) {
   144     passed = /Only one call to define/.test(e.toString());
   145   }
   146   assert.equal(passed, true, 'Only allow one define call per module');
   147 }
   148 */
   150 require('sdk/test').run(exports);

mercurial