From 59ed2ee66516093c9f4b429eb2d9f2e34fd6ebc8 Mon Sep 17 00:00:00 2001 From: Ruairidh MacLeod Date: Tue, 6 Dec 2022 12:04:19 +0000 Subject: [PATCH] fix dotnet hooks with prefixes --- pre_commit/languages/dotnet.py | 9 ++++++++- .../dotnet_hooks_csproj_prefix_repo/.gitignore | 3 +++ .../.pre-commit-hooks.yaml | 5 +++++ .../dotnet_hooks_csproj_prefix_repo/Program.cs | 12 ++++++++++++ .../dotnet_hooks_csproj_prefix_repo.csproj | 9 +++++++++ tests/repository_test.py | 1 + 6 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 testing/resources/dotnet_hooks_csproj_prefix_repo/.gitignore create mode 100644 testing/resources/dotnet_hooks_csproj_prefix_repo/.pre-commit-hooks.yaml create mode 100644 testing/resources/dotnet_hooks_csproj_prefix_repo/Program.cs create mode 100644 testing/resources/dotnet_hooks_csproj_prefix_repo/dotnet_hooks_csproj_prefix_repo.csproj diff --git a/pre_commit/languages/dotnet.py b/pre_commit/languages/dotnet.py index 3983c6f0c..54e7e15e6 100644 --- a/pre_commit/languages/dotnet.py +++ b/pre_commit/languages/dotnet.py @@ -2,6 +2,7 @@ import contextlib import os.path +import re from typing import Generator from typing import Sequence @@ -58,9 +59,15 @@ def install_environment( ) # Determine tool from the packaged file ..nupkg + # https://learn.microsoft.com/en-us/nuget/concepts/package-versioning#version-basics + tool_name_re = re.compile(r'(.*)\.\d+\.\d+\.\d+(-.*)?\.nupkg') + build_outputs = os.listdir(os.path.join(prefix.prefix_dir, build_dir)) for output in build_outputs: - tool_name = output.split('.')[0] + + tool_name_match = tool_name_re.match(output) + assert tool_name_match + tool_name = tool_name_match.group(1) # Install to bin dir helpers.run_setup_cmd( diff --git a/testing/resources/dotnet_hooks_csproj_prefix_repo/.gitignore b/testing/resources/dotnet_hooks_csproj_prefix_repo/.gitignore new file mode 100644 index 000000000..edcd28f4a --- /dev/null +++ b/testing/resources/dotnet_hooks_csproj_prefix_repo/.gitignore @@ -0,0 +1,3 @@ +bin/ +obj/ +nupkg/ diff --git a/testing/resources/dotnet_hooks_csproj_prefix_repo/.pre-commit-hooks.yaml b/testing/resources/dotnet_hooks_csproj_prefix_repo/.pre-commit-hooks.yaml new file mode 100644 index 000000000..6626627d7 --- /dev/null +++ b/testing/resources/dotnet_hooks_csproj_prefix_repo/.pre-commit-hooks.yaml @@ -0,0 +1,5 @@ +- id: dotnet-example-hook + name: dotnet example hook + entry: testeroni.tool + language: dotnet + files: '' diff --git a/testing/resources/dotnet_hooks_csproj_prefix_repo/Program.cs b/testing/resources/dotnet_hooks_csproj_prefix_repo/Program.cs new file mode 100644 index 000000000..1456e8ef2 --- /dev/null +++ b/testing/resources/dotnet_hooks_csproj_prefix_repo/Program.cs @@ -0,0 +1,12 @@ +using System; + +namespace dotnet_hooks_repo +{ + class Program + { + static void Main(string[] args) + { + Console.WriteLine("Hello from dotnet!"); + } + } +} diff --git a/testing/resources/dotnet_hooks_csproj_prefix_repo/dotnet_hooks_csproj_prefix_repo.csproj b/testing/resources/dotnet_hooks_csproj_prefix_repo/dotnet_hooks_csproj_prefix_repo.csproj new file mode 100644 index 000000000..754b76006 --- /dev/null +++ b/testing/resources/dotnet_hooks_csproj_prefix_repo/dotnet_hooks_csproj_prefix_repo.csproj @@ -0,0 +1,9 @@ + + + Exe + net7.0 + true + testeroni.tool + ./nupkg + + diff --git a/tests/repository_test.py b/tests/repository_test.py index 8705d8860..c3936bf2f 100644 --- a/tests/repository_test.py +++ b/tests/repository_test.py @@ -1031,6 +1031,7 @@ def test_local_perl_additional_dependencies(store): 'dotnet_hooks_csproj_repo', 'dotnet_hooks_sln_repo', 'dotnet_hooks_combo_repo', + 'dotnet_hooks_csproj_prefix_repo', ), ) def test_dotnet_hook(tempdir_factory, store, repo):