Skip to content

Commit

Permalink
Merge grunt branch
Browse files Browse the repository at this point in the history
  • Loading branch information
eternicode committed Jan 31, 2014
2 parents ac68515 + b76eca1 commit da25869
Show file tree
Hide file tree
Showing 10 changed files with 130 additions and 225 deletions.
4 changes: 2 additions & 2 deletions .gitignore
@@ -1,3 +1,3 @@
instrumented/
tests/coverage.html
docs/_build
node_modules/
_build
4 changes: 2 additions & 2 deletions .hgignore
@@ -1,3 +1,3 @@
instrumented/
tests/coverage.html
docs/_build
node_modules/
_build/
12 changes: 4 additions & 8 deletions .travis.yml
@@ -1,9 +1,5 @@
install:
- npm install -g jshint jscs
language: node_js
node_js:
- "0.10"
before_script:
- cd ./tests
- echo "new Date().toString();" | phantomjs
script:
- jshint ../js/bootstrap-datepicker.js ../js/locales/*.js
- jscs -c ../.jscs.json ../js/bootstrap-datepicker.js ../js/locales/*.js
- phantomjs run-qunit.js tests.html
- npm install -g grunt-cli
93 changes: 93 additions & 0 deletions Gruntfile.js
@@ -0,0 +1,93 @@
/* global module, require */
module.exports = function(grunt){
require('load-grunt-tasks')(grunt);

grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
qunit: {
all: ['tests/tests.html']
},
jshint: {
options: {
jshintrc: true
},
gruntfile: ['Gruntfile.js'],
main: ['js/bootstrap-datepicker.js'],
locales: ['js/locales/*js']
},
jscs: {
/* grunt-contrib-jscs notes:
0.1.2 works
0.1.3 infinite loops on postinstall
0.1.4 doesn't seem to hit all targets when run via "grunt jscs"
*/
gruntfile: ['Gruntfile.js'],
main: ['js/bootstrap-datepicker.js'],
locales: ['js/locales/*js']
},
less: {
standalone: {
files: {
'_build/datepicker.standalone.css': 'build/build_standalone.less',
'_build/datepicker3.standalone.css': 'build/build_standalone3.less'
}
},
css: {
files: {
'_build/datepicker.css': 'build/build.less',
'_build/datepicker3.css': 'build/build3.less'
}
},
repo: {
files: {
'css/datepicker.css': 'build/build_standalone.less',
'css/datepicker3.css': 'build/build_standalone3.less'
}
}
},
uglify: {
options: {
compress: true,
mangle: true
},
main: {
options: {
sourceMap: function(dest){
return dest.replace('.min.js', '.js.map');
}
},
files: {
'_build/bootstrap-datepicker.min.js': 'js/bootstrap-datepicker.js',
'_build/bootstrap-datepicker.locales.min.js': 'js/locales/*.js'
}
},
locales: {
files: [{
expand: true,
cwd: 'js/locales/',
src: ['*.js', '!*.min.js'],
dest: '_build/locales/',
rename: function(dest, name){
return dest + name.replace(/\.js$/, '.min.js');
}
}]
}
},
cssmin: {
all: {
files: {
'_build/datepicker.standalone.min.css': '_build/datepicker.standalone.css',
'_build/datepicker.min.css': '_build/datepicker.css',
'_build/datepicker3.standalone.min.css': '_build/datepicker3.standalone.css',
'_build/datepicker3.min.css': '_build/datepicker3.css'
}
}
},
clean: ['_build']
});

grunt.registerTask('lint', 'Lint all js files with jshint and jscs', ['jshint', 'jscs']);
grunt.registerTask('test', 'Lint files and run unit tests', ['lint', 'qunit']);
grunt.registerTask('finish', 'Prepares repo for commit [test, less:repo]', ['test', 'less:repo']);
grunt.registerTask('dist', 'Builds minified files', ['less:css', 'less:standalone', 'cssmin', 'uglify']);
};
9 changes: 9 additions & 0 deletions README.md
Expand Up @@ -7,7 +7,16 @@ Please note that this fork is not used on Stefan's page, nor is it maintained or

