mirror of
https://github.com/twbs/bootstrap.git
synced 2025-03-15 15:29:22 +01:00
Merge branch '2.0.3-wip' of github.com:twitter/bootstrap into 2.0.3-wip
This commit is contained in:
commit
176e0b1169
1
.gitignore
vendored
1
.gitignore
vendored
@ -33,3 +33,4 @@ nbproject
|
|||||||
.svn
|
.svn
|
||||||
.CVS
|
.CVS
|
||||||
.idea
|
.idea
|
||||||
|
node_modules
|
||||||
|
3
.travis.yml
Normal file
3
.travis.yml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
language: node_js
|
||||||
|
node_js:
|
||||||
|
- 0.6
|
12
Makefile
12
Makefile
@ -5,6 +5,7 @@ BOOTSTRAP_RESPONSIVE_LESS = ./less/responsive.less
|
|||||||
DATE=$(shell date +%I:%M%p)
|
DATE=$(shell date +%I:%M%p)
|
||||||
CHECK=\033[32m✔\033[39m
|
CHECK=\033[32m✔\033[39m
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# BUILD DOCS
|
# BUILD DOCS
|
||||||
#
|
#
|
||||||
@ -36,6 +37,17 @@ build:
|
|||||||
@echo "Thanks for using Bootstrap,"
|
@echo "Thanks for using Bootstrap,"
|
||||||
@echo "<3 @mdo and @fat\n"
|
@echo "<3 @mdo and @fat\n"
|
||||||
|
|
||||||
|
#
|
||||||
|
# RUN JSHINT & QUNIT TESTS IN PHANTOMJS
|
||||||
|
#
|
||||||
|
|
||||||
|
test:
|
||||||
|
jshint js/*.js --config js/.jshintrc
|
||||||
|
jshint js/tests/unit/*.js --config js/.jshintrc
|
||||||
|
node js/tests/server.js &
|
||||||
|
phantomjs js/tests/phantom.js "http://localhost:3000/js/tests"
|
||||||
|
kill -9 `cat js/tests/pid.txt`
|
||||||
|
rm js/tests/pid.txt
|
||||||
|
|
||||||
#
|
#
|
||||||
# BUILD SIMPLE BOOTSTRAP DIRECTORY
|
# BUILD SIMPLE BOOTSTRAP DIRECTORY
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
[Twitter Bootstrap](http://twitter.github.com/bootstrap)
|
[Twitter Bootstrap](http://twitter.github.com/bootstrap) [](http://travis-ci.org/twitter/bootstrap)
|
||||||
=================
|
=================
|
||||||
|
|
||||||
Bootstrap provides simple and flexible HTML, CSS, and Javascript for popular user interface components and interactions. In other words, it's a front-end toolkit for faster, more beautiful web development. It's created and maintained by [Mark Otto](http://twitter.com/mdo) and [Jacob Thornton](http://twitter.com/fat) at Twitter.
|
Bootstrap provides simple and flexible HTML, CSS, and Javascript for popular user interface components and interactions. In other words, it's a front-end toolkit for faster, more beautiful web development. It's created and maintained by [Mark Otto](http://twitter.com/mdo) and [Jacob Thornton](http://twitter.com/fat) at Twitter.
|
||||||
@ -91,6 +91,9 @@ $ npm install recess uglify-js jshint -g
|
|||||||
+ **build** - `make`
|
+ **build** - `make`
|
||||||
Runs the recess compiler to rebuild the `/less` files and compiles the docs pages. Requires recess and uglify-js. <a href="http://twitter.github.com/bootstrap/less.html#compiling">Read more in our docs »</a>
|
Runs the recess compiler to rebuild the `/less` files and compiles the docs pages. Requires recess and uglify-js. <a href="http://twitter.github.com/bootstrap/less.html#compiling">Read more in our docs »</a>
|
||||||
|
|
||||||
|
+ **test** - `make test`
|
||||||
|
Runs jshint and qunit tests headlessly in phantom js (used for ci). Depends on having phatomjs installed.
|
||||||
|
|
||||||
+ **watch** - `make watch`
|
+ **watch** - `make watch`
|
||||||
This is a convenience method for watching just Less files and automatically building them whenever you save. Requires the Watchr gem.
|
This is a convenience method for watching just Less files and automatically building them whenever you save. Requires the Watchr gem.
|
||||||
|
|
||||||
|
@ -11,6 +11,9 @@
|
|||||||
<link rel="stylesheet" href="vendor/qunit.css" type="text/css" media="screen" />
|
<link rel="stylesheet" href="vendor/qunit.css" type="text/css" media="screen" />
|
||||||
<script src="vendor/qunit.js"></script>
|
<script src="vendor/qunit.js"></script>
|
||||||
|
|
||||||
|
<!-- phantomjs logging script-->
|
||||||
|
<script src="unit/bootstrap-phantom.js"></script>
|
||||||
|
|
||||||
<!-- plugin sources -->
|
<!-- plugin sources -->
|
||||||
<script src="../../js/bootstrap-transition.js"></script>
|
<script src="../../js/bootstrap-transition.js"></script>
|
||||||
<script src="../../js/bootstrap-alert.js"></script>
|
<script src="../../js/bootstrap-alert.js"></script>
|
||||||
|
63
js/tests/phantom.js
Normal file
63
js/tests/phantom.js
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
// Simple phantom.js integration script
|
||||||
|
// Adapted from Modernizr
|
||||||
|
|
||||||
|
function waitFor(testFx, onReady, timeOutMillis) {
|
||||||
|
var maxtimeOutMillis = timeOutMillis ? timeOutMillis : 3001 //< Default Max Timout is 3s
|
||||||
|
, start = new Date().getTime()
|
||||||
|
, condition = false
|
||||||
|
, interval = setInterval(function() {
|
||||||
|
if ((new Date().getTime() - start < maxtimeOutMillis) && !condition) {
|
||||||
|
// If not time-out yet and condition not yet fulfilled
|
||||||
|
condition = (typeof(testFx) === "string" ? eval(testFx) : testFx()) //< defensive code
|
||||||
|
} else {
|
||||||
|
if(!condition) {
|
||||||
|
// If condition still not fulfilled (timeout but condition is 'false')
|
||||||
|
console.log("'waitFor()' timeout")
|
||||||
|
phantom.exit(1)
|
||||||
|
} else {
|
||||||
|
// Condition fulfilled (timeout and/or condition is 'true')
|
||||||
|
typeof(onReady) === "string" ? eval(onReady) : onReady() //< Do what it's supposed to do once the condition is fulfilled
|
||||||
|
clearInterval(interval) //< Stop this interval
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, 100) //< repeat check every 100ms
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (phantom.args.length === 0 || phantom.args.length > 2) {
|
||||||
|
console.log('Usage: phantom.js URL')
|
||||||
|
phantom.exit()
|
||||||
|
}
|
||||||
|
|
||||||
|
var page = new WebPage()
|
||||||
|
|
||||||
|
// Route "console.log()" calls from within the Page context to the main Phantom context (i.e. current "this")
|
||||||
|
page.onConsoleMessage = function(msg) {
|
||||||
|
console.log(msg)
|
||||||
|
};
|
||||||
|
|
||||||
|
page.open(phantom.args[0], function(status){
|
||||||
|
if (status !== "success") {
|
||||||
|
console.log("Unable to access network")
|
||||||
|
phantom.exit()
|
||||||
|
} else {
|
||||||
|
waitFor(function(){
|
||||||
|
return page.evaluate(function(){
|
||||||
|
var el = document.getElementById('qunit-testresult')
|
||||||
|
if (el && el.innerText.match('completed')) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
})
|
||||||
|
}, function(){
|
||||||
|
var failedNum = page.evaluate(function(){
|
||||||
|
var el = document.getElementById('qunit-testresult')
|
||||||
|
try {
|
||||||
|
return el.getElementsByClassName('failed')[0].innerHTML
|
||||||
|
} catch (e) { }
|
||||||
|
return 10000
|
||||||
|
});
|
||||||
|
phantom.exit((parseInt(failedNum, 10) > 0) ? 1 : 0)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
18
js/tests/server.js
Normal file
18
js/tests/server.js
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Simple connect server for phantom.js
|
||||||
|
* Adapted from Modernizr
|
||||||
|
*/
|
||||||
|
|
||||||
|
var connect = require('connect')
|
||||||
|
, args = process.argv.slice(2)
|
||||||
|
, fs = require('fs')
|
||||||
|
, folder = '/../../'
|
||||||
|
, port = '3000'
|
||||||
|
|
||||||
|
var server = connect.createServer(
|
||||||
|
connect.static(__dirname + folder)
|
||||||
|
).listen(port)
|
||||||
|
|
||||||
|
fs.writeFileSync(__dirname + '/pid.txt', process.pid, 'utf-8')
|
||||||
|
|
||||||
|
console.log("Server started on port %s in %s", port, folder)
|
21
js/tests/unit/bootstrap-phantom.js
vendored
Normal file
21
js/tests/unit/bootstrap-phantom.js
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
// Logging setup for phantom integration
|
||||||
|
// adapted from Modernizr
|
||||||
|
|
||||||
|
QUnit.begin = function () {
|
||||||
|
console.log("Starting test suite")
|
||||||
|
console.log("================================================\n")
|
||||||
|
}
|
||||||
|
|
||||||
|
QUnit.moduleDone = function (opts) {
|
||||||
|
if (opts.failed === 0) {
|
||||||
|
console.log("\u2714 All tests passed in '" + opts.name + "' module")
|
||||||
|
} else {
|
||||||
|
console.log("\u2716 " + opts.failed + " tests failed in '" + opts.name + "' module")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QUnit.done = function (opts) {
|
||||||
|
console.log("\n================================================")
|
||||||
|
console.log("Tests completed in " + opts.runtime + " milliseconds")
|
||||||
|
console.log(opts.passed + " tests of " + opts.total + " passed, " + opts.failed + " failed.")
|
||||||
|
}
|
25
package.json
Normal file
25
package.json
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
"name": "bootstrap"
|
||||||
|
, "description": "HTML, CSS, and JS toolkit from Twitter."
|
||||||
|
, "version": "2.0.3"
|
||||||
|
, "keywords": ["bootstrap", "css"]
|
||||||
|
, "homepage": "http://twitter.github.com/bootstrap/"
|
||||||
|
, "author": "Twitter Inc."
|
||||||
|
, "scripts": { "test": "make test" }
|
||||||
|
, "repository": {
|
||||||
|
"type": "git"
|
||||||
|
, "url": "https://github.com/twitter/bootstrap.git"
|
||||||
|
}
|
||||||
|
, "licenses": [
|
||||||
|
{
|
||||||
|
"type": "Apache-2.0"
|
||||||
|
, "url": "http://www.apache.org/licenses/LICENSE-2.0"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
, "devDependencies": {
|
||||||
|
"uglify-js": "*"
|
||||||
|
, "jshint": "*"
|
||||||
|
, "recess": "*"
|
||||||
|
, "connect": "*"
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user