##// END OF EJS Templates
Handle kernel messages synchronously...
Handle kernel messages synchronously A problem can happen when two messages come in for different comms, where the second depends on the first (for example, the first might be a message setting the state of a widget, and the second triggering a view creation for the widget). Since comm message queues are independent of each other, the second message could be executed before the first message. This exposes a more fundamental assumption users are likely to have that messages from python are processed synchronously. Thanks to @dmadeka for reporting an error that led to discovering this issue.

File last commit:

r15949:d0ec96bd
r20621:f936f880
Show More
merge_cells_api.js
43 lines | 1.3 KiB | application/javascript | JavascriptLexer
//
// Test merging two notebook cells.
//
casper.notebook_test(function() {
var that = this;
var set_cells_text = function () {
that.evaluate(function() {
var cell_one = IPython.notebook.get_selected_cell();
cell_one.set_text('a = 5');
});
that.trigger_keydown('b');
that.evaluate(function() {
var cell_two = IPython.notebook.get_selected_cell();
cell_two.set_text('print(a)');
});
};
this.evaluate(function () {
IPython.notebook.command_mode();
});
// merge_cell_above()
set_cells_text();
var output_above = this.evaluate(function () {
IPython.notebook.merge_cell_above();
return IPython.notebook.get_selected_cell().get_text();
});
// merge_cell_below()
set_cells_text();
var output_below = this.evaluate(function() {
IPython.notebook.select(0);
IPython.notebook.merge_cell_below();
return IPython.notebook.get_selected_cell().get_text();
});
this.test.assertEquals(output_above, 'a = 5\nprint(a)',
'Successful merge_cell_above().');
this.test.assertEquals(output_below, 'a = 5\nprint(a)',
'Successful merge_cell_below().');
});