You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

108 lines
3.9 KiB

  1. 'use strict';
  2. var grunt = require('grunt');
  3. var path = require('path');
  4. var fs = require('fs');
  5. var http = require('http');
  6. var helper = require('./helper');
  7. var fixtures = helper.fixtures;
  8. function cleanUp() {
  9. helper.cleanUp([
  10. 'livereload/node_modules',
  11. ]);
  12. }
  13. // Helper for requesting the live reload server
  14. function request(port, done) {
  15. var data = '';
  16. var req = http.request({
  17. hostname: 'localhost',
  18. port: port,
  19. }, function(res) {
  20. res.setEncoding('utf8');
  21. res.on('data', function(chunk) {
  22. data += chunk;
  23. });
  24. res.on('end', function() {
  25. done(data);
  26. });
  27. });
  28. req.end();
  29. }
  30. exports.livereload = {
  31. setUp: function(done) {
  32. cleanUp();
  33. fs.symlinkSync(path.join(__dirname, '../../node_modules'), path.join(fixtures, 'livereload', 'node_modules'));
  34. done();
  35. },
  36. tearDown: function(done) {
  37. cleanUp();
  38. done();
  39. },
  40. basic: function(test) {
  41. test.expect(4);
  42. var resultData = '';
  43. var cwd = path.resolve(fixtures, 'livereload');
  44. var assertWatch = helper.assertTask(['watch:basic', '-v'], {cwd: cwd});
  45. assertWatch([function() {
  46. request(35729, function(data) {
  47. resultData += data;
  48. grunt.file.write(path.join(cwd, 'lib', 'one.js'), 'var one = true;');
  49. });
  50. }], function(result) {
  51. result = helper.unixify(result);
  52. helper.verboseLog(result);
  53. test.ok(result.indexOf('I ran before livereload.') !== -1, 'task should have ran before live reload.');
  54. test.ok(result.indexOf('Live reload server started on port: 35729') !== -1, 'live reload server should have been started on port 35729.');
  55. test.ok(result.indexOf('Live reloading lib/one.js...') !== -1, 'live reload should have triggered on lib/one.js');
  56. resultData = JSON.parse(resultData);
  57. test.equal(resultData.tinylr, 'Welcome', 'tinylr server should have welcomed you.');
  58. test.done();
  59. });
  60. },
  61. customport: function(test) {
  62. test.expect(4);
  63. var resultData = '';
  64. var cwd = path.resolve(fixtures, 'livereload');
  65. var assertWatch = helper.assertTask(['watch:customport', '-v'], {cwd: cwd});
  66. assertWatch([function() {
  67. request(8675, function(data) {
  68. resultData += data;
  69. grunt.file.write(path.join(cwd, 'lib', 'one.js'), 'var one = true;');
  70. });
  71. }], function(result) {
  72. result = helper.unixify(result);
  73. helper.verboseLog(result);
  74. test.ok(result.indexOf('I ran before livereload.') !== -1, 'task should have ran before live reload.');
  75. test.ok(result.indexOf('Live reload server started on port: 8675') !== -1, 'live reload server should have been started on port 35729.');
  76. test.ok(result.indexOf('Live reloading lib/one.js...') !== -1, 'live reload should have triggered on lib/one.js');
  77. resultData = JSON.parse(resultData);
  78. test.equal(resultData.tinylr, 'Welcome', 'tinylr server should have welcomed you.');
  79. test.done();
  80. });
  81. },
  82. nospawn: function(test) {
  83. test.expect(4);
  84. var resultData = '';
  85. var cwd = path.resolve(fixtures, 'livereload');
  86. var assertWatch = helper.assertTask(['watch:nospawn', '-v'], {cwd: cwd});
  87. assertWatch([function() {
  88. request(1337, function(data) {
  89. resultData += data;
  90. grunt.file.write(path.join(cwd, 'lib', 'one.js'), 'var one = true;');
  91. });
  92. }], function(result) {
  93. result = helper.unixify(result);
  94. helper.verboseLog(result);
  95. test.ok(result.indexOf('I ran before livereload.') !== -1, 'task should have ran before live reload.');
  96. test.ok(result.indexOf('Live reload server started on port: 1337') !== -1, 'live reload server should have been started on port 35729.');
  97. test.ok(result.indexOf('Live reloading lib/one.js...') !== -1, 'live reload should have triggered on lib/one.js');
  98. resultData = JSON.parse(resultData);
  99. test.equal(resultData.tinylr, 'Welcome', 'tinylr server should have welcomed you.');
  100. test.done();
  101. });
  102. },
  103. };