154 lines
6 KiB
Python
154 lines
6 KiB
Python
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'''\
|
|
<Project Sdk="Microsoft.NET.Sdk">
|
|
<PropertyGroup>
|
|
<OutputType>Exe</OutputType>
|
|
<TargetFramework>net8</TargetFramework>
|
|
<PackAsTool>true</PackAsTool>
|
|
<ToolCommandName>{tool_name}</ToolCommandName>
|
|
<PackageOutputPath>./nupkg</PackageOutputPath>
|
|
</PropertyGroup>
|
|
</Project>
|
|
'''
|
|
|
|
|
|
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')
|