July 15th, 2024

Async Git-stash workflow enables test test-driven development

This blog post explores an async Git-stash workflow for test-driven development, showcasing top-down system and component development with asynchronous features and dependency storage using Git stash. It provides a C++ library example for DeepThought computer development, highlighting the significance of test-driven development and asynchronous workflows.

Read original articleLink Icon
Async Git-stash workflow enables test test-driven development

This blog post discusses an async git-stash workflow for test-driven development. It showcases a workflow for developing systems and components top-down while using Git stash to enable asynchronous development and store dependency information. The post provides a shell script example for developing a C++ library for a computer named DeepThought. It demonstrates how features are built asynchronously, with dependencies stored in stash messages. The script shows the process of developing components like processor, memory, book, and page, handling dependencies and tests along the way. Each component is implemented, tested, committed, and dependencies popped from the stash until the final DeepThought computer is successfully developed. The post emphasizes the importance of test-driven development and asynchronous workflow in building complex systems.

Related

I kind of like rebasing

I kind of like rebasing

People debate Git workflows, favoring rebasing for a linear history. Redowan Delowar prefers rebasing to consolidate changes and maintain a clean commit history. They discuss interactive rebasing benefits, squashing commits, handling conflicts, and offer practical tips.

Software Engineering Practices (2022)

Software Engineering Practices (2022)

Gergely Orosz sparked a Twitter discussion on software engineering practices. Simon Willison elaborated on key practices in a blog post, emphasizing documentation, test data creation, database migrations, templates, code formatting, environment setup automation, and preview environments. Willison highlights the productivity and quality benefits of investing in these practices and recommends tools like Docker, Gitpod, and Codespaces for implementation.

Synchronous Core, Asynchronous Shell

Synchronous Core, Asynchronous Shell

A software architecture concept, "Synchronous Core, Asynchronous Shell," combines functional and imperative programming for clarity and testing. Rust faces challenges integrating synchronous and asynchronous parts, prompting suggestions for a similar approach.

Synchronous Core, Asynchronous Shell

Synchronous Core, Asynchronous Shell

Gary Bernhardt proposed a Synchronous Core, Asynchronous Shell model in software architecture, blending functional and imperative programming. Rust faces challenges integrating sync and async functions, leading to a trend of adopting this model for clarity and control.

Properly Testing Concurrent Data Structures

Properly Testing Concurrent Data Structures

The article explores testing concurrent data structures using the Rust library loom. It demonstrates creating property tests with managed threads to simulate concurrent behavior, emphasizing synchronization challenges and design considerations.

Link Icon 4 comments
By @globalmatador - 4 months
I like the idea but I'm afraid that this stack of stashes can result in some merge work when doing refactors in one step. I prefer have all the code in my branch the whole time and just stub implementations and set unfinished tests to disabled.
By @onion2k - 4 months
In TDD, at least as I learned it, you're supposed to write a test, write enough code to get it to pass, then write the next test, and so on. That doesn't require stashes between steps. The only reason the stashes are 'necessary' here is because the author is adding all their tests up front.