Deployed the page to Github Pages.

This commit is contained in:
Batuhan Berk Başoğlu 2024-11-03 21:30:09 -05:00
parent 1d79754e93
commit 2c89899458
Signed by: batuhan-basoglu
SSH key fingerprint: SHA256:kEsnuHX+qbwhxSAXPUQ4ox535wFHu/hIRaa53FzxRpo
62797 changed files with 6551425 additions and 15279 deletions

230
node_modules/less/test/browser/common.js generated vendored Normal file
View file

@ -0,0 +1,230 @@
var logMessages = [];
window.less = window.less || {};
var logLevel_debug = 4,
logLevel_info = 3,
logLevel_warn = 2,
logLevel_error = 1;
// The amount of logging in the javascript console.
// 3 - Debug, information and errors
// 2 - Information and errors
// 1 - Errors
// 0 - None
// Defaults to 2
less.loggers = [
{
debug: function(msg) {
if (less.options.logLevel >= logLevel_debug) {
logMessages.push(msg);
}
},
info: function(msg) {
if (less.options.logLevel >= logLevel_info) {
logMessages.push(msg);
}
},
warn: function(msg) {
if (less.options.logLevel >= logLevel_warn) {
logMessages.push(msg);
}
},
error: function(msg) {
if (less.options.logLevel >= logLevel_error) {
logMessages.push(msg);
}
}
}
];
testLessEqualsInDocument = function () {
testLessInDocument(testSheet);
};
testLessErrorsInDocument = function (isConsole) {
testLessInDocument(isConsole ? testErrorSheetConsole : testErrorSheet);
};
testLessInDocument = function (testFunc) {
var links = document.getElementsByTagName('link'),
typePattern = /^text\/(x-)?less$/;
for (var i = 0; i < links.length; i++) {
if (links[i].rel === 'stylesheet/less' || (links[i].rel.match(/stylesheet/) &&
(links[i].type.match(typePattern)))) {
testFunc(links[i]);
}
}
};
ieFormat = function(text) {
var styleNode = document.createElement('style');
styleNode.setAttribute('type', 'text/css');
var headNode = document.getElementsByTagName('head')[0];
headNode.appendChild(styleNode);
try {
if (styleNode.styleSheet) {
styleNode.styleSheet.cssText = text;
} else {
styleNode.innerText = text;
}
} catch (e) {
throw new Error('Couldn\'t reassign styleSheet.cssText.');
}
var transformedText = styleNode.styleSheet ? styleNode.styleSheet.cssText : styleNode.innerText;
headNode.removeChild(styleNode);
return transformedText;
};
testSheet = function (sheet) {
it(sheet.id + ' should match the expected output', function (done) {
var lessOutputId = sheet.id.replace('original-', ''),
expectedOutputId = 'expected-' + lessOutputId,
lessOutputObj,
lessOutput,
expectedOutputHref = document.getElementById(expectedOutputId).href,
expectedOutput = loadFile(expectedOutputHref);
// Browser spec generates less on the fly, so we need to loose control
less.pageLoadFinished
.then(function () {
lessOutputObj = document.getElementById(lessOutputId);
lessOutput = lessOutputObj.styleSheet ? lessOutputObj.styleSheet.cssText :
(lessOutputObj.innerText || lessOutputObj.innerHTML);
expectedOutput
.then(function (text) {
if (window.navigator.userAgent.indexOf('MSIE') >= 0 ||
window.navigator.userAgent.indexOf('Trident/') >= 0) {
text = ieFormat(text);
}
expect(lessOutput).to.equal(text);
done();
})
.catch(function(err) {
done(err);
});
})
.catch(function(err) {
done(err);
});
});
};
// TODO: do it cleaner - the same way as in css
function extractId(href) {
return href.replace(/^[a-z-]+:\/+?[^\/]+/i, '') // Remove protocol & domain
.replace(/^\//, '') // Remove root /
.replace(/\.[a-zA-Z]+$/, '') // Remove simple extension
.replace(/[^\.\w-]+/g, '-') // Replace illegal characters
.replace(/\./g, ':'); // Replace dots with colons(for valid id)
}
waitFor = function (waitFunc) {
return new Promise(function (resolve) {
var timeoutId = setInterval(function () {
if (waitFunc()) {
clearInterval(timeoutId);
resolve();
}
}, 5);
});
};
testErrorSheet = function (sheet) {
it(sheet.id + ' should match an error', function (done) {
var lessHref = sheet.href,
id = 'less-error-message:' + extractId(lessHref),
errorHref = lessHref.replace(/.less$/, '.txt'),
errorFile = loadFile(errorHref),
actualErrorElement,
actualErrorMsg;
// Less.js sets 10ms timer in order to add error message on top of page.
waitFor(function () {
actualErrorElement = document.getElementById(id);
return actualErrorElement !== null;
}).then(function () {
var innerText = (actualErrorElement.innerHTML
.replace(/<h3>|<\/?p>|<a href="[^"]*">|<\/a>|<ul>|<\/?pre( class="?[^">]*"?)?>|<\/li>|<\/?label>/ig, '')
.replace(/<\/h3>/ig, ' ')
.replace(/<li>|<\/ul>|<br>/ig, '\n'))
.replace(/&amp;/ig, '&')
// for IE8
.replace(/\r\n/g, '\n')
.replace(/\. \nin/, '. in');
actualErrorMsg = innerText
.replace(/\n\d+/g, function (lineNo) {
return lineNo + ' ';
})
.replace(/\n\s*in /g, ' in ')
.replace(/\n{2,}/g, '\n')
.replace(/\nStack Trace\n[\s\S]*/i, '')
.replace(/\n$/, '')
.trim();
errorFile
.then(function (errorTxt) {
errorTxt = errorTxt
.replace(/\{path\}/g, '')
.replace(/\{pathrel\}/g, '')
.replace(/\{pathhref\}/g, 'http://localhost:8081/test/less/errors/')
.replace(/\{404status\}/g, ' (404)')
.replace(/\{node\}[\s\S]*\{\/node\}/g, '')
.replace(/\n$/, '')
.trim();
expect(actualErrorMsg).to.equal(errorTxt);
if (errorTxt == actualErrorMsg) {
actualErrorElement.style.display = 'none';
}
done();
})
.catch(function (err) {
done(err);
});
});
});
};
testErrorSheetConsole = function (sheet) {
it(sheet.id + ' should match an error', function (done) {
var lessHref = sheet.href,
id = sheet.id.replace(/^original-less:/, 'less-error-message:'),
errorHref = lessHref.replace(/.less$/, '.txt'),
errorFile = loadFile(errorHref),
actualErrorElement = document.getElementById(id),
actualErrorMsg = logMessages[logMessages.length - 1]
.replace(/\nStack Trace\n[\s\S]*/, '');
describe('the error', function () {
expect(actualErrorElement).to.be.null;
});
errorFile
.then(function (errorTxt) {
errorTxt
.replace(/\{path\}/g, '')
.replace(/\{pathrel\}/g, '')
.replace(/\{pathhref\}/g, 'http://localhost:8081/browser/less/')
.replace(/\{404status\}/g, ' (404)')
.replace(/\{node\}.*\{\/node\}/g, '')
.trim();
expect(actualErrorMsg).to.equal(errorTxt);
done();
});
});
};
loadFile = function (href) {
return new Promise(function (resolve, reject) {
var request = new XMLHttpRequest();
request.open('GET', href, true);
request.onreadystatechange = function () {
if (request.readyState == 4) {
resolve(request.responseText.replace(/\r/g, ''));
}
};
request.send(null);
});
};

