1. 1var sqlite3 = require('..');
2. 1var assert = require('assert');
3. 1
4. 1describe('tracing', function() {
5. 1 it('Database tracing', function(done) {
6. 1 var db = new sqlite3.Database(':memory:');
7. 1 var create = false;
8. 1 var select = false;
9. 1
10. 2 db.on('trace', function(sql) {
11. 1 if (sql.match(/^SELECT/)) {
12. 1 assert.ok(!select);
13. 1 assert.equal(sql, "SELECT * FROM foo");
14. 1 select = true;
15. 1 }
16. 1 else if (sql.match(/^CREATE/)) {
17. 1 assert.ok(!create);
18. 1 assert.equal(sql, "CREATE TABLE foo (id int)");
19. 1 create = true;
20. 0 }
21. 0 else {
22. 0 assert.ok(false);
23. 0 }
24. 2 });
25. 1
26. 1 db.serialize(function() {
27. 1 db.run("CREATE TABLE foo (id int)");
28. 1 db.run("SELECT * FROM foo");
29. 1 });
30. 1
31. 1 db.close(function(err) {
32. 0 if (err) throw err;
33. 1 assert.ok(create);
34. 1 assert.ok(select);
35. 1 done();
36. 1 });
37. 1 });
38. 1
39. 1
40. 1 it('test disabling tracing #1', function(done) {
41. 1 var db = new sqlite3.Database(':memory:');
42. 1
43. 0 db.on('trace', function(sql) {});
44. 1 db.removeAllListeners('trace');
45. 0 db._events['trace'] = function(sql) {
46. 0 assert.ok(false);
47. 0 };
48. 1
49. 1 db.run("CREATE TABLE foo (id int)");
50. 1 db.close(done);
51. 1 });
52. 1
53. 1
54. 1 it('test disabling tracing #2', function(done) {
55. 1 var db = new sqlite3.Database(':memory:');
56. 1
57. 0 var trace = function(sql) {};
58. 1 db.on('trace', trace);
59. 1 db.removeListener('trace', trace);
60. 0 db._events['trace'] = function(sql) {
61. 0 assert.ok(false);
62. 0 };
63. 1
64. 1 db.run("CREATE TABLE foo (id int)");
65. 1 db.close(done);
66. 1 });
67. 1});
68. 1