1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 | 'use strict';
|
10 |
|
11 | module.exports = function(grunt) {
|
12 |
|
13 |
|
14 | grunt.initConfig({
|
15 | jshint: {
|
16 | all: [
|
17 | 'Gruntfile.js',
|
18 | 'tasks/*.js',
|
19 | 'lib/*.js',
|
20 | '<%= nodeunit.tests %>',
|
21 | ],
|
22 | options: {
|
23 | jshintrc: '.jshintrc',
|
24 | },
|
25 | },
|
26 |
|
27 |
|
28 | clean: {
|
29 | tests: ['tmp'],
|
30 | },
|
31 |
|
32 | copy: {
|
33 | tests: {
|
34 | files: [
|
35 | {cwd: 'test/fixtures', src: '**', dest: 'tmp', expand: true}
|
36 | ]
|
37 | }
|
38 | },
|
39 |
|
40 |
|
41 | githooks: {
|
42 |
|
43 |
|
44 | 'dev': {
|
45 | 'pre-commit': 'jshint'
|
46 | },
|
47 |
|
48 |
|
49 |
|
50 | 'test.default': {
|
51 | options: {
|
52 | dest: 'tmp/default',
|
53 | },
|
54 | 'pre-commit': 'aTask'
|
55 | },
|
56 |
|
57 |
|
58 | 'test.multiple_tasks': {
|
59 | options: {
|
60 | dest: 'tmp/multiple_tasks',
|
61 | },
|
62 | 'pre-commit': 'aTask anotherTask'
|
63 | },
|
64 |
|
65 | 'test.multipleHooks': {
|
66 |
|
67 | options: {
|
68 | dest: 'tmp/multipleHooks'
|
69 | },
|
70 | 'pre-commit': 'aTask',
|
71 | 'commit-msg': 'anotherTask'
|
72 | },
|
73 |
|
74 |
|
75 | 'test.append': {
|
76 | options: {
|
77 | dest: 'tmp/append'
|
78 | },
|
79 | 'pre-commit': 'aTask'
|
80 | },
|
81 |
|
82 | 'test.customTemplate': {
|
83 | options: {
|
84 | dest: 'tmp/customTemplate',
|
85 | template: 'test/fixtures/custom-template.js.hb'
|
86 | },
|
87 | 'pre-commit': 'aTask'
|
88 | },
|
89 |
|
90 | 'test.insert': {
|
91 | options: {
|
92 | dest: 'tmp/insert',
|
93 | preventExit: true
|
94 | },
|
95 | 'pre-commit': 'aTask'
|
96 | },
|
97 |
|
98 | 'test.customHashbang': {
|
99 | options: {
|
100 | dest: 'tmp/customHashbang',
|
101 | hashbang: '#!/usr/bin/node'
|
102 | },
|
103 | 'pre-commit': 'aTask'
|
104 | },
|
105 |
|
106 | 'test.withArguments': {
|
107 | options: {
|
108 | dest: 'tmp/withArguments',
|
109 | args: "--test myargument"
|
110 | },
|
111 | 'pre-commit': 'aTask'
|
112 | },
|
113 |
|
114 | 'test.hookSpecificOptions': {
|
115 |
|
116 | options: {
|
117 | dest: 'tmp/hookSpecificOptions',
|
118 | hashbang: '#!/usr/bin/node'
|
119 | },
|
120 | 'pre-commit': {
|
121 | taskNames: 'aTask',
|
122 | template: 'test/fixtures/custom-template.js.hb'
|
123 | }
|
124 | },
|
125 |
|
126 | 'test.shellScript': {
|
127 |
|
128 | options: {
|
129 | dest: 'tmp/shellScript',
|
130 | hashbang: '#!/bin/sh',
|
131 | template: 'templates/shell.hb',
|
132 | startMarker: '## GRUNT-GITHOOKS START',
|
133 | endMarker: '## GRUNT-GITHOOKS END'
|
134 | },
|
135 | 'pre-commit':'jshint'
|
136 | },
|
137 |
|
138 |
|
139 |
|
140 | 'logs.defaultLogging': {
|
141 | options: {
|
142 | dest: 'tmp/defaultLogging',
|
143 | },
|
144 | 'pre-commit': 'aTask'
|
145 | },
|
146 |
|
147 |
|
148 | 'logs.warnIfNotValidHook': {
|
149 | options: {
|
150 | dest: 'tmp/warnIfNotValidHook',
|
151 | },
|
152 | 'definitelyNotTheNameOfAGitHook': 'jshint'
|
153 | },
|
154 |
|
155 |
|
156 |
|
157 | 'fails.noTaskNames': {
|
158 | options: {
|
159 | dest: 'tmp/noTaskNames'
|
160 | },
|
161 | 'pre-commit': {
|
162 | preventExit: true
|
163 | }
|
164 | },
|
165 |
|
166 | 'fails.invalidScriptingLanguage': {
|
167 | options: {
|
168 | dest: 'tmp/invalidScriptingLanguage',
|
169 | },
|
170 | 'pre-commit': 'jshint'
|
171 | },
|
172 |
|
173 | 'fails.customHashbangInvalidScriptingLanguage': {
|
174 | options: {
|
175 | dest: 'tmp/customHashbangInvalidScriptingLanguage',
|
176 | hashbang: '#!/usr/bin/node'
|
177 | },
|
178 | 'pre-commit': 'jshint'
|
179 | }
|
180 | },
|
181 |
|
182 |
|
183 | nodeunit: {
|
184 | tests: ['test/*_test.js'],
|
185 | },
|
186 |
|
187 | });
|
188 |
|
189 |
|
190 | grunt.loadTasks('tasks');
|
191 |
|
192 |
|
193 | grunt.loadNpmTasks('grunt-contrib-jshint');
|
194 | grunt.loadNpmTasks('grunt-contrib-clean');
|
195 | grunt.loadNpmTasks('grunt-contrib-copy');
|
196 | grunt.loadNpmTasks('grunt-contrib-nodeunit');
|
197 |
|
198 |
|
199 |
|
200 | grunt.registerTask('test', (function () {
|
201 |
|
202 | var tasks = [
|
203 | 'clean',
|
204 | 'copy'
|
205 | ];
|
206 |
|
207 | for (var target in grunt.config.data.githooks) {
|
208 | if(/^test\./.test(target)){
|
209 | tasks.push('githooks:'+target);
|
210 | }
|
211 | }
|
212 |
|
213 | tasks.push('nodeunit');
|
214 |
|
215 | return tasks;
|
216 | }()));
|
217 |
|
218 |
|
219 | grunt.registerTask('default', ['jshint', 'test']);
|
220 |
|
221 |
|
222 | grunt.registerTask('aTask', function () {});
|
223 | grunt.registerTask('anotherTask', function () {});
|
224 | };
|