View file

@ -0,0 +1,3 @@
.test {
color: red;
}

View file

@ -0,0 +1,8 @@
.testisimported {
color: gainsboro;
}
.test {
color1: green;
color2: purple;
scalar: 20;
}

3
node_modules/less/test/browser/css/plugin/plugin.css generated vendored Normal file
View file

@ -0,0 +1,3 @@
.test {
val: http://localhost:8081/tmp/browser/test-runner-browser.html;
}

View file

@ -0,0 +1,4 @@
hr {height:50px;}
.test {
color: white;
}

View file

@ -0,0 +1,36 @@
@import "http://localhost:8081/test/browser/less/imports/modify-this.css";
@import "http://localhost:8081/test/browser/less/imports/modify-again.css";
.modify {
my-url: url("http://localhost:8081/test/browser/less/imports/a.png");
}
.modify {
my-url: url("http://localhost:8081/test/browser/less/imports/b.png");
}
@font-face {
src: url("/fonts/garamond-pro.ttf");
src: local(Futura-Medium), url(http://localhost:8081/test/browser/less/relative-urls/fonts.svg#MyGeometricModern) format("svg");
}
#shorthands {
background: url("http://www.lesscss.org/spec.html") no-repeat 0 4px;
}
#misc {
background-image: url(http://localhost:8081/test/browser/less/relative-urls/images/image.jpg);
background: url("#inline-svg");
}
#data-uri {
background: url(data:image/png;charset=utf-8;base64,
kiVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD/
k//+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4U
kg9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC);
background-image: url(data:image/x-png,f9difSSFIIGFIFJD1f982FSDKAA9==);
background-image: url(http://fonts.googleapis.com/css?family=\"Rokkitt\":\(400\),700);
}
#svg-data-uri {
background: transparent url('data:image/svg+xml, <svg version="1.1"><g></g></svg>');
}
.comma-delimited {
background: url(http://localhost:8081/test/browser/less/relative-urls/bg.jpg) no-repeat, url(http://localhost:8081/test/browser/less/relative-urls/bg.png) repeat-x top left, url(http://localhost:8081/test/browser/less/relative-urls/bg);
}
.values {
url: url('http://localhost:8081/test/browser/less/relative-urls/Trebuchet');
}

View file

@ -0,0 +1,36 @@
@import "http://localhost:8081/test/browser/less/imports/modify-this.css";
@import "http://localhost:8081/test/browser/less/imports/modify-again.css";
.modify {
my-url: url("http://localhost:8081/test/browser/less/imports/a.png");
}
.modify {
my-url: url("http://localhost:8081/test/browser/less/imports/b.png");
}
@font-face {
src: url("/fonts/garamond-pro.ttf");
src: local(Futura-Medium), url(http://localhost:8081/test/browser/less/rewrite-urls/fonts.svg#MyGeometricModern) format("svg");
}
#shorthands {
background: url("http://www.lesscss.org/spec.html") no-repeat 0 4px;
}
#misc {
background-image: url(http://localhost:8081/test/browser/less/rewrite-urls/images/image.jpg);
background: url("#inline-svg");
}
#data-uri {
background: url(data:image/png;charset=utf-8;base64,
kiVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD/
k//+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4U
kg9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC);
background-image: url(data:image/x-png,f9difSSFIIGFIFJD1f982FSDKAA9==);
background-image: url(http://fonts.googleapis.com/css?family=\"Rokkitt\":\(400\),700);
}
#svg-data-uri {
background: transparent url('data:image/svg+xml, <svg version="1.1"><g></g></svg>');
}
.comma-delimited {
background: url(http://localhost:8081/test/browser/less/rewrite-urls/bg.jpg) no-repeat, url(http://localhost:8081/test/browser/less/rewrite-urls/bg.png) repeat-x top left, url(http://localhost:8081/test/browser/less/rewrite-urls/bg);
}
.values {
url: url('http://localhost:8081/test/browser/less/rewrite-urls/Trebuchet');
}

View file

@ -0,0 +1,35 @@
@import "https://www.github.com/cloudhead/imports/modify-this.css";
@import "https://www.github.com/cloudhead/imports/modify-again.css";
.modify {
my-url: url("https://www.github.com/cloudhead/imports/a.png");
}
.modify {
my-url: url("https://www.github.com/cloudhead/imports/b.png");
}
@font-face {
src: url("/fonts/garamond-pro.ttf");
src: local(Futura-Medium), url(https://www.github.com/cloudhead/less.js/fonts.svg#MyGeometricModern) format("svg");
}
#shorthands {
background: url("http://www.lesscss.org/spec.html") no-repeat 0 4px;
}
#misc {
background-image: url(https://www.github.com/cloudhead/less.js/images/image.jpg);
}
#data-uri {
background: url(data:image/png;charset=utf-8;base64,
kiVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD/
k//+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4U
kg9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC);
background-image: url(data:image/x-png,f9difSSFIIGFIFJD1f982FSDKAA9==);
background-image: url(http://fonts.googleapis.com/css?family=\"Rokkitt\":\(400\),700);
}
#svg-data-uri {
background: transparent url('data:image/svg+xml, <svg version="1.1"><g></g></svg>');
}
.comma-delimited {
background: url(https://www.github.com/cloudhead/less.js/bg.jpg) no-repeat, url(https://www.github.com/cloudhead/less.js/bg.png) repeat-x top left, url(https://www.github.com/cloudhead/less.js/bg);
}
.values {
url: url('https://www.github.com/cloudhead/less.js/Trebuchet');
}

View file

@ -0,0 +1,35 @@
@import "https://www.github.com/cloudhead/imports/modify-this.css";
@import "https://www.github.com/cloudhead/imports/modify-again.css";
.modify {
my-url: url("https://www.github.com/cloudhead/imports/a.png");
}
.modify {
my-url: url("https://www.github.com/cloudhead/imports/b.png");
}
@font-face {
src: url("/fonts/garamond-pro.ttf");
src: local(Futura-Medium), url(https://www.github.com/cloudhead/less.js/fonts.svg#MyGeometricModern) format("svg");
}
#shorthands {
background: url("http://www.lesscss.org/spec.html") no-repeat 0 4px;
}
#misc {
background-image: url(https://www.github.com/cloudhead/less.js/images/image.jpg);
}
#data-uri {
background: url(data:image/png;charset=utf-8;base64,
kiVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD/
k//+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4U
kg9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC);
background-image: url(data:image/x-png,f9difSSFIIGFIFJD1f982FSDKAA9==);
background-image: url(http://fonts.googleapis.com/css?family=\"Rokkitt\":\(400\),700);
}
#svg-data-uri {
background: transparent url('data:image/svg+xml, <svg version="1.1"><g></g></svg>');
}
.comma-delimited {
background: url(https://www.github.com/cloudhead/less.js/bg.jpg) no-repeat, url(https://www.github.com/cloudhead/less.js/bg.png) repeat-x top left, url(https://www.github.com/cloudhead/less.js/bg);
}
.values {
url: url('https://www.github.com/cloudhead/less.js/Trebuchet');
}

35
node_modules/less/test/browser/css/rootpath/urls.css generated vendored Normal file
View file

@ -0,0 +1,35 @@
@import "https://localhost/modify-this.css";
@import "https://localhost/modify-again.css";
.modify {
my-url: url("https://localhost/a.png");
}
.modify {
my-url: url("https://localhost/b.png");
}
@font-face {
src: url("/fonts/garamond-pro.ttf");
src: local(Futura-Medium), url(https://localhost/fonts.svg#MyGeometricModern) format("svg");
}
#shorthands {
background: url("http://www.lesscss.org/spec.html") no-repeat 0 4px;
}
#misc {
background-image: url(https://localhost/images/image.jpg);
}
#data-uri {
background: url(data:image/png;charset=utf-8;base64,
kiVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD/
k//+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4U
kg9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC);
background-image: url(data:image/x-png,f9difSSFIIGFIFJD1f982FSDKAA9==);
background-image: url(http://fonts.googleapis.com/css?family=\"Rokkitt\":\(400\),700);
}
#svg-data-uri {
background: transparent url('data:image/svg+xml, <svg version="1.1"><g></g></svg>');
}
.comma-delimited {
background: url(https://localhost/bg.jpg) no-repeat, url(https://localhost/bg.png) repeat-x top left, url(https://localhost/bg);
}
.values {
url: url('https://localhost/Trebuchet');
}

54
node_modules/less/test/browser/css/urls.css generated vendored Normal file
View file

@ -0,0 +1,54 @@
@import "http://localhost:8081/test/browser/less/modify-this.css";
@import "http://localhost:8081/test/browser/less/modify-again.css";
.modify {
my-url: url("http://localhost:8081/test/browser/less/a.png");
}
.modify {
my-url: url("http://localhost:8081/test/browser/less/b.png");
}
.gray-gradient {
background: url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201%201%22%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%25%22%20y1%3D%220%25%22%20x2%3D%220%25%22%20y2%3D%22100%25%22%3E%3Cstop%20offset%3D%220%25%22%20stop-color%3D%22%23999999%22%20stop-opacity%3D%220%22%2F%3E%3Cstop%20offset%3D%2260%25%22%20stop-color%3D%22%23999999%22%20stop-opacity%3D%220.05%22%2F%3E%3Cstop%20offset%3D%2270%25%22%20stop-color%3D%22%23999999%22%20stop-opacity%3D%220.1%22%2F%3E%3Cstop%20offset%3D%2273%25%22%20stop-color%3D%22%23999999%22%20stop-opacity%3D%220.15%22%2F%3E%3Cstop%20offset%3D%2275%25%22%20stop-color%3D%22%23999999%22%20stop-opacity%3D%220.2%22%2F%3E%3Cstop%20offset%3D%2280%25%22%20stop-color%3D%22%23999999%22%20stop-opacity%3D%220.25%22%2F%3E%3Cstop%20offset%3D%2285%25%22%20stop-color%3D%22%23999999%22%20stop-opacity%3D%220.3%22%2F%3E%3Cstop%20offset%3D%2288%25%22%20stop-color%3D%22%23999999%22%20stop-opacity%3D%220.35%22%2F%3E%3Cstop%20offset%3D%2290%25%22%20stop-color%3D%22%23999999%22%20stop-opacity%3D%220.4%22%2F%3E%3Cstop%20offset%3D%2295%25%22%20stop-color%3D%22%23999999%22%20stop-opacity%3D%220.45%22%2F%3E%3Cstop%20offset%3D%22100%25%22%20stop-color%3D%22%23999999%22%20stop-opacity%3D%220.5%22%2F%3E%3C%2FlinearGradient%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%221%22%20height%3D%221%22%20fill%3D%22url(%23g)%22%20%2F%3E%3C%2Fsvg%3E');
}
@font-face {
src: url("/fonts/garamond-pro.ttf");
src: local(Futura-Medium), url(http://localhost:8081/test/browser/less/fonts.svg#MyGeometricModern) format("svg");
not-a-comment: url(//z);
}
#shorthands {
background: url("http://www.lesscss.org/spec.html") no-repeat 0 4px;
}
#misc {
background-image: url(http://localhost:8081/test/browser/less/images/image.jpg);
}
#data-uri {
background: url(data:image/png;charset=utf-8;base64,
kiVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD/
k//+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4U
kg9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC);
background-image: url(data:image/x-png,f9difSSFIIGFIFJD1f982FSDKAA9==);
background-image: url(http://fonts.googleapis.com/css?family=\"Rokkitt\":\(400\),700);
}
#svg-data-uri {
background: transparent url('data:image/svg+xml, <svg version="1.1"><g></g></svg>');
}
.comma-delimited {
background: url(http://localhost:8081/test/browser/less/bg.jpg) no-repeat, url(http://localhost:8081/test/browser/less/bg.png) repeat-x top left, url(http://localhost:8081/test/browser/less/bg);
}
.values {
url: url('http://localhost:8081/test/browser/less/Trebuchet');
}
#data-uri {
uri: url('http://localhost:8081/test/data/image.jpg');
}
#data-uri-guess {
uri: url('http://localhost:8081/test/data/image.jpg');
}
#data-uri-ascii {
uri-1: url('http://localhost:8081/test/data/page.html');
uri-2: url('http://localhost:8081/test/data/page.html');
}
#svg-functions {
background-image: url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201%201%22%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%25%22%20y1%3D%220%25%22%20x2%3D%220%25%22%20y2%3D%22100%25%22%3E%3Cstop%20offset%3D%220%25%22%20stop-color%3D%22%23000000%22%2F%3E%3Cstop%20offset%3D%22100%25%22%20stop-color%3D%22%23ffffff%22%2F%3E%3C%2FlinearGradient%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%221%22%20height%3D%221%22%20fill%3D%22url(%23g)%22%20%2F%3E%3C%2Fsvg%3E');
background-image: url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201%201%22%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%25%22%20y1%3D%220%25%22%20x2%3D%220%25%22%20y2%3D%22100%25%22%3E%3Cstop%20offset%3D%220%25%22%20stop-color%3D%22%23000000%22%2F%3E%3Cstop%20offset%3D%223%25%22%20stop-color%3D%22%23ffa500%22%2F%3E%3Cstop%20offset%3D%22100%25%22%20stop-color%3D%22%23ffffff%22%2F%3E%3C%2FlinearGradient%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%221%22%20height%3D%221%22%20fill%3D%22url(%23g)%22%20%2F%3E%3C%2Fsvg%3E');
background-image: url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201%201%22%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%25%22%20y1%3D%220%25%22%20x2%3D%220%25%22%20y2%3D%22100%25%22%3E%3Cstop%20offset%3D%221%25%22%20stop-color%3D%22%23c4c4c4%22%2F%3E%3Cstop%20offset%3D%223%25%22%20stop-color%3D%22%23ffa500%22%2F%3E%3Cstop%20offset%3D%225%25%22%20stop-color%3D%22%23008000%22%2F%3E%3Cstop%20offset%3D%2295%25%22%20stop-color%3D%22%23ffffff%22%2F%3E%3C%2FlinearGradient%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%221%22%20height%3D%221%22%20fill%3D%22url(%23g)%22%20%2F%3E%3C%2Fsvg%3E');
}

