python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / pkgs / tools / security / semgrep / default.nix
blob1df7c515e30582fe99d168d82d5ddf39d574e2ee
1 { lib
2 , fetchFromGitHub
3 , callPackage
4 , semgrep-core
5 , buildPythonApplication
6 , pythonPackages
7 , pythonRelaxDepsHook
9 , pytestCheckHook
10 , git
13 let
14   common = callPackage ./common.nix { };
16 buildPythonApplication rec {
17   pname = "semgrep";
18   inherit (common) version;
19   src = "${common.src}/cli";
21   SEMGREP_CORE_BIN = "${semgrep-core}/bin/semgrep-core";
23   nativeBuildInputs = [ pythonRelaxDepsHook ];
24   pythonRelaxDeps = [
25     "attrs"
26     "boltons"
27     "jsonschema"
28     "typing-extensions"
29   ];
31   postPatch = ''
32     # remove git submodule placeholders
33     rm -r ./src/semgrep/{lang,semgrep_interfaces}
34     # link submodule dependencies
35     ln -s ${common.langsSrc}/ ./src/semgrep/lang
36     ln -s ${common.interfacesSrc}/ ./src/semgrep/semgrep_interfaces
37   '';
39   doCheck = true;
40   checkInputs = [ git pytestCheckHook ] ++ (with pythonPackages; [
41     pytest-snapshot
42     pytest-mock
43     pytest-freezegun
44     types-freezegun
45   ]);
46   disabledTests = [
47     # requires networking
48     "tests/unit/test_metric_manager.py"
49   ];
50   preCheck = ''
51     # tests need a home directory
52     export HOME="$(mktemp -d)"
54     # disabledTestPaths doesn't manage to avoid the e2e tests
55     # remove them from pyproject.toml
56     # and remove need for pytest-split
57     substituteInPlace pyproject.toml \
58       --replace '"tests/e2e",' "" \
59       --replace 'addopts = "--splitting-algorithm=least_duration"' ""
60   '';
62   propagatedBuildInputs = with pythonPackages; [
63     attrs
64     boltons
65     colorama
66     click
67     click-option-group
68     glom
69     requests
70     ruamel-yaml
71     tqdm
72     packaging
73     jsonschema
74     wcmatch
75     peewee
76     defusedxml
77     urllib3
78     typing-extensions
79     python-lsp-jsonrpc
80   ];
82   meta = common.meta // {
83     description = common.meta.description + " - cli";
84   };