def test_components_flagged(): """Test that `Components` is flagged in Jetpack.""" js = """ var x = Components.services.foo.bar; """ assert not _js_test(js).failed() assert _js_test(js, jetpack=True).failed()
def test_observer_service_flagged(): assert _js_test(""" var {Ci} = require("chrome"); thing.QueryInterface(Ci.nsIObserverService); """, jetpack=True).failed() assert not _js_test(""" thing.QueryInterface(Ci.nsIObserverService); """).failed()
def test_absolute_uris_in_js(): """ Test that a warning is thrown for absolute URIs within JS files. """ bad_js = 'alert("resource://foo-data/bar/zap.png");' assert not _js_test(bad_js).failed() err =_js_test(bad_js, jetpack=True) assert err.failed() assert err.compat_summary['errors'] # Test that literals are inspected even if they're the result of an # operation. bad_js = 'alert("resou" + "rce://foo-" + "data/bar/zap.png");' assert not _js_test(bad_js).failed() err =_js_test(bad_js, jetpack=True) assert err.failed() assert err.compat_summary['errors']
def test_absolute_uris_in_js(): """ Test that a warning is thrown for absolute URIs within JS files. """ bad_js = 'alert("resource://foo-data/bar/zap.png");' assert not _js_test(bad_js).failed() err = _js_test(bad_js, jetpack=True) assert err.failed() assert err.compat_summary["errors"] # Test that literals are inspected even if they're the result of an # operation. bad_js = 'alert("resou" + "rce://foo-" + "data/bar/zap.png");' assert not _js_test(bad_js).failed() err = _js_test(bad_js, jetpack=True) assert err.failed() assert err.compat_summary["errors"]
def interface_cases(interface): err = _js_test("""var {cc, ci} = require("%s")""" % interface, jetpack=True) print err.print_summary(verbose=True) first_message = err.warnings[0]['message'] assert 'non-SDK interface' in first_message, ('unexpected: %s' % first_message) assert 'requires_chrome' in err.metadata, \ 'unexpected: "requires_chrome" should be in metadata' eq_(err.metadata['requires_chrome'], True)
def test_unsafe_safe_require(test_input): """Test that requiring low-level modules does add the requires_chrome flag.""" err = _js_test("""var {cc, ci} = require("%s")""" % test_input, jetpack=True) print err.print_summary(verbose=True) first_message = err.warnings[0]['message'] assert 'non-SDK interface' in first_message, ('unexpected: %s' % first_message) assert 'requires_chrome' in err.metadata, \ 'unexpected: "requires_chrome" should be in metadata' assert err.metadata['requires_chrome'] is True
def base_case(): err = _js_test("""var foo = require("bar");""", jetpack=True) eq_(err.metadata['requires_chrome'], False)
def test_safe_require(): """Test that requiring an innocuous module does not add the requires_chrome flag.""" err = _js_test("""var foo = require("bar");""", jetpack=True) assert err.metadata['requires_chrome'] is False