View file

@ -0,0 +1,50 @@
module.exports = {
current: {
// src is used to build list of less files to compile
src: [
'benchmark/benchmark.less'
],
options: {
helpers: 'benchmark/browseroptions.js',
specs: 'benchmark/browserspec.js',
outfile: 'tmp/browser/test-runner-benchmark-current.html'
}
},
v3_10_3: {
// src is used to build list of less files to compile
src: [
'benchmark/benchmark.less'
],
options: {
helpers: 'benchmark/browseroptions.js',
specs: 'benchmark/browserspec.js',
outfile: 'tmp/browser/test-runner-benchmark-v3_10_3.html',
less: 'https://cdnjs.cloudflare.com/ajax/libs/less.js/3.10.3/less.min.js'
}
},
v3_9_0: {
// src is used to build list of less files to compile
src: [
'benchmark/benchmark.less'
],
options: {
helpers: 'benchmark/browseroptions.js',
specs: 'benchmark/browserspec.js',
outfile: 'tmp/browser/test-runner-benchmark-v3_9_0.html',
less: 'https://cdnjs.cloudflare.com/ajax/libs/less.js/3.9.0/less.min.js'
}
},
v2_7_3: {
// src is used to build list of less files to compile
src: [
'benchmark/benchmark.less'
],
options: {
helpers: 'benchmark/browseroptions.js',
specs: 'benchmark/browserspec.js',
outfile: 'tmp/browser/test-runner-benchmark-v2_7_3.html',
less: 'https://cdnjs.cloudflare.com/ajax/libs/less.js/2.7.3/less.min.js'
}
}
}

