|
|
"""Test nbformat.validator"""
|
|
|
|
|
|
# Copyright (c) IPython Development Team.
|
|
|
# Distributed under the terms of the Modified BSD License.
|
|
|
|
|
|
import os
|
|
|
|
|
|
from .base import TestsBase
|
|
|
from jsonschema import ValidationError
|
|
|
from IPython.nbformat import read
|
|
|
from ..validator import isvalid, validate
|
|
|
|
|
|
|
|
|
class TestValidator(TestsBase):
|
|
|
|
|
|
def test_nb2(self):
|
|
|
"""Test that a v2 notebook converted to current passes validation"""
|
|
|
with self.fopen(u'test2.ipynb', u'r') as f:
|
|
|
nb = read(f, as_version=4)
|
|
|
validate(nb)
|
|
|
self.assertEqual(isvalid(nb), True)
|
|
|
|
|
|
def test_nb3(self):
|
|
|
"""Test that a v3 notebook passes validation"""
|
|
|
with self.fopen(u'test3.ipynb', u'r') as f:
|
|
|
nb = read(f, as_version=4)
|
|
|
validate(nb)
|
|
|
self.assertEqual(isvalid(nb), True)
|
|
|
|
|
|
def test_nb4(self):
|
|
|
"""Test that a v4 notebook passes validation"""
|
|
|
with self.fopen(u'test4.ipynb', u'r') as f:
|
|
|
nb = read(f, as_version=4)
|
|
|
validate(nb)
|
|
|
self.assertEqual(isvalid(nb), True)
|
|
|
|
|
|
def test_invalid(self):
|
|
|
"""Test than an invalid notebook does not pass validation"""
|
|
|
# this notebook has a few different errors:
|
|
|
# - one cell is missing its source
|
|
|
# - invalid cell type
|
|
|
# - invalid output_type
|
|
|
with self.fopen(u'invalid.ipynb', u'r') as f:
|
|
|
nb = read(f, as_version=4)
|
|
|
with self.assertRaises(ValidationError):
|
|
|
validate(nb)
|
|
|
self.assertEqual(isvalid(nb), False)
|
|
|
|
|
|
def test_future(self):
|
|
|
"""Test than a notebook from the future with extra keys passes validation"""
|
|
|
with self.fopen(u'test4plus.ipynb', u'r') as f:
|
|
|
nb = read(f, as_version=4)
|
|
|
with self.assertRaises(ValidationError):
|
|
|
validate(nb, version=4)
|
|
|
|
|
|
self.assertEqual(isvalid(nb, version=4), False)
|
|
|
self.assertEqual(isvalid(nb), True)
|
|
|
|
|
|
|