diff --git a/pkgs/applications/version-management/nbstripout/default.nix b/pkgs/applications/version-management/nbstripout/default.nix new file mode 100644 index 000000000000..3029d17e1705 --- /dev/null +++ b/pkgs/applications/version-management/nbstripout/default.nix @@ -0,0 +1,32 @@ +{lib, python2Packages, git, mercurial}: + +with python2Packages; +buildPythonApplication rec { + name = "${pname}-${version}"; + version = "0.3.0"; + pname = "nbstripout"; + + # Mercurial should be added as a build input but because it's a Python + # application, it would mess up the Python environment. Thus, don't add it + # here, instead add it to PATH when running unit tests + buildInputs = [ pytest pytest-flake8 pytest-cram git pytestrunner ]; + propagatedBuildInputs = [ ipython nbformat ]; + + src = fetchPypi { + inherit pname version; + sha256 = "126xhjma4a0k7gq58hbqglhb3rai0a576azz7g8gmqjr3kl0264v"; + }; + + # ignore flake8 tests for the nix wrapped setup.py + checkPhase = '' + PATH=$PATH:$out/bin:${mercurial}/bin pytest --ignore=nix_run_setup.py . + ''; + + meta = { + inherit version; + description = "Strip output from Jupyter and IPython notebooks"; + homepage = https://github.com/kynan/nbstripout; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ jluttine ]; + }; +} diff --git a/pkgs/development/python-modules/cram/default.nix b/pkgs/development/python-modules/cram/default.nix new file mode 100644 index 000000000000..3ba861f1c874 --- /dev/null +++ b/pkgs/development/python-modules/cram/default.nix @@ -0,0 +1,38 @@ +{lib, buildPythonPackage, fetchPypi, coverage, bash, which, writeText}: + +buildPythonPackage rec { + name = "${pname}-${version}"; + version = "0.7"; + pname = "cram"; + + buildInputs = [ coverage which ]; + + src = fetchPypi { + inherit pname version; + sha256 = "0bvz6fwdi55rkrz3f50zsy35gvvwhlppki2yml5bj5ffy9d499vx"; + }; + + postPatch = '' + substituteInPlace tests/test.t \ + --replace "/bin/bash" "${bash}/bin/bash" + ''; + + # This testing is copied from Makefile. Simply using `make test` doesn't work + # because it uses the unpatched `scripts/cram` executable which has a bad + # shebang. Also, for some reason, coverage fails on one file so let's just + # ignore that one. + checkPhase = '' + # scripts/cram tests + #COVERAGE=${coverage}/bin/coverage $out/bin/cram tests + #${coverage}/bin/coverage report --fail-under=100 + COVERAGE=coverage $out/bin/cram tests + coverage report --fail-under=100 --omit="*/_encoding.py" + ''; + + meta = { + description = "A simple testing framework for command line applications"; + homepage = https://bitheap.org/cram/; + license = lib.licenses.gpl2Plus; + maintainers = with lib.maintainers; [ jluttine ]; + }; +} diff --git a/pkgs/development/python-modules/pytest-cram/default.nix b/pkgs/development/python-modules/pytest-cram/default.nix new file mode 100644 index 000000000000..fdd2b2316e29 --- /dev/null +++ b/pkgs/development/python-modules/pytest-cram/default.nix @@ -0,0 +1,34 @@ +{lib, buildPythonPackage, fetchPypi, pytest, cram, bash, writeText}: + +buildPythonPackage rec { + name = "${pname}-${version}"; + version = "0.1.1"; + pname = "pytest-cram"; + + buildInputs = [ pytest ]; + propagatedBuildInputs = [ cram ]; + + src = fetchPypi { + inherit pname version; + sha256 = "0ad05999iqzyjay9y5lc0cnd3jv8qxqlzsvxzp76shslmhrv0c4f"; + }; + + postPatch = '' + substituteInPlace pytest_cram/tests/test_options.py \ + --replace "/bin/bash" "${bash}/bin/bash" + ''; + + # Remove __init__.py from tests folder, otherwise pytest raises an error that + # the imported and collected modules are different. + checkPhase = '' + rm pytest_cram/tests/__init__.py + pytest pytest_cram + ''; + + meta = { + description = "Test command-line applications with pytest and cram"; + homepage = https://github.com/tbekolay/pytest-cram; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ jluttine ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 46250bdbc69c..c6d0dc747885 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -14873,6 +14873,8 @@ with pkgs; clerk = callPackage ../applications/audio/clerk { }; + nbstripout = callPackage ../applications/version-management/nbstripout { }; + ncmpc = callPackage ../applications/audio/ncmpc { }; ncmpcpp = callPackage ../applications/audio/ncmpcpp { }; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index db52731f0b23..e2cc84d05152 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -2433,6 +2433,8 @@ in { doCheck = false; # lazy packager }; + cram = callPackage ../development/python-modules/cram { }; + csscompressor = callPackage ../development/python-modules/csscompressor.nix {}; csvkit = callPackage ../development/python-modules/csvkit { }; @@ -5006,6 +5008,8 @@ in { }; }; + pytest-cram = callPackage ../development/python-modules/pytest-cram { }; + pytest-datafiles = callPackage ../development/python-modules/pytest-datafiles { }; pytest-django = callPackage ../development/python-modules/pytest-django { };