78
node_modules/less/test/browser/generator/generate.js generated vendored Normal file
View file

@ -0,0 +1,78 @@
const template = require('./template')
let config
const fs = require('fs-extra')
const path = require('path')
const globby = require('globby')
const { runner } = require('mocha-headless-chrome')
if (process.argv[2]) {
config = require(`./${process.argv[2]}.config`)
} else {
config = require('./runner.config')
}
/**
* Generate templates and run tests
*/
const tests = []
const cwd = process.cwd()
const tmpDir = path.join(cwd, 'tmp', 'browser')
fs.ensureDirSync(tmpDir)
fs.copySync(path.join(cwd, 'test', 'browser', 'common.js'), path.join(tmpDir, 'common.js'))
let numTests = 0
let passedTests = 0
let failedTests = 0
/** Will run the runners in a series */
function runSerial(tasks) {
var result = Promise.resolve()
start = Date.now()
tasks.forEach(task => {
result = result.then(result => {
if (result && result.result && result.result.stats) {
const stats = result.result.stats
numTests += stats.tests
passedTests += stats.passes
failedTests += stats.failures
}
return task()
}, err => {
console.log(err)
failedTests += 1
})
})
return result
}
Object.entries(config).forEach(entry => {
const test = entry[1]
const paths = globby.sync(test.src)
const templateString = template(paths, test.options.helpers, test.options.specs)
fs.writeFileSync(path.join(cwd, test.options.outfile), templateString)
tests.push(() => {
const file = 'http://localhost:8081/' + test.options.outfile
console.log(file)
return runner({
file,
timeout: 3500,
args: ['disable-web-security']
})
})
})
module.exports = () => runSerial(tests).then(() => {
if (failedTests > 0) {
process.stderr.write(failedTests + ' Failed, ' + passedTests + ' passed\n');
} else {
process.stdout.write('All Passed ' + passedTests + ' run\n');
}
if (failedTests) {
process.on('exit', function() { process.reallyExit(1); });
}
process.exit()
}, err => {
process.stderr.write(err.message);
process.exit()
})

View file

