PageRenderTime 52ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/doc/_extensions/autojsdoc/parser/tests/test_crap.py

https://gitlab.com/padjis/mapan
Python | 75 lines | 64 code | 1 blank | 10 comment | 0 complexity | f2c83d7a39f70a45bb21436aa3919fa2 MD5 | raw file
  1. # -*- coding: utf-8 -*-
  2. """
  3. Test various crap patterns found in Odoo code to ensure they don't blow up
  4. the parser thingie
  5. """
  6. from autojsdoc.parser import jsdoc
  7. from support import parse
  8. def test_export_external():
  9. [mod] = parse("""
  10. odoo.define('module', function () {
  11. return $.Deferred().reject();
  12. });
  13. """)
  14. assert isinstance(mod.exports, jsdoc.CommentDoc)
  15. assert mod.exports.doc == ''
  16. def test_extend_jq():
  17. parse("""
  18. odoo.define('a', function (r) {
  19. $.extend($.expr[':'], { a: function () {} });
  20. $.fn.extend({ a: function () {} });
  21. });
  22. """)
  23. def test_extend_dynamic():
  24. parse("""
  25. odoo.define('a', function () {
  26. foo.bar.baz[qux + '_external'] = function () {};
  27. });
  28. """)
  29. def test_extend_deep():
  30. parse("""
  31. odoo.define('a', function () {
  32. var eventHandler = $.summernote.eventHandler;
  33. var dom = $.summernote.core.dom;
  34. dom.thing = function () {};
  35. var fn_editor_currentstyle = eventHandler.modules.editor.currentStyle;
  36. eventHandler.modules.editor.currentStyle = function () {}
  37. });
  38. """)
  39. def test_arbitrary():
  40. parse("""
  41. odoo.define('bob', function () {
  42. var page = window.location.href.replace(/^.*\/\/[^\/]+/, '');
  43. var mailWidgets = ['mail_followers', 'mail_thread', 'mail_activity', 'kanban_activity'];
  44. var bob;
  45. var fldj = foo.getTemplate().baz;
  46. });
  47. """)
  48. def test_prototype():
  49. [A, B] = parse("""
  50. odoo.define('mod1', function () {
  51. var exports = {};
  52. exports.Foo = Backbone.Model.extend({});
  53. exports.Bar = Backbone.Model.extend({});
  54. var BarCollection = Backbone.Collection.extend({
  55. model: exports.Bar,
  56. });
  57. exports.Baz = Backbone.Model.extend({});
  58. return exports;
  59. });
  60. odoo.define('mod2', function (require) {
  61. var models = require('mod1');
  62. var _super_orderline = models.Bar.prototype;
  63. models.Foo = models.Bar.extend({});
  64. var _super_order = models.Baz.prototype;
  65. models.Bar = models.Baz.extend({});
  66. });
  67. """)