mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-17 19:21:04 +00:00
python312Packages.libcst: move tests to passthru.tests (#338508)
This commit is contained in:
commit
4f213fe612
|
@ -1,5 +1,6 @@
|
|||
{
|
||||
lib,
|
||||
black,
|
||||
buildPythonPackage,
|
||||
fetchPypi,
|
||||
hypothesis,
|
||||
|
@ -7,59 +8,45 @@
|
|||
libcst,
|
||||
parso,
|
||||
pytestCheckHook,
|
||||
pytest-cov-stub,
|
||||
pytest-xdist,
|
||||
pythonOlder,
|
||||
setuptools,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "hypothesmith";
|
||||
version = "0.3.3";
|
||||
format = "setuptools";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.8";
|
||||
disabled = pythonOlder "3.9";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
hash = "sha256-lsFIAtbI6F2JdSZBdoeNtUso0u2SH9v+3C5rjOPIFxY=";
|
||||
};
|
||||
|
||||
patches = [ ./remove-black.patch ];
|
||||
build-system = [ setuptools ];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace setup.py \
|
||||
--replace "lark-parser" "lark"
|
||||
|
||||
substituteInPlace tox.ini \
|
||||
--replace "--cov=hypothesmith" "" \
|
||||
--replace "--cov-branch" "" \
|
||||
--replace "--cov-report=term-missing:skip-covered" "" \
|
||||
--replace "--cov-fail-under=100" ""
|
||||
'';
|
||||
|
||||
propagatedBuildInputs = [
|
||||
dependencies = [
|
||||
hypothesis
|
||||
lark
|
||||
libcst
|
||||
];
|
||||
|
||||
nativeCheckInputs = [
|
||||
black
|
||||
parso
|
||||
pytestCheckHook
|
||||
pytest-cov-stub
|
||||
pytest-xdist
|
||||
];
|
||||
|
||||
pytestFlagsArray = [ "-v" ];
|
||||
|
||||
disabledTests = [
|
||||
# https://github.com/Zac-HD/hypothesmith/issues/21
|
||||
# super slow
|
||||
"test_source_code_from_libcst_node_type"
|
||||
];
|
||||
|
||||
disabledTestPaths = [
|
||||
# missing blib2to3
|
||||
"tests/test_syntactic.py"
|
||||
];
|
||||
|
||||
pythonImportsCheck = [ "hypothesmith" ];
|
||||
|
||||
meta = with lib; {
|
||||
|
|
|
@ -1,87 +0,0 @@
|
|||
diff --git a/tests/test_cst.py b/tests/test_cst.py
|
||||
index 8532240..bdba2d7 100644
|
||||
--- a/tests/test_cst.py
|
||||
+++ b/tests/test_cst.py
|
||||
@@ -3,7 +3,6 @@ import ast
|
||||
from inspect import isabstract
|
||||
from operator import attrgetter
|
||||
|
||||
-import black
|
||||
import libcst
|
||||
import parso
|
||||
import pytest
|
||||
@@ -51,27 +50,6 @@ def test_ast_unparse_from_nodes(source_code):
|
||||
assert ast.dump(first) == ast.dump(second)
|
||||
|
||||
|
||||
-@pytest.mark.xfail
|
||||
-@example("A\u2592", black.Mode())
|
||||
-@given(
|
||||
- source_code=hypothesmith.from_node(),
|
||||
- mode=st.builds(
|
||||
- black.Mode,
|
||||
- line_length=st.just(88) | st.integers(0, 200),
|
||||
- string_normalization=st.booleans(),
|
||||
- is_pyi=st.booleans(),
|
||||
- ),
|
||||
-)
|
||||
-def test_black_autoformatter_from_nodes(source_code, mode):
|
||||
- try:
|
||||
- result = black.format_file_contents(source_code, fast=False, mode=mode)
|
||||
- except black.NothingChanged:
|
||||
- pass
|
||||
- else:
|
||||
- with pytest.raises(black.NothingChanged):
|
||||
- black.format_file_contents(result, fast=False, mode=mode)
|
||||
-
|
||||
-
|
||||
@given(source_code=hypothesmith.from_node())
|
||||
def test_from_node_always_compilable(source_code):
|
||||
compile(source_code, "<string>", "exec")
|
||||
diff --git a/tests/test_syntactic.py b/tests/test_syntactic.py
|
||||
index 7fe9835..17c4f7c 100644
|
||||
--- a/tests/test_syntactic.py
|
||||
+++ b/tests/test_syntactic.py
|
||||
@@ -3,7 +3,6 @@ import ast
|
||||
import io
|
||||
import tokenize
|
||||
|
||||
-import black
|
||||
import blib2to3
|
||||
import parso
|
||||
import pytest
|
||||
@@ -58,34 +57,6 @@ def test_ast_unparse_from_grammar(source_code):
|
||||
assert ast.dump(first) == ast.dump(second)
|
||||
|
||||
|
||||
-@example("\\", black.Mode())
|
||||
-@example("A#\r#", black.Mode())
|
||||
-@given(
|
||||
- source_code=hypothesmith.from_grammar(),
|
||||
- mode=st.builds(
|
||||
- black.Mode,
|
||||
- line_length=st.just(88) | st.integers(0, 200),
|
||||
- string_normalization=st.booleans(),
|
||||
- is_pyi=st.booleans(),
|
||||
- ),
|
||||
-)
|
||||
-def test_black_autoformatter_from_grammar(source_code, mode):
|
||||
- try:
|
||||
- result = black.format_file_contents(source_code, fast=False, mode=mode)
|
||||
- except black.NothingChanged:
|
||||
- pass
|
||||
- except blib2to3.pgen2.tokenize.TokenError:
|
||||
- # Fails to tokenise e.g. "\\", though compile("\\", "<string>", "exec") works.
|
||||
- # See https://github.com/psf/black/issues/1012
|
||||
- reject()
|
||||
- except black.InvalidInput:
|
||||
- # e.g. "A#\r#", see https://github.com/psf/black/issues/970
|
||||
- reject()
|
||||
- else:
|
||||
- with pytest.raises(black.NothingChanged):
|
||||
- black.format_file_contents(result, fast=False, mode=mode)
|
||||
-
|
||||
-
|
||||
@given(source_code=hypothesmith.from_grammar("eval_input"))
|
||||
def test_eval_input_generation(source_code):
|
||||
compile(source_code, filename="<string>", mode="eval")
|
|
@ -3,8 +3,10 @@
|
|||
stdenv,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
callPackage,
|
||||
cargo,
|
||||
hypothesis,
|
||||
hypothesmith,
|
||||
libcst,
|
||||
libiconv,
|
||||
pytestCheckHook,
|
||||
python,
|
||||
|
@ -16,14 +18,15 @@
|
|||
setuptools-scm,
|
||||
typing-extensions,
|
||||
typing-inspect,
|
||||
ufmt,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "libcst";
|
||||
version = "1.4.0";
|
||||
format = "pyproject";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.7";
|
||||
disabled = pythonOlder "3.9";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "instagram";
|
||||
|
@ -41,15 +44,12 @@ buildPythonPackage rec {
|
|||
|
||||
cargoRoot = "native";
|
||||
|
||||
postPatch = ''
|
||||
# avoid infinite recursion by not formatting the release files
|
||||
substituteInPlace libcst/codegen/generate.py \
|
||||
--replace '"ufmt"' '"true"'
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
build-system = [
|
||||
setuptools-rust
|
||||
setuptools-scm
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
rustPlatform.cargoSetupHook
|
||||
cargo
|
||||
rustc
|
||||
|
@ -57,44 +57,48 @@ buildPythonPackage rec {
|
|||
|
||||
buildInputs = lib.optionals stdenv.isDarwin [ libiconv ];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
dependencies = [
|
||||
typing-extensions
|
||||
typing-inspect
|
||||
pyyaml
|
||||
];
|
||||
|
||||
nativeCheckInputs = [
|
||||
hypothesis
|
||||
hypothesmith
|
||||
pytestCheckHook
|
||||
ufmt
|
||||
];
|
||||
|
||||
preCheck = ''
|
||||
# otherwise import libcst.native fails
|
||||
cp build/lib.*/libcst/native.* libcst/
|
||||
|
||||
${python.interpreter} -m libcst.codegen.generate visitors
|
||||
${python.interpreter} -m libcst.codegen.generate return_types
|
||||
|
||||
# Can't run all tests due to circular dependency on hypothesmith -> libcst
|
||||
rm -r {libcst/tests,libcst/codegen/tests,libcst/m*/tests}
|
||||
# import from $out instead
|
||||
rm libcst/__init__.py
|
||||
'';
|
||||
|
||||
disabledTests = [
|
||||
# No files are generated
|
||||
"test_codemod_formatter_error_input"
|
||||
# FIXME package pyre-test
|
||||
"TypeInferenceProviderTest"
|
||||
# we'd need to run `python -m libcst.codegen.generate all` but shouldn't modify $out
|
||||
"test_codegen_clean_visitor_functions"
|
||||
];
|
||||
|
||||
# circular dependency on hypothesmith and ufmt
|
||||
doCheck = false;
|
||||
|
||||
passthru.tests = {
|
||||
pytest = libcst.overridePythonAttrs { doCheck = true; };
|
||||
};
|
||||
|
||||
pythonImportsCheck = [ "libcst" ];
|
||||
|
||||
meta = with lib; {
|
||||
meta = {
|
||||
description = "Concrete Syntax Tree (CST) parser and serializer library for Python";
|
||||
homepage = "https://github.com/Instagram/libcst";
|
||||
changelog = "https://github.com/Instagram/LibCST/blob/v${version}/CHANGELOG.md";
|
||||
license = with licenses; [
|
||||
license = with lib.licenses; [
|
||||
mit
|
||||
asl20
|
||||
psfl
|
||||
];
|
||||
maintainers = [ ];
|
||||
maintainers = with lib.maintainers; [ dotlambda ];
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue