soneta / Soneta.MsBuild.SDK

Sdk stworzone przez firmę Soneta pozwalające automatycznie skonfigurować oraz uzupełnić projekty dodatków o niezbędne elementy potrzebne do współpracy z oprogramowaniem enova.
MIT License
8 stars 12 forks source link

Błędne wykrywanie projektu testowego - niezgodność z dokumentacją #51

Closed SylwesterZarebski closed 1 year ago

SylwesterZarebski commented 2 years ago

Dokumentacja i wykrywanie projektu testowego są niezgodne ze sobą: Dokumentacja opisuje

Projekt testowy, który w swojej nazwie będzie zawierał słowo "Tests"

Zaś w Sdk.props jest:

<IsTestProject Condition="$(IsTestProject) == '' AND $(MSBuildProjectName.Contains('Test'))">true</IsTestProject>

Tests != Test

Moim zdaniem powinno się zmodyfikować wykrywanie na Contains('Tests'), bo fraza Test jest zbyt ogólną i wiele projektów miewa Test w nazwie projektu, ale nie jest projektem testowym.

PS. Wydaje się, że najlepszą konstrukcją powinno być EndsWith('Tests'), zamiast Contains().

bartcho commented 2 years ago

Warunek Contains('Test') jest od początku istnienia SDK. W przypadku bibliotek z Test w nazwie zawsze można jawnie w takim projekcie ustawić <IsTestProject>false</IsTestProject>, wtedy konwencja nie będzie miała znaczenia, bo Condition wyleci na pierwszym warunku. Np u nas w repozytorium projekty testowe kończą się na Test, natomiast projekt wspomagający testowanie Soneta.Test nie jest projektem testowym i ma to jawnie ustawione.

Biorąc powyższe pod uwagę proponuję, aby raczej iść w kierunku aktualizacji dokumentacji do tego co jest w Sdk,props

SylwesterZarebski commented 2 years ago

Więc poza poprawieniem dokumentacji można by zrobić EndsWith. Być może też warto by testować nie samą frazę Test, a .Test (z kropką). W komplecie by było EndsWith('.Test').

SylwesterZarebski commented 2 years ago

Nadal dokumentacja https://dok.enova365.pl/SELF/35573 błędnie opisuje:

Projekt testowy, który w swojej nazwie będzie zawierał słowo "Tests"