@ -0,0 +1,186 @@
var path = require('path');
var resolve = require('resolve')
var rootFolder = path.resolve(__dirname, '../../../');
var testFolder = path.relative(rootFolder, path.dirname(resolve.sync('@less/test-data')))
var lessFolder = path.join(testFolder, 'less');
module.exports = {
main: {
// src is used to build list of less files to compile
src: [
`${lessFolder}/_main/*.less`,
`!${lessFolder}/_main/plugin-preeval.less`, // uses ES6 syntax
// Don't test NPM import, obviously
`!${lessFolder}/_main/plugin-module.less`,
`!${lessFolder}/_main/import-module.less`,
`!${lessFolder}/_main/javascript.less`,
`!${lessFolder}/_main/urls.less`,
`!${lessFolder}/_main/empty.less`
],
options: {
helpers: 'test/browser/runner-main-options.js',
specs: 'test/browser/runner-main-spec.js',
outfile: 'tmp/browser/test-runner-main.html'
}
},
legacy: {
src: [`${lessFolder}/legacy/*.less`],
options: {
helpers: 'test/browser/runner-legacy-options.js',
specs: 'test/browser/runner-legacy-spec.js',
outfile: 'tmp/browser/test-runner-legacy.html'
}
},
strictUnits: {
src: [`${lessFolder}/strict-units/*.less`],
options: {
helpers: 'test/browser/runner-strict-units-options.js',
specs: 'test/browser/runner-strict-units-spec.js',
outfile: 'tmp/browser/test-runner-strict-units.html'
}
},
errors: {
src: [
`${lessFolder}/errors/*.less`,
`${testFolder}/errors/javascript-error.less`,
'test/browser/less/errors/*.less'
],
options: {
timeout: 20000,
helpers: 'test/browser/runner-errors-options.js',
specs: 'test/browser/runner-errors-spec.js',
outfile: 'tmp/browser/test-runner-errors.html'
}
},
noJsErrors: {
src: [`${lessFolder}/no-js-errors/*.less`],
options: {
helpers: 'test/browser/runner-no-js-errors-options.js',
specs: 'test/browser/runner-no-js-errors-spec.js',
outfile: 'tmp/browser/test-runner-no-js-errors.html'
}
},
browser: {
src: [
'test/browser/less/*.less',
'test/browser/less/plugin/*.less'
],
options: {
helpers: 'test/browser/runner-browser-options.js',
specs: 'test/browser/runner-browser-spec.js',
outfile: 'tmp/browser/test-runner-browser.html'
}
},
relativeUrls: {
src: ['test/browser/less/relative-urls/*.less'],
options: {
helpers: 'test/browser/runner-relative-urls-options.js',
specs: 'test/browser/runner-relative-urls-spec.js',
outfile: 'tmp/browser/test-runner-relative-urls.html'
}
},
rewriteUrls: {
src: ['test/browser/less/rewrite-urls/*.less'],
options: {
helpers: 'test/browser/runner-rewrite-urls-options.js',
specs: 'test/browser/runner-rewrite-urls-spec.js',
outfile: 'tmp/browser/test-runner-rewrite-urls.html'
}
},
rootpath: {
src: ['test/browser/less/rootpath/*.less'],
options: {
helpers: 'test/browser/runner-rootpath-options.js',
specs: 'test/browser/runner-rootpath-spec.js',
outfile: 'tmp/browser/test-runner-rootpath.html'
}
},
rootpathRelative: {
src: ['test/browser/less/rootpath-relative/*.less'],
options: {
helpers: 'test/browser/runner-rootpath-relative-options.js',
specs: 'test/browser/runner-rootpath-relative-spec.js',
outfile: 'tmp/browser/test-runner-rootpath-relative.html'
}
},
rootpathRewriteUrls: {
src: ['test/browser/less/rootpath-rewrite-urls/*.less'],
options: {
helpers:
'test/browser/runner-rootpath-rewrite-urls-options.js',
specs: 'test/browser/runner-rootpath-rewrite-urls-spec.js',
outfile:
'tmp/browser/test-runner-rootpath-rewrite-urls.html'
}
},
production: {
src: ['test/browser/less/production/*.less'],
options: {
helpers: 'test/browser/runner-production-options.js',
specs: 'test/browser/runner-production-spec.js',
outfile: 'tmp/browser/test-runner-production.html'
}
},
modifyVars: {
src: ['test/browser/less/modify-vars/*.less'],
options: {
helpers: 'test/browser/runner-modify-vars-options.js',
specs: 'test/browser/runner-modify-vars-spec.js',
outfile: 'tmp/browser/test-runner-modify-vars.html'
}
},
globalVars: {
src: ['test/browser/less/global-vars/*.less'],
options: {
helpers: 'test/browser/runner-global-vars-options.js',
specs: 'test/browser/runner-global-vars-spec.js',
outfile: 'tmp/browser/test-runner-global-vars.html'
}
},
postProcessorPlugin: {
src: [`${lessFolder}/postProcessorPlugin/*.less`],
options: {
helpers: [
'test/plugins/postprocess/index.js',
'test/browser/runner-postProcessorPlugin-options.js'
],
specs: 'test/browser/runner-postProcessorPlugin.js',
outfile:
'tmp/browser/test-runner-post-processor-plugin.html'
}
},
preProcessorPlugin: {
src: [`${lessFolder}/preProcessorPlugin/*.less`],
options: {
helpers: [
'test/plugins/preprocess/index.js',
'test/browser/runner-preProcessorPlugin-options.js'
],
specs: 'test/browser/runner-preProcessorPlugin.js',
outfile: 'tmp/browser/test-runner-pre-processor-plugin.html'
}
},
visitorPlugin: {
src: [`${lessFolder}/visitorPlugin/*.less`],
options: {
helpers: [
'test/plugins/visitor/index.js',
'test/browser/runner-VisitorPlugin-options.js'
],
specs: 'test/browser/runner-VisitorPlugin.js',
outfile: 'tmp/browser/test-runner-visitor-plugin.html'
}
},
filemanagerPlugin: {
src: [`${lessFolder}/filemanagerPlugin/*.less`],
options: {
helpers: [
'test/plugins/filemanager/index.js',
'test/browser/runner-filemanagerPlugin-options.js'
],
specs: 'test/browser/runner-filemanagerPlugin.js',
outfile: 'tmp/browser/test-runner-filemanager-plugin.html'
}
}
}

2
node_modules/less/test/browser/generator/runner.js generated vendored Normal file
View file

@ -0,0 +1,2 @@
const runner = require('./generate')
runner()

83
node_modules/less/test/browser/generator/template.js generated vendored Normal file
View file

@ -0,0 +1,83 @@
const html = require('html-template-tag')
/**
* Generates HTML templates from list of test sheets
*/
module.exports = (stylesheets, helpers, spec, less) => {
if (!Array.isArray(helpers)) {
helpers = [helpers]
}
return html`
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Less.js Spec Runner</title>
<!-- for each test, generate CSS/LESS link tags -->
$${stylesheets.map(function(fullLessName) {
var pathParts = fullLessName.split('/');
var fullCssName = fullLessName.replace(/\/less\//g, '/css/').replace(/less$/, 'css')
var lessName = pathParts[pathParts.length - 1];
var name = lessName.split('.')[0];
return `
<!-- the tags to be generated -->
<link id="original-less:test-less-${name}" title="test-less-${name}" rel="stylesheet/less" type="text/css" href="../../${fullLessName}">
<link id="expected-less:test-less-${name}" rel="stylesheet" type="text/css" href="../../${fullCssName}">
` }).join('')}
$${helpers.map(helper => `
<script src="../../${helper}"></script>
`).join('')}
<link rel="stylesheet" href="../../node_modules/mocha/mocha.css">
</head>
<body>
<!-- content -->
<div id="mocha"></div>
<script src="../../node_modules/mocha/mocha.js"></script>
<script src="../../node_modules/mocha-teamcity-reporter/lib/teamcityBrowser.js"></script>
<script src="../../node_modules/chai/chai.js"></script>
<script>
expect = chai.expect
mocha.setup({
ui: 'bdd',
timeout: 2500
});
</script>
<script src="common.js"></script>
<script src="../../${spec}"></script>
<script src="${less || 'less.min.js'}"></script>
<script>
/** Saucelabs config */
onload = function() {
var runner = mocha.run();
var failedTests = [];
runner.on('end', function() {
window.mochaResults = runner.stats;
window.mochaResults.reports = failedTests;
});
runner.on('fail', logFailure);
function logFailure(test, err){
var flattenTitles = function(test){
var titles = [];
while (test.parent.title) {
titles.push(test.parent.title);
test = test.parent;
}
return titles.reverse();
};
failedTests.push({name: test.title, result: false, message: err.message, stack: err.stack, titles: flattenTitles(test) });
};
};
</script>
</body>
</html>
`
}

