|
"""Test yarn registry replacement""" |
|
|
|
|
|
|
|
|
|
import logging |
|
import subprocess |
|
from os.path import join as pjoin |
|
from unittest.mock import patch |
|
|
|
from jupyterlab import commands |
|
|
|
from .test_jupyterlab import AppHandlerTest |
|
|
|
|
|
class TestAppHandlerRegistry(AppHandlerTest): |
|
def test_node_not_available(self): |
|
|
|
|
|
with patch("jupyterlab.commands.which") as which: |
|
which.side_effect = ValueError("Command not found") |
|
|
|
logger = logging.getLogger("jupyterlab") |
|
config = commands._yarn_config(logger) |
|
|
|
which.assert_called_once_with("node") |
|
self.assertDictEqual(config, {"yarn config": {}, "npm config": {}}) |
|
|
|
def test_yarn_config(self): |
|
with patch("subprocess.check_output") as check_output: |
|
yarn_registry = "https://private.yarn/manager" |
|
check_output.return_value = b"\n".join( |
|
[ |
|
b'{"type":"info","data":"yarn config"}', |
|
b'{"type":"inspect","data":{"registry":"' |
|
+ bytes(yarn_registry, "utf-8") |
|
+ b'"}}', |
|
b'{"type":"info","data":"npm config"}', |
|
b'{"type":"inspect","data":{"registry":"' |
|
+ bytes(yarn_registry, "utf-8") |
|
+ b'"}}', |
|
] |
|
) |
|
logger = logging.getLogger("jupyterlab") |
|
config = commands._yarn_config(logger) |
|
|
|
self.assertDictEqual( |
|
config, |
|
{ |
|
"yarn config": {"registry": yarn_registry}, |
|
"npm config": {"registry": yarn_registry}, |
|
}, |
|
) |
|
|
|
def test_yarn_config_failure(self): |
|
with patch("subprocess.check_output") as check_output: |
|
check_output.side_effect = subprocess.CalledProcessError( |
|
1, ["yarn", "config", "list"], b"", stderr=b"yarn config failed." |
|
) |
|
|
|
logger = logging.getLogger("jupyterlab") |
|
config = commands._yarn_config(logger) |
|
|
|
self.assertDictEqual(config, {"yarn config": {}, "npm config": {}}) |
|
|
|
def test_get_registry(self): |
|
with patch("subprocess.check_output") as check_output: |
|
yarn_registry = "https://private.yarn/manager" |
|
check_output.return_value = b"\n".join( |
|
[ |
|
b'{"type":"info","data":"yarn config"}', |
|
b'{"type":"inspect","data":{"registry":"' |
|
+ bytes(yarn_registry, "utf-8") |
|
+ b'"}}', |
|
b'{"type":"info","data":"npm config"}', |
|
b'{"type":"inspect","data":{"registry":"' |
|
+ bytes(yarn_registry, "utf-8") |
|
+ b'"}}', |
|
] |
|
) |
|
|
|
handler = commands.AppOptions() |
|
|
|
self.assertEqual(handler.registry, yarn_registry) |
|
|
|
def test_populate_staging(self): |
|
with patch("subprocess.check_output") as check_output: |
|
yarn_registry = "https://private.yarn/manager" |
|
check_output.return_value = b"\n".join( |
|
[ |
|
b'{"type":"info","data":"yarn config"}', |
|
b'{"type":"inspect","data":{"registry":"' |
|
+ bytes(yarn_registry, "utf-8") |
|
+ b'"}}', |
|
b'{"type":"info","data":"npm config"}', |
|
b'{"type":"inspect","data":{"registry":"' |
|
+ bytes(yarn_registry, "utf-8") |
|
+ b'"}}', |
|
] |
|
) |
|
|
|
staging = pjoin(self.app_dir, "staging") |
|
handler = commands._AppHandler(commands.AppOptions()) |
|
handler._populate_staging() |
|
|
|
lock_path = pjoin(staging, "yarn.lock") |
|
with open(lock_path) as f: |
|
lock = f.read() |
|
|
|
|
|
self.assertNotIn(commands.YARN_DEFAULT_REGISTRY, lock) |
|
self.assertNotIn(yarn_registry, lock) |
|
|