script.test.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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. };
  12. test('parseMeta', (t) => {
  13. t.deepEqual(parseMeta(`\
  14. // ==UserScript==
  15. // @name New Script
  16. // @namespace Violentmonkey Scripts
  17. // @description This is a script
  18. // @version 1.0
  19. // @match *://*/*
  20. // @grant none
  21. // ==/UserScript==
  22. `), Object.assign({}, baseMeta, {
  23. name: 'New Script',
  24. namespace: 'Violentmonkey Scripts',
  25. description: 'This is a script',
  26. version: '1.0',
  27. match: ['*://*/*'],
  28. grant: ['none'],
  29. }));
  30. t.deepEqual(parseMeta(`\
  31. // ==UserScript==
  32. // @name New Script
  33. // @namespace Violentmonkey Scripts
  34. // @match *://*/*
  35. // @noframes
  36. // ==/UserScript==
  37. `), Object.assign({}, baseMeta, {
  38. name: 'New Script',
  39. namespace: 'Violentmonkey Scripts',
  40. match: ['*://*/*'],
  41. noframes: true,
  42. }));
  43. t.end();
  44. });
  45. test('parseMetaIrregularities', (t) => {
  46. t.deepEqual(parseMeta(`\
  47. // ==UserScript==============
  48. // @name foo
  49. // @namespace bar
  50. // ==/UserScript===================
  51. `), {
  52. ...baseMeta,
  53. name: 'foo',
  54. namespace: 'bar',
  55. });
  56. t.deepEqual(parseMeta(`\
  57. // ==UserScript==
  58. //@name foo
  59. // ==/UserScript==`), baseMeta);
  60. t.deepEqual(parseMeta(`\
  61. //==UserScript==
  62. // @name foo
  63. //\t==/UserScript==`), baseMeta);
  64. t.deepEqual(parseMeta(`\
  65. /*
  66. //
  67. ==UserScript==
  68. // @name foo
  69. //
  70. ==/UserScript==
  71. */`), baseMeta);
  72. t.end();
  73. });