1
1
require ( 'chai' ) . should ( ) ;
2
2
var fs = require ( 'fs' ) ;
3
+ var exec = require ( 'child_process' ) . exec ;
3
4
var gitHooks = require ( '../lib/git-hooks' ) ;
4
5
var fsHelpers = require ( '../lib/fs-helpers' ) ;
5
6
@@ -26,7 +27,7 @@ describe('git-hook runner', function () {
26
27
} ) ;
27
28
28
29
it ( 'should works without hooks' , function ( done ) {
29
- gitHooks . run ( PRECOMMIT_HOOK_PATH , [ ] , function ( code ) {
30
+ gitHooks . run ( PRECOMMIT_HOOK_PATH , [ ] , '' , function ( code ) {
30
31
code . should . equal ( 0 ) ;
31
32
done ( ) ;
32
33
} ) ;
@@ -44,7 +45,7 @@ describe('git-hook runner', function () {
44
45
} ) ;
45
46
46
47
it ( 'should return an error' , function ( done ) {
47
- gitHooks . run ( PRECOMMIT_HOOK_PATH , [ ] , function ( code , error ) {
48
+ gitHooks . run ( PRECOMMIT_HOOK_PATH , [ ] , '' , function ( code , error ) {
48
49
code . should . equal ( 1 ) ;
49
50
error . should . be . ok ;
50
51
done ( ) ;
@@ -62,7 +63,7 @@ describe('git-hook runner', function () {
62
63
} ) ;
63
64
64
65
it ( 'should run it one by one' , function ( done ) {
65
- gitHooks . run ( PRECOMMIT_HOOK_PATH , [ ] , function ( code ) {
66
+ gitHooks . run ( PRECOMMIT_HOOK_PATH , [ ] , '' , function ( code ) {
66
67
code . should . equal ( 0 ) ;
67
68
hooks . forEach ( function ( name ) {
68
69
var logFile = SANDBOX_PATH + name + '.log' ;
@@ -76,20 +77,52 @@ describe('git-hook runner', function () {
76
77
describe ( 'and work without errors' , function ( ) {
77
78
var logFile = SANDBOX_PATH + 'hello.log' ;
78
79
beforeEach ( function ( ) {
79
- createHook ( PROJECT_PRECOMMIT_HOOK + 'hello' , 'echo "Hello, world! ${@:1}" > ' + logFile ) ;
80
+ createHook (
81
+ PROJECT_PRECOMMIT_HOOK + 'hello' ,
82
+ 'input=`cat`; echo -e "Hello, world!\n${@:1}\n$input" > ' + logFile
83
+ ) ;
80
84
} ) ;
81
85
82
86
it ( 'should pass all arguments to them' , function ( done ) {
83
- gitHooks . run ( PRECOMMIT_HOOK_PATH , [ 'I' , 'am' , 'working' , 'properly!' ] , function ( ) {
84
- fs . readFileSync ( logFile ) . toString ( ) . should . equal ( 'Hello, world! I am working properly!\n ' ) ;
87
+ gitHooks . run ( PRECOMMIT_HOOK_PATH , [ 'I' , 'am' , 'working' , 'properly!' ] , '' , function ( ) {
88
+ fs . readFileSync ( logFile ) . toString ( ) . trim ( ) . should . equal ( 'Hello, world!\nI am working properly!' ) ;
85
89
done ( ) ;
86
90
} ) ;
87
91
} ) ;
88
92
93
+ describe ( 'if standard input is not passed in' , function ( ) {
94
+ it ( 'should work properly' , function ( done ) {
95
+ exec ( PRECOMMIT_HOOK_PATH , function ( ) {
96
+ fs . readFileSync ( logFile ) . toString ( ) . trim ( )
97
+ . should . equal ( 'Hello, world!' ) ;
98
+ done ( ) ;
99
+ } ) ;
100
+ } ) ;
101
+ } ) ;
102
+
103
+ describe ( 'if standard input is passed in' , function ( ) {
104
+ it ( 'should read it properly' , function ( done ) {
105
+ exec ( 'echo "I am working properly!" | ' + PRECOMMIT_HOOK_PATH , function ( ) {
106
+ fs . readFileSync ( logFile ) . toString ( ) . trim ( )
107
+ . should . equal ( 'Hello, world!\n\nI am working properly!' ) ;
108
+ done ( ) ;
109
+ } ) ;
110
+ } ) ;
111
+
112
+ it ( 'should pass it to them' , function ( done ) {
113
+ gitHooks . run ( PRECOMMIT_HOOK_PATH , [ ] , 'I am working properly!' , function ( ) {
114
+ fs . readFileSync ( logFile ) . toString ( ) . trim ( )
115
+ . should . equal ( 'Hello, world!\n\nI am working properly!' ) ;
116
+ done ( ) ;
117
+ } ) ;
118
+ } ) ;
119
+
120
+ } ) ;
121
+
89
122
it ( 'should run a hook with success status' , function ( done ) {
90
- gitHooks . run ( PRECOMMIT_HOOK_PATH , [ ] , function ( code ) {
123
+ gitHooks . run ( PRECOMMIT_HOOK_PATH , [ ] , '' , function ( code ) {
91
124
code . should . equal ( 0 ) ;
92
- fs . readFileSync ( logFile ) . toString ( ) . should . equal ( 'Hello, world! \n ' ) ;
125
+ fs . readFileSync ( logFile ) . toString ( ) . trim ( ) . should . equal ( 'Hello, world!' ) ;
93
126
done ( ) ;
94
127
} ) ;
95
128
} ) ;
@@ -101,7 +134,7 @@ describe('git-hook runner', function () {
101
134
} ) ;
102
135
103
136
it ( 'should run a hook and return error' , function ( done ) {
104
- gitHooks . run ( PRECOMMIT_HOOK_PATH , [ ] , function ( code ) {
137
+ gitHooks . run ( PRECOMMIT_HOOK_PATH , [ ] , '' , function ( code ) {
105
138
code . should . equal ( 255 ) ;
106
139
done ( ) ;
107
140
} ) ;
@@ -119,7 +152,7 @@ describe('git-hook runner', function () {
119
152
} ) ;
120
153
121
154
it ( 'should ignore file with wrong permissions in hooks directory' , function ( done ) {
122
- gitHooks . run ( PRECOMMIT_HOOK_PATH , [ ] , function ( code ) {
155
+ gitHooks . run ( PRECOMMIT_HOOK_PATH , [ ] , '' , function ( code ) {
123
156
code . should . equal ( 0 ) ;
124
157
done ( ) ;
125
158
} ) ;
0 commit comments