utils.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. casper.notebook_test(function () {
  2. // Test fixConsole
  3. // Note, \u001b is the unicode notation of octal \033 which is not officially in js
  4. var input = [
  5. "\u001b[0m[\u001b[0minfo\u001b[0m] \u001b[0mtext\u001b[0m",
  6. "\u001b[0m[\u001b[33mwarn\u001b[0m] \u001b[0m\tmore text\u001b[0m",
  7. "\u001b[0m[\u001b[33mwarn\u001b[0m] \u001b[0m https://some/url/to/a/file.ext\u001b[0m",
  8. "\u001b[0m[\u001b[31merror\u001b[0m] \u001b[0m\u001b[0m",
  9. "\u001b[0m[\u001b[31merror\u001b[0m] \u001b[0m\teven more text\u001b[0m",
  10. "\u001b[?25hBuilding wheels for collected packages: scipy",
  11. "\x1b[38;5;28;01mtry\x1b[39;00m",
  12. "\u001b[0m[\u001b[31merror\u001b[0m] \u001b[0m\t\tand more more text\u001b[0m",
  13. "normal\x1b[43myellowbg\x1b[35mmagentafg\x1b[1mbold\x1b[49mdefaultbg\x1b[39mdefaultfg\x1b[22mnormal",
  14. ].join("\n");
  15. var output = [
  16. "[info] text",
  17. '[<span class="ansi-yellow-fg">warn</span>] \tmore text',
  18. '[<span class="ansi-yellow-fg">warn</span>] https://some/url/to/a/file.ext',
  19. '[<span class="ansi-red-fg">error</span>] ',
  20. '[<span class="ansi-red-fg">error</span>] \teven more text',
  21. "Building wheels for collected packages: scipy",
  22. '<span class="ansi-bold" style="color: rgb(0,135,0)">try</span>',
  23. '[<span class="ansi-red-fg">error</span>] \t\tand more more text',
  24. 'normal<span class="ansi-yellow-bg">yellowbg</span><span class="ansi-magenta-fg ansi-yellow-bg">magentafg</span><span class="ansi-magenta-intense-fg ansi-yellow-bg ansi-bold">bold</span><span class="ansi-magenta-intense-fg ansi-bold">defaultbg</span><span class="ansi-bold">defaultfg</span>normal',
  25. ].join("\n");
  26. var result = this.evaluate(function (input) {
  27. return IPython.utils.fixConsole(input);
  28. }, input);
  29. this.test.assertEquals(result, output, "IPython.utils.fixConsole() handles [0m correctly");
  30. // Test fixOverwrittenChars
  31. var overwriting_test_cases = [
  32. {input: "ABC\rDEF", result: "DEF"},
  33. {input: "ABC\r\nDEF", result: "ABC\nDEF"},
  34. {input: "123\b456", result: "12456"},
  35. {input: "123\n\b456", result: "123\n\b456"},
  36. {input: "\b456", result: "\b456"}
  37. ];
  38. var that = this;
  39. overwriting_test_cases.forEach(function(testcase){
  40. var result = that.evaluate(function (input) {
  41. return IPython.utils.fixOverwrittenChars(input);
  42. }, testcase.input);
  43. that.test.assertEquals(result, testcase.result, "Overwriting characters processed");
  44. });
  45. var input = [
  46. 'hasrn\r\n',
  47. 'hasn\n',
  48. '\n',
  49. 'abcdef\r',
  50. 'hello\n',
  51. 'ab3\r',
  52. 'x2\r\r',
  53. '1\r',
  54. ].join('');
  55. var output = [
  56. 'hasrn\n',
  57. 'hasn\n',
  58. '\n',
  59. 'hellof\n',
  60. '123\r'
  61. ].join('');
  62. var result = this.evaluate(function (input) {
  63. return IPython.utils.fixCarriageReturn(input);
  64. }, input);
  65. this.test.assertEquals(result, output, "IPython.utils.fixCarriageReturns works");
  66. // Test load_extensions
  67. this.thenEvaluate(function() {
  68. define('nbextensions/a', [], function() { window.a = true; });
  69. define('nbextensions/c', [], function() { window.c = true; });
  70. require(['base/js/utils'], function(utils) {
  71. utils.load_extensions('a', 'b', 'c');
  72. });
  73. }).then(function() {
  74. this.waitFor(function() {
  75. return this.evaluate(function() { return window.a; });
  76. });
  77. this.waitFor(function() {
  78. return this.evaluate(function() { return window.a; });
  79. });
  80. });
  81. });