Clean up tests, resolve style differences, reduce upstream diff

This is in preparation for a PR, to reduce potential for merge conflicts
with either my PR or others', since mine will modify a large amount of
the main file.
This commit is contained in:
impinball 2015-07-23 05:24:48 -04:00
parent 565f9cf334
commit 3de01a1554
14 changed files with 1987 additions and 3578 deletions

View file

@ -1,14 +1,11 @@
/* eslint-env node */
module.exports = function(grunt) {
"use strict"
var _ = require("lodash");
var version = "0.4.0";
var _ = require("lodash")
var version = "0.4.0"
var inputFolder = "./docs"
var tempFolder = "./temp"
var archiveFolder = "./archive"
var outputFolder = "../mithril"
var inputFolder = "./docs";
var tempFolder = "./temp";
var archiveFolder = "./archive";
var outputFolder = "../mithril";
var guide = [
"auto-redrawing",
@ -25,7 +22,7 @@ module.exports = function(grunt) {
"routing",
"tools",
"web-services"
]
];
var api = [
"change-log",
"roadmap",
@ -45,68 +42,53 @@ module.exports = function(grunt) {
"mithril.trust",
"mithril.withAttr",
"mithril.xhr"
]
];
var md2htmlTasks = {}
var md2htmlTasks = {};
var makeTasks = function(layout, pages) {
pages.map(function(name) {
var src = inputFolder + "/" + name + ".md"
var title
if (grunt.file.exist(src)) {
title = grunt.file.read(src)
.split(/\n/)[0]
.substring(3) + " - "
} else {
title = ""
}
var src = inputFolder + "/" + name + ".md";
var title = (grunt.file.exists(src)) ? grunt.file.read(src).split(/\n/)[0].substring(3) + ' - ' : '';
md2htmlTasks[name] = {
options: {
layout: inputFolder + "/layout/" + layout + ".html",
templateData: { "topic": title }
},
options: {layout: inputFolder + "/layout/" + layout + ".html", templateData: { "topic": title }},
files: [{src: [src], dest: tempFolder + "/" + name + ".html"}]
}
})
}
makeTasks("guide", guide)
makeTasks("api", api)
};
makeTasks("guide", guide);
makeTasks("api", api);
var sauceBrowsers = [
{ browserName: "firefox", version: "19", platform: "XP" },
var sauceBrowsers =[
{ browserName: 'firefox', version: '19', platform: 'XP' },
{ browserName: "internet explorer", platform: "XP", version: "6"},
{ browserName: "safari", platform: "OS X 10.9", version: "7"},
{ browserName: "iPad", platform: "OS X 10.9", version: "7.1"},
{ browserName: "opera", platform: "Linux", version: "12"},
{ browserName: "chrome", platform: "XP", version: "26"},
{ browserName: "chrome", platform: "Windows 8", version: "26"}
]
];
var sauceOnTestComplete = function(result, callback) {
var request = require("request")
var request = require('request');
var user = process.env.SAUCE_USERNAME
var pass = process.env.SAUCE_ACCESS_KEY
var user = process.env.SAUCE_USERNAME;
var pass = process.env.SAUCE_ACCESS_KEY;
request.put({
url: [
"https://saucelabs.com/rest/v1",
user,
"jobs",
result.job_id
].join("/"),
url: ['https://saucelabs.com/rest/v1', user, 'jobs', result.job_id].join('/'),
auth: { user: user, pass: pass },
json: { passed: result.passed }
}, function (error, response) {
if (error) {
callback(error)
callback(error);
} else if (response.statusCode !== 200) {
callback(new Error("Unexpected response status: "
+ response.statusCode + "\n "))
callback(new Error('Unexpected response status: '
+ response.statusCode + "\n "));
} else {
callback(null, result.passed)
callback(null, result.passed);
}
})
}
});
};
var sauceBaseOptions = {
username: process.env.SAUCE_USERNAME,
@ -115,164 +97,74 @@ module.exports = function(grunt) {
browsers: sauceBrowsers,
sauceConfig: {
"record-video": false,
"record-screenshots": false
"record-screenshots": false,
},
build: process.env.TRAVIS_JOB_ID,
onTestComplete: sauceOnTestComplete,
tunnelTimeout: 5
}
tunnelTimeout: 5,
};
var sauceCustomOptions = {
testname: "Mithril Custom Tests " + new Date().toJSON(),
urls: ["http://127.0.0.1:8000/tests/index.html"]
}
_.assign(sauceCustomOptions, sauceBaseOptions)
testname: "Mithril Custom Tests "+ new Date().toJSON(),
urls: ["http://127.0.0.1:8000/tests/index.html"],
};
_.assign(sauceCustomOptions, sauceBaseOptions);
var sauceQunitOptions = {
testname: "qUnit Tests " + new Date().toJSON(),
urls: ["http://127.0.0.1:8000/tests/e2e/test.html"]
}
_.assign(sauceQunitOptions, sauceBaseOptions)
testname: "qUnit Tests "+ new Date().toJSON(),
urls: ["http://127.0.0.1:8000/tests/e2e/test.html"],
};
_.assign(sauceQunitOptions, sauceBaseOptions);
var currentVersionArchiveFolder = archiveFolder + "/v" + version
var currentVersionArchiveFolder = archiveFolder + "/v" + version;
grunt.initConfig({
md2html: md2htmlTasks,
uglify: {
options: {
banner: [[
"/*",
"Mithril v" + version,
"http://github.com/lhorie/mithril.js",
"(c) Leo Horie",
"License: MIT",
"*/"
].join("\n")],
sourceMap: true
},
options: {banner: "/*\nMithril v" + version + "\nhttp://github.com/lhorie/mithril.js\n(c) Leo Horie\nLicense: MIT\n*/", sourceMap: true},
mithril: {src: "mithril.js", dest: "mithril.min.js"}
},
concat: {
test: {
src: [
"mithril.js",
"./tests/test.js",
"./tests/mock.js",
"./tests/mithril-tests.js"
],
dest: currentVersionArchiveFolder + "/mithril-tests.js"
}
test: {src: ["mithril.js", "./tests/test.js", "./tests/mock.js", "./tests/mithril-tests.js"], dest: currentVersionArchiveFolder + "/mithril-tests.js"}
},
zip: {
distribution: {
cwd: currentVersionArchiveFolder + "/",
src: [
currentVersionArchiveFolder + "/mithril.min.js",
currentVersionArchiveFolder + "/mithril.min.js.map",
currentVersionArchiveFolder + "/mithril.js"
],
src: [currentVersionArchiveFolder + "/mithril.min.js", currentVersionArchiveFolder + "/mithril.min.js.map", currentVersionArchiveFolder + "/mithril.js"],
dest: currentVersionArchiveFolder + "/mithril.min.zip"
}
},
replace: {
options: {
force: true,
patterns: [
{match: /\.md/g, replacement: ".html"},
{match: /\$version/g, replacement: version}
]
},
links: {
expand: true,
flatten: true,
src: [tempFolder + "/**/*.html"],
dest: currentVersionArchiveFolder + "/"
},
index: {
src: inputFolder + "/layout/index.html",
dest: currentVersionArchiveFolder + "/index.html"
},
commonjs: {
expand: true,
flatten: true,
src: [inputFolder + "/layout/*.json"],
dest: currentVersionArchiveFolder
},
cdnjs: {
src: "deploy/cdnjs-package.json",
dest: "../cdnjs/ajax/libs/mithril/package.json"
}
options: {force: true, patterns: [{match: /\.md/g, replacement: ".html"}, {match: /\$version/g, replacement: version}]},
links: {expand: true, flatten: true, src: [tempFolder + "/**/*.html"], dest: currentVersionArchiveFolder + "/"},
index: {src: inputFolder + "/layout/index.html", dest: currentVersionArchiveFolder + "/index.html"},
commonjs: {expand: true, flatten: true, src: [inputFolder + "/layout/*.json"], dest: currentVersionArchiveFolder},
cdnjs: {src: "deploy/cdnjs-package.json", dest: "../cdnjs/ajax/libs/mithril/package.json"}
},
copy: {
style: {
src: inputFolder + "/layout/style.css",
dest: currentVersionArchiveFolder + "/style.css"
},
pages: {
src: inputFolder + "/layout/pages.json",
dest: currentVersionArchiveFolder + "/pages.json"
},
lib: {
expand: true,
cwd: inputFolder + "/layout/lib/",
src: "./**",
dest: currentVersionArchiveFolder + "/lib/"
},
tools: {
expand: true,
cwd: inputFolder + "/layout/tools/",
src: "./**",
dest: currentVersionArchiveFolder + "/tools/"
},
comparisons: {
expand: true,
cwd: inputFolder + "/layout/comparisons/",
src: "./**",
dest: currentVersionArchiveFolder + "/comparisons/"
},
unminified: {
src: "mithril.js",
dest: currentVersionArchiveFolder + "/mithril.js"
},
minified: {
src: "mithril.min.js",
dest: currentVersionArchiveFolder + "/mithril.min.js"
},
readme: {
src: "README.md",
dest: currentVersionArchiveFolder + "/README.md"
},
map: {
src: "mithril.min.js.map",
dest: currentVersionArchiveFolder + "/mithril.min.js.map"
},
typescript: {
src: "mithril.d.ts",
dest: currentVersionArchiveFolder + "/mithril.d.ts"
},
publish: {
expand: true,
cwd: currentVersionArchiveFolder,
src: "./**",
dest: outputFolder
},
archive: {
expand: true,
cwd: currentVersionArchiveFolder,
src: "./**",
dest: outputFolder + "/archive/v" + version
}
style: {src: inputFolder + "/layout/style.css", dest: currentVersionArchiveFolder + "/style.css"},
pages: {src: inputFolder + "/layout/pages.json", dest: currentVersionArchiveFolder + "/pages.json"},
lib: {expand: true, cwd: inputFolder + "/layout/lib/", src: "./**", dest: currentVersionArchiveFolder + "/lib/"},
tools: {expand: true, cwd: inputFolder + "/layout/tools/", src: "./**", dest: currentVersionArchiveFolder + "/tools/"},
comparisons: {expand: true, cwd: inputFolder + "/layout/comparisons/", src: "./**", dest: currentVersionArchiveFolder + "/comparisons/"},
unminified: {src: "mithril.js", dest: currentVersionArchiveFolder + "/mithril.js"},
minified: {src: "mithril.min.js", dest: currentVersionArchiveFolder + "/mithril.min.js"},
readme: {src: "README.md", dest: currentVersionArchiveFolder + "/README.md"},
map: {src: "mithril.min.js.map", dest: currentVersionArchiveFolder + "/mithril.min.js.map"},
typescript: {src: "mithril.d.ts", dest: currentVersionArchiveFolder + "/mithril.d.ts"},
publish: {expand: true, cwd: currentVersionArchiveFolder, src: "./**", dest: outputFolder},
archive: {expand: true, cwd: currentVersionArchiveFolder, src: "./**", dest: outputFolder + "/archive/v" + version},
},
execute: {
tests: {src: [currentVersionArchiveFolder + "/mithril-tests.js"]}
},
qunit: {
all: ["tests/e2e/**/*.html"]
all: ['tests/e2e/**/*.html']
},
"saucelabs-custom": {
all: {
all:{
options: sauceCustomOptions
}
},
"saucelabs-qunit": {
all: {
all:{
options: sauceQunitOptions
}
},
@ -282,7 +174,7 @@ module.exports = function(grunt) {
server: {
options: {
port: 8888,
base: "."
base: '.'
}
}
},
@ -294,45 +186,34 @@ module.exports = function(grunt) {
default: {
files: [{
expand: true,
src: ["mithril.js"],
cwd: ".",
dest: "."
src: ['mithril.js'],
cwd: '.',
dest: '.'
}]
}
},
eslint: {
target: [
"**/*.js",
"!node_modules/**",
"!**/*.min.js",
"!docs/layout/lib/**/*.js"
]
}
})
});
grunt.loadNpmTasks("grunt-contrib-clean")
grunt.loadNpmTasks("grunt-contrib-concat")
grunt.loadNpmTasks("grunt-contrib-copy")
grunt.loadNpmTasks("grunt-contrib-uglify")
grunt.loadNpmTasks("grunt-execute")
grunt.loadNpmTasks("grunt-md2html")
grunt.loadNpmTasks("grunt-replace")
grunt.loadNpmTasks("grunt-zip")
grunt.loadNpmTasks("grunt-contrib-qunit")
grunt.loadNpmTasks("grunt-contrib-connect")
grunt.loadNpmTasks("grunt-saucelabs")
grunt.loadNpmTasks("grunt-jsfmt")
grunt.loadNpmTasks("grunt-eslint")
grunt.loadNpmTasks("grunt-contrib-clean");
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks("grunt-contrib-copy");
grunt.loadNpmTasks("grunt-contrib-uglify");
grunt.loadNpmTasks('grunt-execute');
grunt.loadNpmTasks("grunt-md2html");
grunt.loadNpmTasks("grunt-replace");
grunt.loadNpmTasks('grunt-zip');
grunt.loadNpmTasks('grunt-contrib-qunit');
grunt.loadNpmTasks('grunt-contrib-connect');
grunt.loadNpmTasks('grunt-saucelabs');
grunt.loadNpmTasks('grunt-jsfmt');
grunt.registerTask("build", [
"test", "uglify", "zip", "md2html", "replace", "copy", "clean"])
grunt.registerTask("testall", ["test", "teste2e"])
grunt.registerTask("test", ["eslint", "concat", "execute"])
grunt.registerTask("teste2e", ["connect", "qunit"])
grunt.registerTask("default", ["build"])
grunt.registerTask("build", ["test", "uglify", "zip", "md2html", "replace", "copy", "clean"]);
grunt.registerTask("testall", ["test", "teste2e"]);
grunt.registerTask("test", ["concat", "execute"]);
grunt.registerTask('teste2e', ['connect', 'qunit']);
grunt.registerTask("default", ["build"]);
grunt.registerTask("sauce-qunit", ["connect", "saucelabs-qunit"])
grunt.registerTask("sauce-custom", ["connect", "saucelabs-custom"])
grunt.registerTask("sauce-all", [
"connect", "saucelabs-qunit", "saucelabs-custom"])
}
grunt.registerTask("sauce-qunit", ["connect", "saucelabs-qunit"]);
grunt.registerTask("sauce-custom", ["connect", "saucelabs-custom"]);
grunt.registerTask("sauce-all", ["connect", "saucelabs-qunit", "saucelabs-custom"]);
};