script.test.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import test from 'tape';
  2. import { parseMeta } from '#/background/utils/script';
  3. const baseMeta = {
  4. include: [],
  5. exclude: [],
  6. match: [],
  7. excludeMatch: [],
  8. require: [],
  9. grant: [],
  10. resources: {},
  11. noframes: false,
  12. };
  13. test('parseMeta', (t) => {
  14. t.deepEqual(parseMeta(`\
  15. // ==UserScript==
  16. // @name New Script
  17. // @namespace Violentmonkey Scripts
  18. // @description This is a script
  19. // @version 1.0
  20. // @match *://*/*
  21. // @grant none
  22. // ==/UserScript==
  23. `), Object.assign({}, baseMeta, {
  24. name: 'New Script',
  25. namespace: 'Violentmonkey Scripts',
  26. description: 'This is a script',
  27. version: '1.0',
  28. match: ['*://*/*'],
  29. grant: ['none'],
  30. }));
  31. t.deepEqual(parseMeta(`\
  32. // ==UserScript==
  33. // @name New Script
  34. // @namespace Violentmonkey Scripts
  35. // @match *://*/*
  36. // @noframes
  37. // ==/UserScript==
  38. `), Object.assign({}, baseMeta, {
  39. name: 'New Script',
  40. namespace: 'Violentmonkey Scripts',
  41. match: ['*://*/*'],
  42. noframes: true,
  43. }));
  44. t.end();
  45. });
  46. test('parseMetaIrregularities', (t) => {
  47. t.deepEqual(parseMeta(`\
  48. // ==UserScript==============
  49. // @name foo
  50. // @namespace bar
  51. // ==/UserScript===================
  52. `), {
  53. ...baseMeta,
  54. name: 'foo',
  55. namespace: 'bar',
  56. });
  57. t.deepEqual(parseMeta(`\
  58. // ==UserScript==
  59. //@name foo
  60. // ==/UserScript==`), baseMeta);
  61. t.deepEqual(parseMeta(`\
  62. //==UserScript==
  63. // @name foo
  64. //\t==/UserScript==`), baseMeta);
  65. t.deepEqual(parseMeta(`\
  66. /*
  67. //
  68. ==UserScript==
  69. // @name foo
  70. //
  71. ==/UserScript==
  72. */`), baseMeta);
  73. t.end();
  74. });