blob: b6b677e5d8d022fb69c004023448d95e34e9091d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
Feature: Compile C code into Ruby extensions.
In order to automate compilation process.
As a Gem developer.
I want rake tasks compile source code for me.
Scenario: compile single extension
Given a safe project directory
And scaffold code for extension 'extension_one'
And 'tmp' folder is deleted
When rake task 'compile' is invoked
Then rake task 'compile' succeeded
And binary extension 'extension_one' do exist in 'lib'
And 'tmp' folder is created
Scenario: not recompile unmodified extension
Given a safe project directory
And scaffold code for extension 'extension_one'
And I've already successfully executed rake task 'compile'
And not changed any file since
When rake task 'compile' is invoked
Then rake task 'compile' succeeded
And output of rake task 'compile' do not contain /extension_one/
Scenario: recompile extension when source is modified
Given a safe project directory
And scaffold code for extension 'extension_one'
And I've already successfully executed rake task 'compile'
When touching 'source.c' file of extension 'extension_one'
And rake task 'compile' is invoked
Then rake task 'compile' succeeded
And output of rake task 'compile' contains /extension_one/
Scenario: compile multiple extensions
Given a safe project directory
And scaffold code for extension 'extension_one'
And scaffold code for extension 'extension_two'
And 'tmp' folder is deleted
When rake task 'compile' is invoked
Then rake task 'compile' succeeded
And binary extension 'extension_one' do exist in 'lib'
And binary extension 'extension_two' do exist in 'lib'
And 'tmp' folder is created
Scenario: compile one extension instead of all present
Given a safe project directory
And scaffold code for extension 'extension_one'
And scaffold code for extension 'extension_two'
When rake task 'compile:extension_one' is invoked
Then rake task 'compile:extension_one' succeeded
And output of rake task 'compile:extension_one' do not contain /extension_two/
And binary extension 'extension_one' do exist in 'lib'
And binary extension 'extension_two' do not exist in 'lib'
Scenario: removing temporary files
Given a safe project directory
And scaffold code for extension 'extension_one'
And I've already successfully executed rake task 'compile'
When rake task 'clean' is invoked
Then rake task 'clean' succeeded
And binary extension 'extension_one' do exist in 'lib'
And 'tmp' folder do not exist
Scenario: clobbering binary and temporary files
Given a safe project directory
And scaffold code for extension 'extension_one'
And I've already successfully executed rake task 'compile'
When rake task 'clobber' is invoked
Then rake task 'clobber' succeeded
And binary extension 'extension_one' do not exist in 'lib'
And 'tmp' folder do not exist
|