diff --git a/notebook/static/notebook/js/notebook.js b/notebook/static/notebook/js/notebook.js index fd04b5f8a..4cd60c3a1 100644 --- a/notebook/static/notebook/js/notebook.js +++ b/notebook/static/notebook/js/notebook.js @@ -2099,15 +2099,16 @@ define(function (require) { */ Notebook.prototype.execute_cell_and_select_below = function () { var indices = this.get_selected_cells_indices(); + var cell_index; if (indices.length > 1) { this.execute_cells(indices); - return; + cell_index = Math.max.apply(Math, indices); + } else { + var cell = this.get_selected_cell(); + cell_index = this.find_cell_index(cell); + cell.execute(); } - var cell = this.get_selected_cell(); - var cell_index = this.find_cell_index(cell); - cell.execute(); - // If we are at the end always insert a new cell and return if (cell_index === (this.ncells()-1)) { this.command_mode(); diff --git a/notebook/tests/notebook/execute_selected_cells.js b/notebook/tests/notebook/execute_selected_cells.js index 927794e5f..5cb470ab3 100644 --- a/notebook/tests/notebook/execute_selected_cells.js +++ b/notebook/tests/notebook/execute_selected_cells.js @@ -148,11 +148,31 @@ casper.notebook_test(function () { this.select_cell(1, false); this.trigger_keydown('alt-enter'); - }) + }); + this.wait_for_output(0); this.wait_for_output(1); this.then(function () { assert_outputs(['x\n', 'y\n', undefined, undefined, 'c\n', 'd\n'],'run selection and insert below'); this.validate_notebook_state('run selection insert below', 'edit', 2); }); + + this.then(function(){ + this.set_cell_text(1, 'print("z")'); + this.set_cell_text(2, 'print("a")'); + + this.select_cell(1); + this.select_cell(2, false); + this.evaluate(function () { + $("#run_cell_select_below").click(); + }); + + }); + + this.wait_for_output(1); + this.wait_for_output(2); + this.then(function () { + assert_outputs(['x\n', 'z\n', 'a\n', undefined, 'c\n', 'd\n'],'run selection and select below'); + this.validate_notebook_state('run selection select below', 'command', 3); + }); });