View file

@ -0,0 +1,3 @@
.a {
prop: (3 / #fff);
}

View file

@ -0,0 +1,2 @@
less: OperationError: Can't subtract or divide a color from a number in {pathhref}console-errors/test-error.less on line null, column 0:
1 prop: (3 / #fff);

View file

@ -0,0 +1,3 @@
.test-height{
height: image-height("../data/image.jpg")
}

View file

@ -0,0 +1,4 @@
RuntimeError: Error evaluating function `image-height`: Image size functions are not supported in browser version of less in image-height-error.less on line 2, column 11:
1 .test-height{
2 height: image-height("../data/image.jpg")
3 }

View file

@ -0,0 +1,3 @@
.test-size{
size: image-size("../data/image.jpg")
}

View file

@ -0,0 +1,4 @@
RuntimeError: Error evaluating function `image-size`: Image size functions are not supported in browser version of less in image-size-error.less on line 2, column 9:
1 .test-size{
2 size: image-size("../data/image.jpg")
3 }

View file

@ -0,0 +1,3 @@
.test-width{
width: image-width("../data/image.jpg")
}

View file

@ -0,0 +1,4 @@
RuntimeError: Error evaluating function `image-width`: Image size functions are not supported in browser version of less in image-width-error.less on line 2, column 10:
1 .test-width{
2 width: image-width("../data/image.jpg")
3 }

View file

@ -0,0 +1,3 @@
.test {
color: @global-var;
}

View file

@ -0,0 +1,4 @@
@import "modify-this.css";
.modify {
my-url: url("a.png");
}

View file

@ -0,0 +1,4 @@
@import "modify-again.css";
.modify {
my-url: url("b.png");
}

View file

@ -0,0 +1,4 @@
@var2: blue;
.testisimported {
color: gainsboro;
}

View file

@ -0,0 +1,8 @@
@import "imports/simple2";
@var1: red;
@scale: 10;
.test {
color1: @var1;
color2: @var2;
scalar: @scale
}

View file

@ -0,0 +1,5 @@
@import "svg-gradient-mixin.less";
.gray-gradient {
.gradient-mixin(#999);
}

View file

@ -0,0 +1,15 @@
.gradient-mixin(@color) {
background: svg-gradient(to bottom,
fade(@color, 0%) 0%,
fade(@color, 5%) 60%,
fade(@color, 10%) 70%,
fade(@color, 15%) 73%,
fade(@color, 20%) 75%,
fade(@color, 25%) 80%,
fade(@color, 30%) 85%,
fade(@color, 35%) 88%,
fade(@color, 40%) 90%,
fade(@color, 45%) 95%,
fade(@color, 50%) 100%
);
}

4
node_modules/less/test/browser/less/plugin/plugin.js generated vendored Normal file
View file

@ -0,0 +1,4 @@
functions.add('func', function() {
return less.anonymous(location.href);
});

View file

@ -0,0 +1,4 @@
@plugin "plugin";
.test {
val: func();
}

View file

@ -0,0 +1,4 @@
@color: white;
.test {
color: @color;
}

View file

@ -0,0 +1,34 @@
@import ".././imports/urls.less";
@import "http://localhost:8081/test/browser/less/imports/urls2.less";
@font-face {
src: url("/fonts/garamond-pro.ttf");
src: local(Futura-Medium),
url(fonts.svg#MyGeometricModern) format("svg");
}
#shorthands {
background: url("http://www.lesscss.org/spec.html") no-repeat 0 4px;
}
#misc {
background-image: url(images/image.jpg);
background: url("#inline-svg");
}
#data-uri {
background: url(data:image/png;charset=utf-8;base64,
kiVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD/
k//+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4U
kg9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC);
background-image: url(data:image/x-png,f9difSSFIIGFIFJD1f982FSDKAA9==);
background-image: url(http://fonts.googleapis.com/css?family=\"Rokkitt\":\(400\),700);
}
#svg-data-uri {
background: transparent url('data:image/svg+xml, <svg version="1.1"><g></g></svg>');
}
.comma-delimited {
background: url(bg.jpg) no-repeat, url(bg.png) repeat-x top left, url(bg);
}
.values {
@a: 'Trebuchet';
url: url(@a);
}

View file

@ -0,0 +1,34 @@
@import ".././imports/urls.less";
@import "http://localhost:8081/test/browser/less/imports/urls2.less";
@font-face {
src: url("/fonts/garamond-pro.ttf");
src: local(Futura-Medium),
url(fonts.svg#MyGeometricModern) format("svg");
}
#shorthands {
background: url("http://www.lesscss.org/spec.html") no-repeat 0 4px;
}
#misc {
background-image: url(images/image.jpg);
background: url("#inline-svg");
}
#data-uri {
background: url(data:image/png;charset=utf-8;base64,
kiVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD/
k//+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4U
kg9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC);
background-image: url(data:image/x-png,f9difSSFIIGFIFJD1f982FSDKAA9==);
background-image: url(http://fonts.googleapis.com/css?family=\"Rokkitt\":\(400\),700);
}
#svg-data-uri {
background: transparent url('data:image/svg+xml, <svg version="1.1"><g></g></svg>');
}
.comma-delimited {
background: url(bg.jpg) no-repeat, url(bg.png) repeat-x top left, url(bg);
}
.values {
@a: 'Trebuchet';
url: url(@a);
}

View file

@ -0,0 +1,33 @@
@import "../imports/urls.less";
@import "http://localhost:8081/test/browser/less/imports/urls2.less";
@font-face {
src: url("/fonts/garamond-pro.ttf");
src: local(Futura-Medium),
url(fonts.svg#MyGeometricModern) format("svg");
}
#shorthands {
background: url("http://www.lesscss.org/spec.html") no-repeat 0 4px;
}
#misc {
background-image: url(images/image.jpg);
}
#data-uri {
background: url(data:image/png;charset=utf-8;base64,
kiVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD/
k//+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4U
kg9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC);
background-image: url(data:image/x-png,f9difSSFIIGFIFJD1f982FSDKAA9==);
background-image: url(http://fonts.googleapis.com/css?family=\"Rokkitt\":\(400\),700);
}
#svg-data-uri {
background: transparent url('data:image/svg+xml, <svg version="1.1"><g></g></svg>');
}
.comma-delimited {
background: url(bg.jpg) no-repeat, url(bg.png) repeat-x top left, url(bg);
}
.values {
@a: 'Trebuchet';
url: url(@a);
}

