1
0
Fork 1
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:
Robert Schütz 2024-09-05 23:03:54 -07:00 committed by GitHub
commit 4f213fe612
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 39 additions and 135 deletions

View file

@ -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; {

View file

@ -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")

View file

@ -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 ];
};
}