karma-opera-launcher
Advanced tools
Comparing version 0.2.0 to 0.3.0
@@ -0,1 +1,16 @@ | ||
<a name="0.3.0"></a> | ||
# [0.3.0](https://github.com/karma-runner/karma-opera-launcher/compare/v0.2.0...v0.3.0) (2015-08-10) | ||
### Bug Fixes | ||
* do not try to find the Windows executable if the ProgramFiles variables are unde ([9c17cc0](https://github.com/karma-runner/karma-opera-launcher/commit/9c17cc0)) | ||
* use path.join() to construct the path of the prefs.ini file ([a077186](https://github.com/karma-runner/karma-opera-launcher/commit/a077186)) | ||
### Features | ||
* **runner:** add support for Webkit Opera runner ([d38a625](https://github.com/karma-runner/karma-opera-launcher/commit/d38a625)) | ||
<a name"0.2.0"></a> | ||
@@ -2,0 +17,0 @@ ## 0.2.0 (2015-07-02) |
@@ -9,2 +9,25 @@ module.exports = function (grunt) { | ||
}, | ||
conventionalChangelog: { | ||
release: { | ||
options: { | ||
changelogOpts: { | ||
preset: 'angular' | ||
} | ||
}, | ||
src: 'CHANGELOG.md' | ||
} | ||
}, | ||
conventionalGithubReleaser: { | ||
release: { | ||
options: { | ||
auth: { | ||
type: 'oauth', | ||
token: process.env.GH_TOKEN | ||
}, | ||
changelogOpts: { | ||
preset: 'angular' | ||
} | ||
} | ||
} | ||
}, | ||
bump: { | ||
@@ -36,4 +59,5 @@ options: { | ||
'bump-only:' + (type || 'patch'), | ||
'changelog', | ||
'conventionalChangelog', | ||
'bump-commit', | ||
'conventionalGithubReleaser', | ||
'npm-publish' | ||
@@ -40,0 +64,0 @@ ]) |
121
index.js
var fs = require('fs') | ||
var path = require('path') | ||
var PREFS = fs.readFileSync(path.join(__dirname, '/config/prefs.ini')) | ||
var OperaClassicBrowser | ||
var OperaBrowser | ||
var DEFAULT_CMD | ||
var PREFS = fs.readFileSync('./config/prefs.ini') | ||
function isJSFlags (flag) { | ||
return flag.indexOf('--js-flags=') === 0 | ||
} | ||
var OperaBrowser = function (baseBrowserDecorator) { | ||
baseBrowserDecorator(this) | ||
this._getOptions = function (url) { | ||
// Opera CLI options | ||
// http://www.opera.com/docs/switches/ | ||
return [ | ||
'-pd', this._tempDir, | ||
'-nomail', | ||
url | ||
] | ||
} | ||
this._start = function (url) { | ||
var self = this | ||
var prefsFile = this._tempDir + '/operaprefs.ini' | ||
fs.writeFile(prefsFile, PREFS, function (err) { | ||
if (err) { | ||
console.error('Can not write perferences files') | ||
console.error(err) | ||
} | ||
self._execCommand(self._getCommand(), self._getOptions(url)) | ||
}) | ||
} | ||
function sanitizeJSFlags (flag) { | ||
var test = /--js-flags=(['"])/.exec(flag) | ||
if (!test) return flag | ||
var escapeChar = test[1] | ||
var endExp = new RegExp(escapeChar + '$') | ||
var startExp = new RegExp('--js-flags=' + escapeChar) | ||
return flag.replace(startExp, '--js-flags=').replace(endExp, '') | ||
} | ||
var findWindowsOperaExecutable = function () { | ||
function findWindowsOperaExecutable () { | ||
// First we need the directory where Opera is installed. | ||
@@ -44,2 +32,6 @@ var operaPath | ||
var found = defaultPaths.some(function (progFiles) { | ||
if (progFiles === undefined) { | ||
return false | ||
} | ||
var oP = path.join(progFiles, 'Opera') | ||
@@ -100,18 +92,81 @@ try { | ||
OperaClassicBrowser = function (baseBrowserDecorator) { | ||
baseBrowserDecorator(this) | ||
this._getOptions = function (url) { | ||
// Opera CLI options | ||
// http://www.opera.com/docs/switches/ | ||
return [ | ||
'-pd', this._tempDir, | ||
'-nomail', | ||
url | ||
] | ||
} | ||
this._start = function (url) { | ||
var self = this | ||
var prefsFile = this._tempDir + '/operaprefs.ini' | ||
fs.writeFile(prefsFile, PREFS, function (err) { | ||
if (err) { | ||
console.error('Can not write perferences files') | ||
console.error(err) | ||
} | ||
self._execCommand(self._getCommand(), self._getOptions(url)) | ||
}) | ||
} | ||
} | ||
OperaBrowser = function (baseBrowserDecorator, args) { | ||
baseBrowserDecorator(this) | ||
var flags = args.flags || [] | ||
this._getOptions = function (url) { | ||
// Opera CLI options | ||
// http://peter.sh/experiments/chromium-command-line-switches/ | ||
flags.forEach(function (flag, i) { | ||
if (isJSFlags(flag)) flags[i] = sanitizeJSFlags(flag) | ||
}) | ||
return [ | ||
'--user-data-dir=' + this._tempDir, | ||
'--no-default-browser-check', | ||
'--no-first-run', | ||
'--disable-default-apps', | ||
'--disable-popup-blocking', | ||
'--disable-translate', | ||
'--new-window' | ||
].concat(flags, [url]) | ||
} | ||
} | ||
DEFAULT_CMD = { | ||
linux: 'opera', | ||
darwin: '/Applications/Opera.app/Contents/MacOS/Opera', | ||
win32: findWindowsOperaExecutable() | ||
} | ||
OperaClassicBrowser.prototype = { | ||
name: 'OperaClassic', | ||
DEFAULT_CMD: DEFAULT_CMD, | ||
ENV_CMD: 'OPERA_BIN' | ||
} | ||
OperaClassicBrowser.$inject = ['baseBrowserDecorator'] | ||
OperaBrowser.prototype = { | ||
name: 'Opera', | ||
DEFAULT_CMD: { | ||
linux: 'opera', | ||
darwin: '/Applications/Opera.app/Contents/MacOS/Opera', | ||
win32: findWindowsOperaExecutable() | ||
}, | ||
DEFAULT_CMD: DEFAULT_CMD, | ||
ENV_CMD: 'OPERA_BIN' | ||
} | ||
OperaBrowser.$inject = ['baseBrowserDecorator'] | ||
OperaBrowser.$inject = ['baseBrowserDecorator', 'args'] | ||
// PUBLISH DI MODULE | ||
module.exports = { | ||
'launcher:OperaClassic': ['type', OperaClassicBrowser], | ||
'launcher:Opera': ['type', OperaBrowser] | ||
} |
{ | ||
"name": "karma-opera-launcher", | ||
"version": "0.2.0", | ||
"version": "0.3.0", | ||
"description": "A Karma plugin. Launcher for Opera.", | ||
@@ -25,8 +25,9 @@ "main": "index.js", | ||
"devDependencies": { | ||
"eslint": "^0.24.0", | ||
"eslint-config-standard": "^3.4.0", | ||
"eslint": "^1.1.0", | ||
"eslint-config-standard": "^4.0.0", | ||
"grunt": "^0.4.1", | ||
"grunt-bump": "^0.3.1", | ||
"grunt-conventional-changelog": "^1.2.2", | ||
"grunt-eslint": "^16.0.0", | ||
"grunt-conventional-changelog": "^4.0.0", | ||
"grunt-conventional-github-releaser": "^0.3.0", | ||
"grunt-eslint": "^17.1.0", | ||
"grunt-npm": "^0.0.2", | ||
@@ -36,6 +37,9 @@ "load-grunt-tasks": "^3.2.0" | ||
"contributors": [ | ||
"dignifiedquire <dignifiedquire@gmail.com>", | ||
"Friedel Ziegelmayer <friedel.ziegelmayer@gmail.com>", | ||
"dignifiedquire <dignifiedquire@gmail.com>", | ||
"Simon A. Eugster <simon.eugster@eps.ch>" | ||
"Friedel Ziegelmayer <dignifiedquire@gmail.com>", | ||
"Christoph Guttandin <chrisguttandin@media-codings.com>", | ||
"Simon A. Eugster <simon.eugster@eps.ch>", | ||
"Zohar Arad <zohar@zohararad.com>" | ||
] | ||
} |
@@ -19,2 +19,4 @@ # karma-opera-launcher | ||
## Configuration | ||
#### Opera Classic (up to and including v12) | ||
```js | ||
@@ -24,2 +26,12 @@ // karma.conf.js | ||
config.set({ | ||
browsers: ['OperaClassic'] | ||
}); | ||
}; | ||
``` | ||
#### Opera (v15 and above) | ||
```js | ||
// karma.conf.js | ||
module.exports = function(config) { | ||
config.set({ | ||
browsers: ['Opera'] | ||
@@ -32,3 +44,3 @@ }); | ||
```bash | ||
karma start --browsers Opera | ||
karma start --browsers Opera,OperaClassic | ||
``` | ||
@@ -35,0 +47,0 @@ |
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
10859
202
51
0
9
4