View file

@ -0,0 +1,33 @@
@import "../imports/urls.less";
@import "http://localhost:8081/test/browser/less/imports/urls2.less";
@font-face {
src: url("/fonts/garamond-pro.ttf");
src: local(Futura-Medium),
url(fonts.svg#MyGeometricModern) format("svg");
}
#shorthands {
background: url("http://www.lesscss.org/spec.html") no-repeat 0 4px;
}
#misc {
background-image: url(images/image.jpg);
}
#data-uri {
background: url(data:image/png;charset=utf-8;base64,
kiVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD/
k//+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4U
kg9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC);
background-image: url(data:image/x-png,f9difSSFIIGFIFJD1f982FSDKAA9==);
background-image: url(http://fonts.googleapis.com/css?family=\"Rokkitt\":\(400\),700);
}
#svg-data-uri {
background: transparent url('data:image/svg+xml, <svg version="1.1"><g></g></svg>');
}
.comma-delimited {
background: url(bg.jpg) no-repeat, url(bg.png) repeat-x top left, url(bg);
}
.values {
@a: 'Trebuchet';
url: url(@a);
}

33
node_modules/less/test/browser/less/rootpath/urls.less generated vendored Normal file
View file

@ -0,0 +1,33 @@
@import "../imports/urls.less";
@import "http://localhost:8081/test/browser/less/imports/urls2.less";
@font-face {
src: url("/fonts/garamond-pro.ttf");
src: local(Futura-Medium),
url(fonts.svg#MyGeometricModern) format("svg");
}
#shorthands {
background: url("http://www.lesscss.org/spec.html") no-repeat 0 4px;
}
#misc {
background-image: url(images/image.jpg);
}
#data-uri {
background: url(data:image/png;charset=utf-8;base64,
kiVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD/
k//+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4U
kg9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC);
background-image: url(data:image/x-png,f9difSSFIIGFIFJD1f982FSDKAA9==);
background-image: url(http://fonts.googleapis.com/css?family=\"Rokkitt\":\(400\),700);
}
#svg-data-uri {
background: transparent url('data:image/svg+xml, <svg version="1.1"><g></g></svg>');
}
.comma-delimited {
background: url(bg.jpg) no-repeat, url(bg.png) repeat-x top left, url(bg);
}
.values {
@a: 'Trebuchet';
url: url(@a);
}

62
node_modules/less/test/browser/less/urls.less generated vendored Normal file
View file

