script.test.js 1.4 KB

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