codegourmet

savory code and other culinary highlights

Integration Tests With Celluloid::IO, Part 1

| Comments

While creating Celluloid based applications is more fun than you’d expect from multithreaded programming, testing them has some caveats.

Here’s how we did the test setup with MiniTest and as a bonus I’ll describe a hack to handle worker exceptions correctly in a second post

Vim Modifiable / Readonly Buffer

| Comments

Sometimes, vim shows an annoying warning saying

1
2
E21: Cannot make changes, 'modifiable' is off
Press ENTER or type command to continue

or:

1
2
Changing readonly file
Press ENTER or type command to continue

Ruby: Capturing and Mocking Stdout

| Comments

Sometimes, you want to assert that a method under test outputs some specific information to stdout. Or you want to silence all stdout from a library gone rogue (this happened to me once when I had to include a third-party library into a ruby C extension gem).

I wrote a Gem that does this, and MiniTest and RSpec already have matchers for this:

Vim: Staying on the Base Line

| Comments

Staying on the touch-typing base line (a, s, d, f, ..) is strongly promoted by the Vim movement keys - but :w, ctrl, escape and more tend to distract my hand position. Here are some of the steps I took to deal with this:

  • map , to Leader
  • map Space to ^
  • map Control-m to save all
  • dual-map Caps Lock
  • map jj to Escape in insert mode
  • remap window focus movement
  • map Escape-Escape to nohlsearch

Unmasking Exceptions

| Comments

Raising core StandardErrors can mask bugs in your code layer. But even re-raising exceptions from deeper service layers can mask errors that have nothing to do with the current exception use case.