@ -0,0 +1,62 @@
@import "imports/urls.less";
@import "http://localhost:8081/test/browser/less/imports/urls2.less";
@import "http://localhost:8081/test/browser/less/nested-gradient-with-svg-gradient/mixin-consumer.less";
@font-face {
src: url("/fonts/garamond-pro.ttf");
src: local(Futura-Medium),
url(fonts.svg#MyGeometricModern) format("svg");
not-a-comment: url(//z);
}
#shorthands {
background: url("http://www.lesscss.org/spec.html") no-repeat 0 4px;
}
#misc {
background-image: url(images/image.jpg);
}
#data-uri {
background: url(data:image/png;charset=utf-8;base64,
kiVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD/
k//+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4U
kg9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC);
background-image: url(data:image/x-png,f9difSSFIIGFIFJD1f982FSDKAA9==);
background-image: url(http://fonts.googleapis.com/css?family=\"Rokkitt\":\(400\),700);
}
#svg-data-uri {
background: transparent url('data:image/svg+xml, <svg version="1.1"><g></g></svg>');
}
.comma-delimited {
background: url(bg.jpg) no-repeat, url(bg.png) repeat-x top left, url(bg);
}
.values {
@a: 'Trebuchet';
url: url(@a);
}
#data-uri {
uri: data-uri('image/jpeg;base64', '../../data/image.jpg');
}
#data-uri-guess {
uri: data-uri('../../data/image.jpg');
}
#data-uri-ascii {
uri-1: data-uri('text/html', '../../data/page.html');
uri-2: data-uri('../../data/page.html');
}
#svg-functions {
@colorlist1: black, white;
background-image: svg-gradient(to bottom, @colorlist1);
background-image: svg-gradient(to bottom, black white);
background-image: svg-gradient(to bottom, black, orange 3%, white);
@colorlist2: black, orange 3%, white;
background-image: svg-gradient(to bottom, @colorlist2);
@green_5: green 5%;
@orange_percentage: 3%;
@orange_color: orange;
@colorlist3: (mix(black, white) + #444) 1%, @orange_color @orange_percentage, ((@green_5)), white 95%;
background-image: svg-gradient(to bottom,@colorlist3);
background-image: svg-gradient(to bottom, (mix(black, white) + #444) 1%, @orange_color @orange_percentage, ((@green_5)), white 95%);
}

View file

@ -0,0 +1,3 @@
var less = {logLevel: 4,
errorReporting: 'console',
plugins: [VisitorPlugin]};

View file

@ -0,0 +1,3 @@
describe('less.js Visitor Plugin', function() {
testLessEqualsInDocument();
});

View file

@ -0,0 +1,51 @@
var less = {
logLevel: 4,
errorReporting: 'console',
javascriptEnabled: true,
math: 'always'
};
// test inline less in style tags by grabbing an assortment of less files and doing `@import`s
var testFiles = ['charsets', 'colors', 'comments', 'css-3', 'strings', 'media', 'mixins'],
testSheets = [];
// setup style tags with less and link tags pointing to expected css output
/**
* @todo - generate the node_modules path for this file and in templates
*/
var lessFolder = '../../node_modules/@less/test-data/less'
var cssFolder = '../../node_modules/@less/test-data/css'
for (var i = 0; i < testFiles.length; i++) {
var file = testFiles[i],
lessPath = lessFolder + '/_main/' + file + '.less',
cssPath = cssFolder + '/_main/' + file + '.css',
lessStyle = document.createElement('style'),
cssLink = document.createElement('link'),
lessText = '@import "' + lessPath + '";';
lessStyle.type = 'text/less';
lessStyle.id = file;
lessStyle.href = file;
if (lessStyle.styleSheet === undefined) {
lessStyle.appendChild(document.createTextNode(lessText));
}
cssLink.rel = 'stylesheet';
cssLink.type = 'text/css';
cssLink.href = cssPath;
cssLink.id = 'expected-' + file;
var head = document.getElementsByTagName('head')[0];
head.appendChild(lessStyle);
if (lessStyle.styleSheet) {
lessStyle.styleSheet.cssText = lessText;
}
head.appendChild(cssLink);
testSheets[i] = lessStyle;
}

12
node_modules/less/test/browser/runner-browser-spec.js generated vendored Normal file
View file

@ -0,0 +1,12 @@
describe('less.js browser behaviour', function() {
testLessEqualsInDocument();
it('has some log messages', function() {
expect(logMessages.length).to.be.above(0);
});
for (var i = 0; i < testFiles.length; i++) {
var sheet = testSheets[i];
testSheet(sheet);
}
});

View file

@ -0,0 +1,5 @@
less.errorReporting = 'console';
describe('less.js error reporting console test', function() {
testLessErrorsInDocument(true);
});

View file

@ -0,0 +1,6 @@
var less = {
strictUnits: true,
math: 'strict-legacy',
logLevel: 4,
javascriptEnabled: true
};

3
node_modules/less/test/browser/runner-errors-spec.js generated vendored Normal file
View file

@ -0,0 +1,3 @@
describe('less.js error tests', function() {
testLessErrorsInDocument();
});

View file

@ -0,0 +1,5 @@
var less = {
logLevel: 4,
errorReporting: 'console',
plugins: [AddFilePlugin]
};

View file

@ -0,0 +1,3 @@
describe('less.js filemanager Plugin', function() {
testLessEqualsInDocument();
});

View file

@ -0,0 +1,7 @@
var less = {
logLevel: 4,
errorReporting: 'console',
globalVars: {
'@global-var': 'red'
}
};

View file

@ -0,0 +1,3 @@
describe('less.js global vars', function() {
testLessEqualsInDocument();
});

View file

@ -0,0 +1,6 @@
var less = {
logLevel: 4,
errorReporting: 'console',
math: 'always',
strictUnits: false
};

3
node_modules/less/test/browser/runner-legacy-spec.js generated vendored Normal file
View file

@ -0,0 +1,3 @@
describe('less.js legacy tests', function() {
testLessEqualsInDocument();
});

17
node_modules/less/test/browser/runner-main-options.js generated vendored Normal file
View file

@ -0,0 +1,17 @@
var less = {
logLevel: 4,
errorReporting: 'console'
};
less.functions = {
add: function(a, b) {
return new(less.tree.Dimension)(a.value + b.value);
},
increment: function(a) {
return new(less.tree.Dimension)(a.value + 1);
},
_color: function(str) {
if (str.value === 'evil red') {
return new(less.tree.Color)('600');
}
}
};

7
node_modules/less/test/browser/runner-main-spec.js generated vendored Normal file
View file

@ -0,0 +1,7 @@
console.warn('start spec');
describe('less.js main tests', function() {
testLessEqualsInDocument();
it('the global environment', function() {
expect(window.require).to.be.undefined;
});
});

View file

@ -0,0 +1,5 @@
/* exported less */
var less = {
logLevel: 4,
errorReporting: 'console'
};

View file

@ -0,0 +1,33 @@
var alreadyRun = false;
describe('less.js modify vars', function () {
beforeEach(function (done) {
// simulating "setUp" or "beforeAll" method
if (alreadyRun) {
done();
return;
}
alreadyRun = true;
less.pageLoadFinished
.then(function () {
less.modifyVars({
var1: 'green',
var2: 'purple',
scale: 20
}).then(function () {
done();
});
});
});
testLessEqualsInDocument();
it('Should log only 2 XHR requests', function (done) {
var xhrLogMessages = logMessages.filter(function (item) {
return (/XHR: Getting '/).test(item);
});
expect(xhrLogMessages.length).to.equal(2);
done();
});
});

View file

@ -0,0 +1,4 @@
var less = {logLevel: 4};
less.strictUnits = true;
less.javascriptEnabled = false;

View file

@ -0,0 +1,3 @@
describe('less.js javascript disabled error tests', function() {
testLessErrorsInDocument();
});

View file

@ -0,0 +1,3 @@
var less = {logLevel: 4,
errorReporting: 'console',
plugins: [postProcessorPlugin]};

View file

@ -0,0 +1,3 @@
describe('less.js postProcessor Plugin', function() {
testLessEqualsInDocument();
});

View file

@ -0,0 +1,3 @@
var less = {logLevel: 4,
errorReporting: 'console',
plugins: [preProcessorPlugin]};

View file

@ -0,0 +1,3 @@
describe('less.js preProcessor Plugin', function() {
testLessEqualsInDocument();
});

View file

@ -0,0 +1,3 @@
var less = {logLevel: 1,
errorReporting: 'console'};
less.env = 'production';

View file

@ -0,0 +1,5 @@
describe('less.js production behaviour', function() {
it('doesn\'t log any messages', function() {
expect(logMessages.length).to.equal(0);
});
});

View file

@ -0,0 +1,3 @@
var less = {logLevel: 4,
errorReporting: 'console'};
less.relativeUrls = true;

View file

@ -0,0 +1,3 @@
describe('less.js browser test - relative url\'s', function() {
testLessEqualsInDocument();
});

View file

@ -0,0 +1,3 @@
var less = {logLevel: 4,
errorReporting: 'console'};
less.rewriteUrls = 'all';

View file

@ -0,0 +1,3 @@
describe('less.js browser test - rewrite urls', function() {
testLessEqualsInDocument();
});

View file

@ -0,0 +1,3 @@
var less = {logLevel: 4,
errorReporting: 'console'};
less.rootpath = 'https://localhost/';

View file

@ -0,0 +1,4 @@
var less = {logLevel: 4,
errorReporting: 'console'};
less.rootpath = 'https://www.github.com/cloudhead/less.js/';
less.relativeUrls = true;

View file

@ -0,0 +1,3 @@
describe('less.js browser test - rootpath and relative urls', function() {
testLessEqualsInDocument();
});

View file

@ -0,0 +1,4 @@
var less = {logLevel: 4,
errorReporting: 'console'};
less.rootpath = 'https://www.github.com/cloudhead/less.js/';
less.rewriteUrls = 'all';

View file

@ -0,0 +1,3 @@
describe('less.js browser test - rootpath and rewrite urls', function() {
testLessEqualsInDocument();
});

View file

@ -0,0 +1,3 @@
describe('less.js browser test - rootpath url\'s', function() {
testLessEqualsInDocument();
});

View file

@ -0,0 +1,5 @@
var less = {
logLevel: 4,
errorReporting: 'console',
strictMath: true,
strictUnits: true };

View file

@ -0,0 +1,3 @@
describe('less.js strict units tests', function() {
testLessEqualsInDocument();
});