Versions are incremented according to [semver](http://semver.org/).

## Links

* [Online Demo](http://eternicode.github.io/bootstrap-datepicker/)
* [Online Docs](http://bootstrap-datepicker.readthedocs.org/) (ReadTheDocs.com)
* [Google Group](https://groups.google.com/group/bootstrap-datepicker/)
* [Travis CI ![Build Status](https://travis-ci.org/eternicode/bootstrap-datepicker.png?branch=master)](https://travis-ci.org/eternicode/bootstrap-datepicker)

## Development

Once you cloned the repo, you'll need to install [grunt](http://gruntjs.com/) and the development dependencies using [npm](https://npmjs.org/).

npm install -g grunt-cli
npm install
16 changes: 16 additions & 0 deletions package.json
@@ -0,0 +1,16 @@
{
"scripts": {
"test": "grunt test"
},
"devDependencies": {
"grunt": "~0.4.2",
"load-grunt-tasks": "~0.2.1",
"grunt-contrib-jshint": "~0.8.0",
"grunt-contrib-jscs": "0.1.2",
"grunt-contrib-qunit": "~0.3.0",
"grunt-contrib-less": "~0.9.0",
"grunt-contrib-uglify": "~0.2.7",
"grunt-contrib-cssmin": "~0.7.0",
"grunt-contrib-clean": "~0.5.0"
}
}
33 changes: 4 additions & 29 deletions tests/README.md
Expand Up @@ -7,30 +7,11 @@ bugs when adding new features and making changes.
The simplest way to run the tests is to open `tests/tests.html` in your browser.
The test suites will automatically run themselves and present their results.

To run the tests from the command line, download and install
[PhantomJS](http://phantomjs.org/), and run `run-qunit.js` with it:
To run the tests from the command line (after running jshint and jscs, which is
recommended), install Grunt and run the `test` task from anywhere within the
repo:

$ cd tests/
$ phantomjs run-qunit.js tests.html

Failed tests and their failed assertions will be printed to the console. A
results summary will be printed at the end.

To generate coverage statistics, use [JSCoverage](http://siliconforks.com/jscoverage/)
to instrument the js files:

$ cd tests/
$ jscoverage ../js/ ../instrumented/
$ phantomjs run-qunit.js tests.html

Coverage percentage will be included in the output summary, and a highlighted
line-by-line html file will be generated.

# Shout-out

Thanks to Rod @ While One Fork for the
[CIS guide](http://whileonefork.blogspot.com/2011/10/integrating-javascript-tests-into-cli.html)
on putting the above together.
$ grunt test

# Adding tests

Expand All @@ -47,9 +28,3 @@ name and `<year>` is the four-digit year the tests pertain to.
In order for new tests to be run, they must be imported into `tests/tests.html`.
Find the script includes headed by the html comment `<!-- Test suites -->`, and
add a new one to the list which includes the new js files.

# Can I use this?

By all means, please do! Just note that I stopped working on this structure
once it fit my needs, there's no real support for it, and it may change in the
future. Otherwise, have at it.
26 changes: 0 additions & 26 deletions tests/_coverage.html

This file was deleted.

157 changes: 0 additions & 157 deletions tests/run-qunit.js

This file was deleted.

1 change: 0 additions & 1 deletion tests/tests.html
Expand Up @@ -4,7 +4,6 @@
<link rel="stylesheet" href="assets/qunit.css" />
<script src="assets/qunit.js"></script>
<script src="assets/qunit-logging.js"></script> <!-- console.log for test failures -->
<script src="assets/coverage.js"></script>
<script src="assets/jquery-1.7.1.min.js"></script>
<script src="../js/bootstrap-datepicker.js"></script>

Expand Down

0 comments on commit da25869

Please sign in to comment.