from __future__ import annotations from pre_commit.languages import dotnet from testing.language_helpers import run_language def _write_program_cs(tmp_path): program_cs = '''\ using System; namespace dotnet_tests { class Program { static void Main(string[] args) { Console.WriteLine("Hello from dotnet!"); } } } ''' tmp_path.joinpath('Program.cs').write_text(program_cs) def _csproj(tool_name): return f'''\ Exe net6 true {tool_name} ./nupkg ''' def test_dotnet_csproj(tmp_path): csproj = _csproj('testeroni') _write_program_cs(tmp_path) tmp_path.joinpath('dotnet_csproj.csproj').write_text(csproj) ret = run_language(tmp_path, dotnet, 'testeroni') assert ret == (0, b'Hello from dotnet!\n') def test_dotnet_csproj_prefix(tmp_path): csproj = _csproj('testeroni.tool') _write_program_cs(tmp_path) tmp_path.joinpath('dotnet_hooks_csproj_prefix.csproj').write_text(csproj) ret = run_language(tmp_path, dotnet, 'testeroni.tool') assert ret == (0, b'Hello from dotnet!\n') def test_dotnet_sln(tmp_path): csproj = _csproj('testeroni') sln = '''\ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 VisualStudioVersion = 15.0.26124.0 MinimumVisualStudioVersion = 15.0.26124.0 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "dotnet_hooks_sln_repo", "dotnet_hooks_sln_repo.csproj", "{6568CFDB-6F6F-45A9-932C-8C7DAABC8E56}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Debug|x64 = Debug|x64 Debug|x86 = Debug|x86 Release|Any CPU = Release|Any CPU Release|x64 = Release|x64 Release|x86 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {6568CFDB-6F6F-45A9-932C-8C7DAABC8E56}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {6568CFDB-6F6F-45A9-932C-8C7DAABC8E56}.Debug|Any CPU.Build.0 = Debug|Any CPU {6568CFDB-6F6F-45A9-932C-8C7DAABC8E56}.Debug|x64.ActiveCfg = Debug|Any CPU {6568CFDB-6F6F-45A9-932C-8C7DAABC8E56}.Debug|x64.Build.0 = Debug|Any CPU {6568CFDB-6F6F-45A9-932C-8C7DAABC8E56}.Debug|x86.ActiveCfg = Debug|Any CPU {6568CFDB-6F6F-45A9-932C-8C7DAABC8E56}.Debug|x86.Build.0 = Debug|Any CPU {6568CFDB-6F6F-45A9-932C-8C7DAABC8E56}.Release|Any CPU.ActiveCfg = Release|Any CPU {6568CFDB-6F6F-45A9-932C-8C7DAABC8E56}.Release|Any CPU.Build.0 = Release|Any CPU {6568CFDB-6F6F-45A9-932C-8C7DAABC8E56}.Release|x64.ActiveCfg = Release|Any CPU {6568CFDB-6F6F-45A9-932C-8C7DAABC8E56}.Release|x64.Build.0 = Release|Any CPU {6568CFDB-6F6F-45A9-932C-8C7DAABC8E56}.Release|x86.ActiveCfg = Release|Any CPU {6568CFDB-6F6F-45A9-932C-8C7DAABC8E56}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection EndGlobal ''' # noqa: E501 _write_program_cs(tmp_path) tmp_path.joinpath('dotnet_hooks_sln_repo.csproj').write_text(csproj) tmp_path.joinpath('dotnet_hooks_sln_repo.sln').write_text(sln) ret = run_language(tmp_path, dotnet, 'testeroni') assert ret == (0, b'Hello from dotnet!\n') def _setup_dotnet_combo(tmp_path): sln = '''\ 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 ''' # noqa: E501 tmp_path.joinpath('dotnet_hooks_combo_repo.sln').write_text(sln) csproj1 = _csproj('proj1') proj1 = tmp_path.joinpath('proj1') proj1.mkdir() proj1.joinpath('proj1.csproj').write_text(csproj1) _write_program_cs(proj1) csproj2 = _csproj('proj2') proj2 = tmp_path.joinpath('proj2') proj2.mkdir() proj2.joinpath('proj2.csproj').write_text(csproj2) _write_program_cs(proj2) def test_dotnet_combo_proj1(tmp_path): _setup_dotnet_combo(tmp_path) ret = run_language(tmp_path, dotnet, 'proj1') assert ret == (0, b'Hello from dotnet!\n') def test_dotnet_combo_proj2(tmp_path): _setup_dotnet_combo(tmp_path) ret = run_language(tmp_path, dotnet, 'proj2') assert ret == (0, b'Hello from dotnet!\n')