```coffeescript
should = require('chai').should()

describe 'grunt-node-gyp', ->
	describe 'configure', ->
		it 'should configure a release build by default', ->
			;

		it 'should configure a debug build if the debug option is passed', ->
			;

		it 'should fail if there is no binding.gyp', ->
			;

	describe 'build', ->
		it 'should build a release build by default', ->
			;

		it 'should build a debug build if the debug option is passed', ->
			;

		it 'should fail if there are no build files', ->
			;

	describe 'clean', ->
		it 'should remove the build directory', ->
			;

	describe 'rebuild', ->
		it 'should rebuild a release build by default', ->
			;

		it 'should rebuild a debug build if the debug option is passed', ->
			;

		it 'should fail if there is no binding.gyp', ->
			;

	describe 'default (no command passed)', ->
		it 'should rebuild a release build by default', ->
			;

		it 'should rebuild a debug build if the debug option is passed', ->
			;

		it 'should fail if there is no binding.gyp', ->
			;
```

Add helper function execGruntTask(task, callback)
user
```coffeescript
should = require('chai').should()
grunt = require 'grunt'

gruntOptions =
	gruntfile: __dirname + '/support/Gruntfile.coffee'

execGruntTask = (task, callback) ->
	grunt.tasks 'gyp:' + task, gruntOptions, ->
		callback()

describe 'grunt-node-gyp', ->
	describe 'configure', ->
		it 'should configure a release build by default', ->
			;

		it 'should configure a debug build if the debug option is passed', ->
			;

		it 'should fail if there is no binding.gyp', ->
			;

	describe 'build', ->
		it 'should build a release build by default', ->
			;

		it 'should build a debug build if the debug option is passed', ->
			;

		it 'should fail if there are no build files', ->
			;

	describe 'clean', ->
		it 'should remove the build directory', ->
			;

	describe 'rebuild', ->
		it 'should rebuild a release build by default', ->
			;

		it 'should rebuild a debug build if the debug option is passed', ->
			;

		it 'should fail if there is no binding.gyp', ->
			;

	describe 'default (no command passed)', ->
		it 'should rebuild a release build by default', ->
			;

		it 'should rebuild a debug build if the debug option is passed', ->
			;

		it 'should fail if there is no binding.gyp', ->
			;
```
assistant