diff options
-rw-r--r-- | gnu/packages/version-control.scm | 99 |
1 files changed, 34 insertions, 65 deletions
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index 0cad83c4b0..5e89de8450 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -29,7 +29,7 @@ ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re> ;;; Copyright © 2020 John D. Boy <jboy@bius.moe> ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> -;;; Copyright © 2020 Vinicius Monego <monego@posteo.net> +;;; Copyright © 2020, 2021 Vinicius Monego <monego@posteo.net> ;;; Copyright © 2020 Tanguy Le Carrour <tanguy@bioneland.org> ;;; Copyright © 2020, 2021 Michael Rohleder <mike@rohleder.de> ;;; Copyright © 2021 Greg Hogan <code@greghogan.com> @@ -1518,7 +1518,7 @@ control to Git repositories.") (define-public pre-commit (package (name "pre-commit") - (version "2.8.1") + (version "2.12.1") (source (origin ;; No tests in the PyPI tarball. @@ -1528,12 +1528,12 @@ control to Git repositories.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0b3ks6viccq3n4p8i8zgfd40vp1k5nkhmmlz7p4nxcdizw8zxgn8")))) + (base32 "0gwy5bnjnlj6yjcmghsibrcijvz9isxcygln7ihvi728p04rgymf")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases - (add-before 'check 'set-up-git + (add-before 'check 'prepare-check-env (lambda _ ;; Change from /homeless-shelter to /tmp for write permission. (setenv "HOME" "/tmp") @@ -1542,72 +1542,36 @@ control to Git repositories.") (setenv "GIT_COMMITTER_NAME" "Your Name") (setenv "GIT_AUTHOR_EMAIL" "you@example.com") (setenv "GIT_COMMITTER_EMAIL" "you@example.com") + ;; Some tests still fail with PermissionError. Make the source + ;; tree writable. + (for-each make-file-writable (find-files ".")) + ;; Some tests will need a working git repository. + (invoke "git" "init") (invoke "git" "config" "--global" "user.name" "Your Name") (invoke "git" "config" "--global" "user.email" "you@example.com") - #t)) + #t)) (replace 'check (lambda* (#:key inputs outputs #:allow-other-keys) (add-installed-pythonpath inputs outputs) - (invoke "pytest" "tests" "-k" + ;; The file below contains about 30 tests that fail because they + ;; depend on tools from multiple languages (cargo, npm, cpan, + ;; Rscript, etc). There are other tests that pass, but it's more + ;; convenient to skip the whole file than list 30 tests to skip. + (invoke "pytest" "--ignore=tests/repository_test.py" + ;; Ruby and Node tests require node and gem. + "--ignore=tests/languages/node_test.py" + "--ignore=tests/languages/ruby_test.py" + ;; FIXME: Python tests fail because of distlib version + ;; mismatch. Even with python-distlib/next it is + ;; pulling version 0.3.0, while 0.3.1 is required. + "--ignore=tests/languages/python_test.py" "-k" (string-append - ;; Disable conda tests. - "not test_conda_hook" - " and not test_conda_with_additional_dependencies_hook" - " and not test_local_conda_additional_dependencies" - ;; Disable cpan tests. - " and not test_local_perl_additional_dependencies" - " and not test_perl_hook" - ;; Disable Ruby tests. - " and not test_additional_ruby_dependencies_installed" - " and not test_install_rbenv" - " and not test_install_rbenv_with_version" - " and not test_run_a_ruby_hook" - " and not test_run_ruby_hook_with_disable_shared_gems" - " and not test_run_versioned_ruby_hook" - ;; Disable Cargo tests. - " and not test_additional_rust_cli_dependencies_installed" - " and not test_additional_rust_lib_dependencies_installed" - " and not test_local_rust_additional_dependencies" - " and not test_rust_hook" - ;; Disable dotnet tests. - " and not test_dotnet_hook" - ;; Disable nodejs tests. - " and not test_unhealthy_if_system_node_goes_missing" - " and not test_installs_without_links_outside_env" - " and not test_healthy_system_node" - ;; Disable python2 test. - " and not test_switch_language_versions_doesnt_clobber" - ;; These tests try to open a network socket. - " and not test_additional_golang_dependencies_installed" - " and not test_additional_node_dependencies_installed" - " and not test_golang_hook" - " and not test_golang_hook_still_works_when_gobin_is_set" - " and not test_local_golang_additional_dependencies" - " and not test_main" - " and not test_node_hook_with_npm_userconfig_set" - " and not test_run_a_node_hook" - " and not test_run_versioned_node_hook" - ;; Tests failing with a permission error. - ;; They try to write to the filesystem. - " and not test_autoupdate_hook_disappearing_repo" - " and not test_hook_disppearing_repo_raises" - " and not test_img_conflict" - " and not test_img_something_unstaged" - " and not test_installed_from_venv" - " and not test_too_new_version" - " and not test_try_repo_uncommitted_changes" - " and not test_versions_ok" - ;; This test tries to activate a virtualenv. - " and not test_healthy_venv_creator" - ;; Fatal error: Not a Git repository. - " and not test_all_cmds" - " and not test_try_repo" - ;; No module named 'pip._internal.cli.main'. - " and not test_additional_dependencies_roll_forward" - ;; Assertion errors. - " and not test_install_existing_hooks_no_overwrite" - " and not test_uninstall_restores_legacy_hooks")))) - (add-before 'reset-gzip-timestamps 'make-files-writable + ;; TODO: these tests fail with AssertionError. It may + ;; be possible to fix them. + "not test_install_existing_hooks_no_overwrite" + " and not test_uninstall_restores_legacy_hooks" + " and not test_installed_from_venv")))) + (add-before 'reset-gzip-timestamps 'make-gz-writable (lambda* (#:key outputs #:allow-other-keys) ;; Make sure .gz files are writable so that the ;; 'reset-gzip-timestamps' phase can do its work. @@ -1617,8 +1581,13 @@ control to Git repositories.") #t)))))) (native-inputs `(("git" ,git-minimal) + ("python-covdefaults" ,python-covdefaults) + ("python-coverage" ,python-coverage) + ("python-distlib" ,python-distlib/next) ("python-pytest" ,python-pytest) - ("python-re-assert" ,python-re-assert))) + ("python-pytest-env" ,python-pytest-env) + ("python-re-assert" ,python-re-assert) + ("which" ,which))) ;; Propagate because pre-commit is also used as a module. (propagated-inputs `(("python-cfgv" ,python-cfgv) |