Unverified Commit 4f213fe6 authored by Robert Schütz's avatar Robert Schütz Committed by GitHub
Browse files

python312Packages.libcst: move tests to passthru.tests (#338508)

parents 546d20c1 0e0552e7
Loading
Loading
Loading
Loading
+10 −23
Original line number Diff line number Diff line
{
  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; {
+0 −87
Original line number Diff line number Diff line
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")
+29 −25
Original line number Diff line number Diff line
@@ -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 ];
  };
}