Learn Go with test-driven development
با روش TDD زبان برنامهنویسی go رو یاد بگیرید.
#go #golang #tdd #test #red #green #refactor #testing #driven #development
https://github.com/quii/learn-go-with-tests
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
با روش TDD زبان برنامهنویسی go رو یاد بگیرید.
#go #golang #tdd #test #red #green #refactor #testing #driven #development
https://github.com/quii/learn-go-with-tests
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🔥8
🔵 عنوان مقاله
PegoMock 4.3: A Powerful Yet Simple Mocking Framework
🟢 خلاصه مقاله:
**PegoMock 4.3 یک فریمورک mocking ساده اما قدرتمند است که با یک DSL خوانا نوشتن، خواندن و نگهداری تستها را آسان میکند. هسته اصلی آن، زبانی است که بهجای کدهای طولانی، نیت تست را شفاف بیان میکند. این ابزار از stubbing و argument matching پشتیبانی میکند؛ یعنی میتوانید رفتار وابستگیهای شبیهسازیشده را تعریف کنید و بر اساس الگوهای ورودی، انتظارها را دقیق و انعطافپذیر تنظیم کنید. نتیجه، تستهایی شفاف، کمبوایلرپلیت و قابل اتکا برای تیمهاست.
#Testing #Mocking #DSL #UnitTesting #Stubbing #ArgumentMatching #TestAutomation
🟣لینک مقاله:
https://golangweekly.com/link/175072/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
PegoMock 4.3: A Powerful Yet Simple Mocking Framework
🟢 خلاصه مقاله:
**PegoMock 4.3 یک فریمورک mocking ساده اما قدرتمند است که با یک DSL خوانا نوشتن، خواندن و نگهداری تستها را آسان میکند. هسته اصلی آن، زبانی است که بهجای کدهای طولانی، نیت تست را شفاف بیان میکند. این ابزار از stubbing و argument matching پشتیبانی میکند؛ یعنی میتوانید رفتار وابستگیهای شبیهسازیشده را تعریف کنید و بر اساس الگوهای ورودی، انتظارها را دقیق و انعطافپذیر تنظیم کنید. نتیجه، تستهایی شفاف، کمبوایلرپلیت و قابل اتکا برای تیمهاست.
#Testing #Mocking #DSL #UnitTesting #Stubbing #ArgumentMatching #TestAutomation
🟣لینک مقاله:
https://golangweekly.com/link/175072/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - petergtz/pegomock: Pegomock is a powerful, yet simple mocking framework for the Go programming language
Pegomock is a powerful, yet simple mocking framework for the Go programming language - petergtz/pegomock
👍1
🔵 عنوان مقاله
How to Reproduce and Fix an I/O Data Race with Go and DTrace
🟢 خلاصه مقاله:
در این مقاله نویسنده با یک باگ مبهم روبهرو میشود که فقط در CI رخ میدهد: یک data race در سطح I/O فایلها که باعث شکست گهگاه تستها میشود. چون این رقابت در مرز فایلسیستم رخ میدهد و نه در حافظه مشترک، ابزار race detector در Go آن را تشخیص نمیدهد. برای بازتولید محلی، نویسنده شرایط شبیه CI را ایجاد میکند: اجرای تکراری تستها، افزایش همزمانی، و ایجاد تنوع زمانی تا ترتیبهای نادری که خطا را میسازند آشکار شوند. با استفاده از DTrace و رصد فراخوانیهای سیستمی مانند open، write، fsync و rename، الگوی واقعی آشکار میشود: خواندن فایل همزمان با نوشتن/حذف جزئی یا قبل از تحویل اتمی محتوا.
راهکار با اتمیسازی و هماهنگسازی است: نوشتن در فایل موقت و سپس os.Rename برای تحویل اتمی، افزودن fsync در نقاط لازم، و در صورت نیاز قفل/کانال برای سریالسازی دسترسی به مسیرهای مشترک. در تستها نیز از t.TempDir() برای جداسازی حالت، پرهیز از تکیه بر mtime، و اتکا به سیگنالهای قطعی بهجای تأخیرهای زمانی استفاده میشود. نتیجه، حذف flaky بودن در CI و همگرایی رفتار محلی و CI است؛ و درس اصلی اینکه برای رقابتهای I/O باید به ابزارهای ردیابی سطح سیستم تکیه کرد و پروتکل I/O را صریح و اتمی طراحی نمود.
#Go #DTrace #Concurrency #CI #Filesystem #Testing #Debugging #RaceCondition
🟣لینک مقاله:
https://golangweekly.com/link/175360/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
How to Reproduce and Fix an I/O Data Race with Go and DTrace
🟢 خلاصه مقاله:
در این مقاله نویسنده با یک باگ مبهم روبهرو میشود که فقط در CI رخ میدهد: یک data race در سطح I/O فایلها که باعث شکست گهگاه تستها میشود. چون این رقابت در مرز فایلسیستم رخ میدهد و نه در حافظه مشترک، ابزار race detector در Go آن را تشخیص نمیدهد. برای بازتولید محلی، نویسنده شرایط شبیه CI را ایجاد میکند: اجرای تکراری تستها، افزایش همزمانی، و ایجاد تنوع زمانی تا ترتیبهای نادری که خطا را میسازند آشکار شوند. با استفاده از DTrace و رصد فراخوانیهای سیستمی مانند open، write، fsync و rename، الگوی واقعی آشکار میشود: خواندن فایل همزمان با نوشتن/حذف جزئی یا قبل از تحویل اتمی محتوا.
راهکار با اتمیسازی و هماهنگسازی است: نوشتن در فایل موقت و سپس os.Rename برای تحویل اتمی، افزودن fsync در نقاط لازم، و در صورت نیاز قفل/کانال برای سریالسازی دسترسی به مسیرهای مشترک. در تستها نیز از t.TempDir() برای جداسازی حالت، پرهیز از تکیه بر mtime، و اتکا به سیگنالهای قطعی بهجای تأخیرهای زمانی استفاده میشود. نتیجه، حذف flaky بودن در CI و همگرایی رفتار محلی و CI است؛ و درس اصلی اینکه برای رقابتهای I/O باید به ابزارهای ردیابی سطح سیستم تکیه کرد و پروتکل I/O را صریح و اتمی طراحی نمود.
#Go #DTrace #Concurrency #CI #Filesystem #Testing #Debugging #RaceCondition
🟣لینک مقاله:
https://golangweekly.com/link/175360/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
🔵 عنوان مقاله
How to Get Started with GitHub Copilot CLI
🟢 خلاصه مقاله:
** این مطلب با راهنماییای عملی از Andrea Griffiths (GitHub) نشان میدهد چگونه با GitHub Copilot CLI شروع کنید تا در ترمینال، درخواستهای زبانی خود را به دستورات شِل تبدیل کنید، خطاها و فلگهای ناشناخته را توضیح بگیرید و سریعتر اشکالزدایی کنید. روند آغاز کار ساده است: نصب و ورود به GitHub CLI، افزودن افزونه Copilot و بررسی فعال بودن دسترسی Copilot روی حساب GitHub؛ سپس با gh copilot help و دستورات تولید/توضیح فرمانها، میتوانید قبل از اجرا خروجیها را بررسی کنید تا از ایمنی کار مطمئن شوید. این ابزار روی Bash، Zsh و PowerShell کار میکند و برای وظایف روزمره مثل جستوجو، مدیریت پردازهها و کار با Git چرخه بازخورد را کوتاه میکند.
همزمان، نوشتهای از Redowan Delowar درباره Organizing Go Tests پیشنهاد میشود که ساختاردهی حرفهای تستهای Go را مرور میکند: کنار هم نگهداشتن فایلهای *_test.go با کد، بهکارگیری تستهای جدولمحور و زیربخشها با t.Run، استفاده از پوشه testdata برای دادههای تست، همراه با بنچمارکها، مثالها، نامگذاری شفاف، گزارش پوشش و اتصال go test به CI. مجموع این توصیهها هم بهرهوری توسعه را بالا میبرد و هم کیفیت و قابلیت اعتماد تستها را.
#GitHub #Copilot #CLI #Go #Testing #DeveloperTools #Productivity #DevOps
🟣لینک مقاله:
https://golangweekly.com/link/175637/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
How to Get Started with GitHub Copilot CLI
🟢 خلاصه مقاله:
** این مطلب با راهنماییای عملی از Andrea Griffiths (GitHub) نشان میدهد چگونه با GitHub Copilot CLI شروع کنید تا در ترمینال، درخواستهای زبانی خود را به دستورات شِل تبدیل کنید، خطاها و فلگهای ناشناخته را توضیح بگیرید و سریعتر اشکالزدایی کنید. روند آغاز کار ساده است: نصب و ورود به GitHub CLI، افزودن افزونه Copilot و بررسی فعال بودن دسترسی Copilot روی حساب GitHub؛ سپس با gh copilot help و دستورات تولید/توضیح فرمانها، میتوانید قبل از اجرا خروجیها را بررسی کنید تا از ایمنی کار مطمئن شوید. این ابزار روی Bash، Zsh و PowerShell کار میکند و برای وظایف روزمره مثل جستوجو، مدیریت پردازهها و کار با Git چرخه بازخورد را کوتاه میکند.
همزمان، نوشتهای از Redowan Delowar درباره Organizing Go Tests پیشنهاد میشود که ساختاردهی حرفهای تستهای Go را مرور میکند: کنار هم نگهداشتن فایلهای *_test.go با کد، بهکارگیری تستهای جدولمحور و زیربخشها با t.Run، استفاده از پوشه testdata برای دادههای تست، همراه با بنچمارکها، مثالها، نامگذاری شفاف، گزارش پوشش و اتصال go test به CI. مجموع این توصیهها هم بهرهوری توسعه را بالا میبرد و هم کیفیت و قابلیت اعتماد تستها را.
#GitHub #Copilot #CLI #Go #Testing #DeveloperTools #Productivity #DevOps
🟣لینک مقاله:
https://golangweekly.com/link/175637/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
The GitHub Blog
GitHub Copilot CLI: How to get started
From cloning a repository to opening a pull request, here’s how to streamline your workflow with Copilot CLI.
❤1
🔵 عنوان مقاله
Sift: A Lightweight Terminal UI for Displaying Go Test Results
🟢 خلاصه مقاله:
Sift یک رابط کاربری ترمینالی سبک برای نمایش نتایج آزمونهای Go است. با لولهکردن خروجی JSON در حالت verbose به این ابزار، نتایج به نمای قابلپیمایش با بخشهای تاشو تبدیل میشوند تا ابتدا روی موارد مهم تمرکز کنید و فقط هنگام نیاز جزئیات را باز کنید. این رویکرد شلوغی خروجی را کم میکند، خوانایی را بالا میبرد و فرایند عیبیابی را در همان محیط ترمینال سریعتر و سادهتر میسازد.
#Go #Testing #TUI #CLI #JSON #DeveloperTools #Sift
🟣لینک مقاله:
https://golangweekly.com/link/175641/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Sift: A Lightweight Terminal UI for Displaying Go Test Results
🟢 خلاصه مقاله:
Sift یک رابط کاربری ترمینالی سبک برای نمایش نتایج آزمونهای Go است. با لولهکردن خروجی JSON در حالت verbose به این ابزار، نتایج به نمای قابلپیمایش با بخشهای تاشو تبدیل میشوند تا ابتدا روی موارد مهم تمرکز کنید و فقط هنگام نیاز جزئیات را باز کنید. این رویکرد شلوغی خروجی را کم میکند، خوانایی را بالا میبرد و فرایند عیبیابی را در همان محیط ترمینال سریعتر و سادهتر میسازد.
#Go #Testing #TUI #CLI #JSON #DeveloperTools #Sift
🟣لینک مقاله:
https://golangweekly.com/link/175641/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - timtatt/sift: A lightweight terminal UI for displaying Go tests
A lightweight terminal UI for displaying Go tests. Contribute to timtatt/sift development by creating an account on GitHub.
❤1
🔵 عنوان مقاله
The “10x” Commandments of Highly Effective Go
🟢 خلاصه مقاله:
** مقاله با تمثیلی شوخطبعانه، «ده فرمان» برای توسعهدهندگان Go ارائه میکند؛ نه چیزِ تازه، بلکه ده راهنمای کلی و کاربردی برای نوشتن کد ساده، خوانا و قابل نگهداری. محورهای اصلی شامل سادگی و خوانایی، اینترفیسهای کوچک، مدیریت صریح خطا، همزمانی قابل پیشبینی با goroutine و channel، سازماندهی درست پکیجها، تست و بنچمارک، مستندسازی و بهینهسازی مبتنی بر اندازهگیری است. هر اصل با نمونههای عملی در GoLand همراه شده: استفاده از inspections برای شناسایی کد غیر idiomatic، refactor به سمت اینترفیسهای کوچک، الگوهای آماده برای error handling، اجرای تست و بنچمارک، دیباگ همزمانی، یکپارچهسازی linters و پروفایلینگ برای سنجش کارایی. برچسب «10x» فقط کمکی برای بهخاطر سپردن است؛ پیام اصلی این است که با تکیه بر عادتهای درست و بهرهگیری از GoLand، انجام کار درست آسانتر میشود.
#Go #Golang #GoLand #SoftwareEngineering #BestPractices #Testing #Refactoring #Productivity
🟣لینک مقاله:
https://golangweekly.com/link/175970/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
The “10x” Commandments of Highly Effective Go
🟢 خلاصه مقاله:
** مقاله با تمثیلی شوخطبعانه، «ده فرمان» برای توسعهدهندگان Go ارائه میکند؛ نه چیزِ تازه، بلکه ده راهنمای کلی و کاربردی برای نوشتن کد ساده، خوانا و قابل نگهداری. محورهای اصلی شامل سادگی و خوانایی، اینترفیسهای کوچک، مدیریت صریح خطا، همزمانی قابل پیشبینی با goroutine و channel، سازماندهی درست پکیجها، تست و بنچمارک، مستندسازی و بهینهسازی مبتنی بر اندازهگیری است. هر اصل با نمونههای عملی در GoLand همراه شده: استفاده از inspections برای شناسایی کد غیر idiomatic، refactor به سمت اینترفیسهای کوچک، الگوهای آماده برای error handling، اجرای تست و بنچمارک، دیباگ همزمانی، یکپارچهسازی linters و پروفایلینگ برای سنجش کارایی. برچسب «10x» فقط کمکی برای بهخاطر سپردن است؛ پیام اصلی این است که با تکیه بر عادتهای درست و بهرهگیری از GoLand، انجام کار درست آسانتر میشود.
#Go #Golang #GoLand #SoftwareEngineering #BestPractices #Testing #Refactoring #Productivity
🟣لینک مقاله:
https://golangweekly.com/link/175970/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
The JetBrains Blog
The “10x” Commandments of Highly Effective Go | The GoLand Blog
What makes Go developers truly effective? In this guest post, John Arundel shares ten practical “commandments” of Go excellence – timeless lessons for writing cleaner, safer, and more maintainable Go code.
👍1
🔵 عنوان مقاله
Subtest Grouping in Go
🟢 خلاصه مقاله:
این مقاله از Golang Weekly توضیح میدهد چگونه با استفاده از T.Run در بسته testing میتوان زیرآزمونها را گروهبندی کرد تا تستهای بزرگ و Table-Driven خواناتر، قابل نگهداریتر و قابل فیلترشدن شوند. با نامگذاری سلسلهمراتبی مثل "Parser/Valid" یا "Auth/Admin/Permissions" میتوان با go test -run فقط یک گروه یا یک مورد خاص را اجرا کرد و همان الگو برای Benchmarks با B.Run نیز کاربرد دارد. مزیت دیگر این الگو، مدیریت سادهتر Setup/Teardown با تکیه بر Closure و t.Cleanup و همچنین امکان موازیسازی امن با t.Parallel است. مقاله بر نامهای شفاف، پرهیز از وضعیت مشترک قابل تغییر، گروههای منسجم، و استفاده از t.Helper برای سادهسازی تأکید میکند؛ ضمن اینکه خروجی ساختیافته تستها با -json و ابزارها/IDEها بهخوبی یکپارچه میشود و عیبیابی و سرعت توسعه را بهبود میدهد.
#Go #Golang #Testing #Subtests #GoTesting #GolangWeekly #SoftwareTesting
🟣لینک مقاله:
https://golangweekly.com/link/175983/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Subtest Grouping in Go
🟢 خلاصه مقاله:
این مقاله از Golang Weekly توضیح میدهد چگونه با استفاده از T.Run در بسته testing میتوان زیرآزمونها را گروهبندی کرد تا تستهای بزرگ و Table-Driven خواناتر، قابل نگهداریتر و قابل فیلترشدن شوند. با نامگذاری سلسلهمراتبی مثل "Parser/Valid" یا "Auth/Admin/Permissions" میتوان با go test -run فقط یک گروه یا یک مورد خاص را اجرا کرد و همان الگو برای Benchmarks با B.Run نیز کاربرد دارد. مزیت دیگر این الگو، مدیریت سادهتر Setup/Teardown با تکیه بر Closure و t.Cleanup و همچنین امکان موازیسازی امن با t.Parallel است. مقاله بر نامهای شفاف، پرهیز از وضعیت مشترک قابل تغییر، گروههای منسجم، و استفاده از t.Helper برای سادهسازی تأکید میکند؛ ضمن اینکه خروجی ساختیافته تستها با -json و ابزارها/IDEها بهخوبی یکپارچه میشود و عیبیابی و سرعت توسعه را بهبود میدهد.
#Go #Golang #Testing #Subtests #GoTesting #GolangWeekly #SoftwareTesting
🟣لینک مقاله:
https://golangweekly.com/link/175983/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Redowan's Reflections
Subtest grouping in Go
Go has support for subtests starting from version 1.7. With t.Run, you can nest tests,
assign names to cases, and let the runner execute work in parallel by calling t.Parallel
from subtests if needed.
For small suites, a flat set of t.Run calls is usually…
assign names to cases, and let the runner execute work in parallel by calling t.Parallel
from subtests if needed.
For small suites, a flat set of t.Run calls is usually…