From 9b3df4b90e287ae99658f684dd489eea3d0defd9 Mon Sep 17 00:00:00 2001 From: Walluce Pinkham Date: Wed, 6 Apr 2022 10:19:21 +0100 Subject: [PATCH] Handling multiple outputs from dotnet pack --- pre_commit/languages/dotnet.py | 27 ++++++++---------- .../.pre-commit-hooks.yaml | 12 ++++++++ .../dotnet_hooks_combo_repo.sln | 28 +++++++++++++++++++ .../dotnet_hooks_combo_repo/proj1/Program.cs | 12 ++++++++ .../proj1/proj1.csproj | 12 ++++++++ .../dotnet_hooks_combo_repo/proj2/Program.cs | 12 ++++++++ .../proj2/proj2.csproj | 12 ++++++++ tests/repository_test.py | 1 + 8 files changed, 101 insertions(+), 15 deletions(-) create mode 100644 testing/resources/dotnet_hooks_combo_repo/.pre-commit-hooks.yaml create mode 100644 testing/resources/dotnet_hooks_combo_repo/dotnet_hooks_combo_repo.sln create mode 100644 testing/resources/dotnet_hooks_combo_repo/proj1/Program.cs create mode 100644 testing/resources/dotnet_hooks_combo_repo/proj1/proj1.csproj create mode 100644 testing/resources/dotnet_hooks_combo_repo/proj2/Program.cs create mode 100644 testing/resources/dotnet_hooks_combo_repo/proj2/proj2.csproj diff --git a/pre_commit/languages/dotnet.py b/pre_commit/languages/dotnet.py index a16e7f077..9323f4079 100644 --- a/pre_commit/languages/dotnet.py +++ b/pre_commit/languages/dotnet.py @@ -59,22 +59,19 @@ def install_environment( # Determine tool from the packaged file ..nupkg build_outputs = os.listdir(os.path.join(prefix.prefix_dir, build_dir)) - if len(build_outputs) != 1: - raise NotImplementedError( - f"Can't handle multiple build outputs. Got {build_outputs}", + for output in build_outputs: + tool_name = output.split('.')[0] + + # Install to bin dir + helpers.run_setup_cmd( + prefix, + ( + 'dotnet', 'tool', 'install', + '--tool-path', os.path.join(envdir, BIN_DIR), + '--add-source', build_dir, + tool_name, + ), ) - tool_name = build_outputs[0].split('.')[0] - - # Install to bin dir - helpers.run_setup_cmd( - prefix, - ( - 'dotnet', 'tool', 'install', - '--tool-path', os.path.join(envdir, BIN_DIR), - '--add-source', build_dir, - tool_name, - ), - ) # Clean the git dir, ignoring the environment dir clean_cmd = ('git', 'clean', '-ffxd', '-e', f'{ENVIRONMENT_DIR}-*') diff --git a/testing/resources/dotnet_hooks_combo_repo/.pre-commit-hooks.yaml b/testing/resources/dotnet_hooks_combo_repo/.pre-commit-hooks.yaml new file mode 100644 index 000000000..f221854a4 --- /dev/null +++ b/testing/resources/dotnet_hooks_combo_repo/.pre-commit-hooks.yaml @@ -0,0 +1,12 @@ +- id: dotnet-example-hook + name: Test Project 1 + description: Test Project 1 + entry: proj1 + language: dotnet + stages: [commit] +- id: proj2 + name: Test Project 2 + description: Test Project 2 + entry: proj2 + language: dotnet + stages: [commit] diff --git a/testing/resources/dotnet_hooks_combo_repo/dotnet_hooks_combo_repo.sln b/testing/resources/dotnet_hooks_combo_repo/dotnet_hooks_combo_repo.sln new file mode 100644 index 000000000..edb0fcbc5 --- /dev/null +++ b/testing/resources/dotnet_hooks_combo_repo/dotnet_hooks_combo_repo.sln @@ -0,0 +1,28 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.30114.105 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "proj1", "proj1\proj1.csproj", "{38A939C3-DEA4-47D7-9B75-0418C4249662}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "proj2", "proj2\proj2.csproj", "{4C9916CB-165C-4EF5-8A57-4CB6794C1EBF}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {38A939C3-DEA4-47D7-9B75-0418C4249662}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {38A939C3-DEA4-47D7-9B75-0418C4249662}.Debug|Any CPU.Build.0 = Debug|Any CPU + {38A939C3-DEA4-47D7-9B75-0418C4249662}.Release|Any CPU.ActiveCfg = Release|Any CPU + {38A939C3-DEA4-47D7-9B75-0418C4249662}.Release|Any CPU.Build.0 = Release|Any CPU + {4C9916CB-165C-4EF5-8A57-4CB6794C1EBF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4C9916CB-165C-4EF5-8A57-4CB6794C1EBF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4C9916CB-165C-4EF5-8A57-4CB6794C1EBF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4C9916CB-165C-4EF5-8A57-4CB6794C1EBF}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/testing/resources/dotnet_hooks_combo_repo/proj1/Program.cs b/testing/resources/dotnet_hooks_combo_repo/proj1/Program.cs new file mode 100644 index 000000000..03876f5cd --- /dev/null +++ b/testing/resources/dotnet_hooks_combo_repo/proj1/Program.cs @@ -0,0 +1,12 @@ +using System; + +namespace proj1 +{ + class Program + { + static void Main(string[] args) + { + Console.Write("Hello from dotnet!\n"); + } + } +} diff --git a/testing/resources/dotnet_hooks_combo_repo/proj1/proj1.csproj b/testing/resources/dotnet_hooks_combo_repo/proj1/proj1.csproj new file mode 100644 index 000000000..4f714d339 --- /dev/null +++ b/testing/resources/dotnet_hooks_combo_repo/proj1/proj1.csproj @@ -0,0 +1,12 @@ + + + + Exe + net5.0 + + true + proj1 + ./nupkg + + + diff --git a/testing/resources/dotnet_hooks_combo_repo/proj2/Program.cs b/testing/resources/dotnet_hooks_combo_repo/proj2/Program.cs new file mode 100644 index 000000000..47a99a358 --- /dev/null +++ b/testing/resources/dotnet_hooks_combo_repo/proj2/Program.cs @@ -0,0 +1,12 @@ +using System; + +namespace proj2 +{ + class Program + { + static void Main(string[] args) + { + Console.WriteLine("Hello World!"); + } + } +} diff --git a/testing/resources/dotnet_hooks_combo_repo/proj2/proj2.csproj b/testing/resources/dotnet_hooks_combo_repo/proj2/proj2.csproj new file mode 100644 index 000000000..da451f7cc --- /dev/null +++ b/testing/resources/dotnet_hooks_combo_repo/proj2/proj2.csproj @@ -0,0 +1,12 @@ + + + + Exe + net5.0 + + true + proj2 + ./nupkg + + + diff --git a/tests/repository_test.py b/tests/repository_test.py index cef688716..5c7909c5c 100644 --- a/tests/repository_test.py +++ b/tests/repository_test.py @@ -1042,6 +1042,7 @@ def test_local_perl_additional_dependencies(store): ( 'dotnet_hooks_csproj_repo', 'dotnet_hooks_sln_repo', + 'dotnet_hooks_combo_repo', ), ) def test_dotnet_hook(tempdir_factory, store, repo):