mirror of
https://github.com/jupyter/notebook.git
synced 2025-01-12 11:45:38 +08:00
Merge branch 'master' of https://github.com/jupyter/notebook into list_hidden_files
This commit is contained in:
commit
533e1984e2
2
.gitignore
vendored
2
.gitignore
vendored
@ -27,6 +27,7 @@ __pycache__
|
||||
\#*#
|
||||
.#*
|
||||
.coverage
|
||||
.pytest_cache
|
||||
src
|
||||
|
||||
*.swp
|
||||
@ -39,3 +40,4 @@ config.rst
|
||||
/.pydevproject
|
||||
|
||||
package-lock.json
|
||||
geckodriver.log
|
||||
|
@ -36,10 +36,11 @@ before_install:
|
||||
- |
|
||||
if [[ $GROUP == docs ]]; then
|
||||
pip install -r docs/doc-requirements.txt
|
||||
pip install --upgrade pytest
|
||||
fi
|
||||
- |
|
||||
if [[ $GROUP == selenium ]]; then
|
||||
pip install selenium
|
||||
pip install --upgrade selenium pytest
|
||||
# Install Webdriver backend for Firefox:
|
||||
wget https://github.com/mozilla/geckodriver/releases/download/v0.19.1/geckodriver-v0.19.1-linux64.tar.gz
|
||||
mkdir geckodriver
|
||||
|
@ -11,7 +11,7 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"First and foremost, the Jupyter Notebook is an interactive environment for writing and running code. The notebook is capable of running code in a wide range of languages. However, each notebook is associated with a single kernel. This notebook is associated with the IPython kernel, therefor runs Python code."
|
||||
"First and foremost, the Jupyter Notebook is an interactive environment for writing and running code. The notebook is capable of running code in a wide range of languages. However, each notebook is associated with a single kernel. This notebook is associated with the IPython kernel, therefore runs Python code."
|
||||
]
|
||||
},
|
||||
{
|
||||
|
@ -1,100 +0,0 @@
|
||||
|
||||
// Test
|
||||
casper.notebook_test(function () {
|
||||
var that = this;
|
||||
|
||||
var a = 'print("a")';
|
||||
var index = this.append_cell(a);
|
||||
|
||||
var b = 'print("b")';
|
||||
index = this.append_cell(b);
|
||||
|
||||
var c = 'print("c")';
|
||||
index = this.append_cell(c);
|
||||
|
||||
this.then(function () {
|
||||
var selectedIndex = this.evaluate(function () {
|
||||
Jupyter.notebook.select(0);
|
||||
return Jupyter.notebook.get_selected_index();
|
||||
});
|
||||
|
||||
this.test.assertEquals(this.evaluate(function() {
|
||||
return Jupyter.notebook.get_selected_cells().length;
|
||||
}), 1, 'only one cell is selected programmatically');
|
||||
|
||||
this.test.assertEquals(this.evaluate(function() {
|
||||
return $('.cell.jupyter-soft-selected, .cell.selected').length;
|
||||
}), 1, 'one cell is selected');
|
||||
|
||||
this.test.assertEquals(this.evaluate(function() {
|
||||
Jupyter.notebook.extend_selection_by(1);
|
||||
return Jupyter.notebook.get_selected_cells().length;
|
||||
}), 2, 'extend selection by one');
|
||||
|
||||
|
||||
this.test.assertEquals(this.evaluate(function() {
|
||||
Jupyter.notebook.extend_selection_by(-1);
|
||||
return Jupyter.notebook.get_selected_cells().length;
|
||||
}), 1, 'contract selection by one');
|
||||
|
||||
this.test.assertEquals(this.evaluate(function() {
|
||||
Jupyter.notebook.select(1);
|
||||
Jupyter.notebook.extend_selection_by(-1);
|
||||
return Jupyter.notebook.get_selected_cells().length;
|
||||
}), 2, 'extend selection by one up');
|
||||
|
||||
// Test multiple markdown conversions.
|
||||
var cell_types = this.evaluate(function() {
|
||||
Jupyter.notebook.select(0);
|
||||
Jupyter.notebook.extend_selection_by(2);
|
||||
var indices = Jupyter.notebook.get_selected_cells_indices();
|
||||
Jupyter.notebook.cells_to_markdown();
|
||||
return indices.map(function(i) {
|
||||
return Jupyter.notebook.get_cell(i).cell_type;
|
||||
});
|
||||
});
|
||||
this.test.assert(cell_types.every(function(cell_type) {
|
||||
return cell_type === 'markdown';
|
||||
}), 'selected cells converted to markdown');
|
||||
|
||||
this.test.assertEquals(this.evaluate(function() {
|
||||
return Jupyter.notebook.get_selected_cells_indices();
|
||||
}).length, 1, 'one cell selected after convert');
|
||||
|
||||
// Test multiple raw conversions.
|
||||
cell_types = this.evaluate(function() {
|
||||
Jupyter.notebook.select(0);
|
||||
Jupyter.notebook.extend_selection_by(2);
|
||||
var indices = Jupyter.notebook.get_selected_cells_indices();
|
||||
Jupyter.notebook.cells_to_raw();
|
||||
return indices.map(function(i) {
|
||||
return Jupyter.notebook.get_cell(i).cell_type;
|
||||
});
|
||||
});
|
||||
this.test.assert(cell_types.every(function(cell_type) {
|
||||
return cell_type === 'raw';
|
||||
}), 'selected cells converted to raw');
|
||||
|
||||
this.test.assertEquals(this.evaluate(function() {
|
||||
return Jupyter.notebook.get_selected_cells_indices();
|
||||
}).length, 1, 'one cell selected after convert');
|
||||
|
||||
// Test multiple code conversions.
|
||||
cell_types = this.evaluate(function() {
|
||||
Jupyter.notebook.select(0);
|
||||
Jupyter.notebook.extend_selection_by(2);
|
||||
var indices = Jupyter.notebook.get_selected_cells_indices();
|
||||
Jupyter.notebook.cells_to_code();
|
||||
return indices.map(function(i) {
|
||||
return Jupyter.notebook.get_cell(i).cell_type;
|
||||
});
|
||||
});
|
||||
this.test.assert(cell_types.every(function(cell_type) {
|
||||
return cell_type === 'code';
|
||||
}), 'selected cells converted to code');
|
||||
|
||||
this.test.assertEquals(this.evaluate(function() {
|
||||
return Jupyter.notebook.get_selected_cells_indices();
|
||||
}).length, 1, 'one cell selected after convert');
|
||||
});
|
||||
});
|
65
notebook/tests/selenium/test_multiselect.py
Normal file
65
notebook/tests/selenium/test_multiselect.py
Normal file
@ -0,0 +1,65 @@
|
||||
def test_multiselect(notebook):
|
||||
def extend_selection_by(delta):
|
||||
notebook.browser.execute_script(
|
||||
"Jupyter.notebook.extend_selection_by(arguments[0]);", delta)
|
||||
|
||||
def n_selected_cells():
|
||||
return notebook.browser.execute_script(
|
||||
"return Jupyter.notebook.get_selected_cells().length;")
|
||||
|
||||
a = 'print("a")'
|
||||
b = 'print("b")'
|
||||
c = 'print("c")'
|
||||
notebook.edit_cell(index=0, content=a)
|
||||
notebook.append(b, c)
|
||||
|
||||
notebook.focus_cell(0)
|
||||
assert n_selected_cells() == 1
|
||||
|
||||
# Check that only one cell is selected according to CSS classes as well
|
||||
selected_css = notebook.browser.find_elements_by_css_selector(
|
||||
'.cell.jupyter-soft-selected, .cell.selected')
|
||||
assert len(selected_css) == 1
|
||||
|
||||
# Extend the selection down one
|
||||
extend_selection_by(1)
|
||||
assert n_selected_cells() == 2
|
||||
|
||||
# Contract the selection up one
|
||||
extend_selection_by(-1)
|
||||
assert n_selected_cells() == 1
|
||||
|
||||
# Extend the selection up one
|
||||
notebook.focus_cell(1)
|
||||
extend_selection_by(-1)
|
||||
assert n_selected_cells() == 2
|
||||
|
||||
# Convert selected cells to Markdown
|
||||
notebook.browser.execute_script("Jupyter.notebook.cells_to_markdown();")
|
||||
cell_types = notebook.browser.execute_script(
|
||||
"return Jupyter.notebook.get_cells().map(c => c.cell_type)")
|
||||
assert cell_types == ['markdown', 'markdown', 'code']
|
||||
# One cell left selected after conversion
|
||||
assert n_selected_cells() == 1
|
||||
|
||||
# Convert selected cells to raw
|
||||
notebook.focus_cell(1)
|
||||
extend_selection_by(1)
|
||||
assert n_selected_cells() == 2
|
||||
notebook.browser.execute_script("Jupyter.notebook.cells_to_raw();")
|
||||
cell_types = notebook.browser.execute_script(
|
||||
"return Jupyter.notebook.get_cells().map(c => c.cell_type)")
|
||||
assert cell_types == ['markdown', 'raw', 'raw']
|
||||
# One cell left selected after conversion
|
||||
assert n_selected_cells() == 1
|
||||
|
||||
# Convert selected cells to code
|
||||
notebook.focus_cell(0)
|
||||
extend_selection_by(2)
|
||||
assert n_selected_cells() == 3
|
||||
notebook.browser.execute_script("Jupyter.notebook.cells_to_code();")
|
||||
cell_types = notebook.browser.execute_script(
|
||||
"return Jupyter.notebook.get_cells().map(c => c.cell_type)")
|
||||
assert cell_types == ['code'] * 3
|
||||
# One cell left selected after conversion
|
||||
assert n_selected_cells() == 1
|
Loading…
Reference in New Issue
Block a user