xultestrunner 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION +1 -1
- data/xpcomcore/app/application.ini +2 -2
- data/xpcomcore/app/chrome/chrome.manifest +1 -1
- data/xpcomcore/app/chrome/content/scripts/xul_test_runner.js +110 -0
- data/xpcomcore/app/chrome/content/xul/main_window.xul +14 -2
- data/xpcomcore/app/chrome/icons/default/default.png +0 -0
- data/xpcomcore/app/defaults/preferences/prefs.js +1 -1
- data/xpcomcore/stub_runners/XULTestRunner.app/Contents/Info.plist +32 -0
- data/xpcomcore/stub_runners/XULTestRunner.app/Contents/MacOS/stub_runner +0 -0
- data/xpcomcore/stub_runners/XULTestRunner.app/Contents/PkgInfo +1 -0
- data/xpcomcore/stub_runners/XULTestRunner.app/Contents/Resources/.gitignore +0 -0
- data/xpcomcore/stub_runners/XULTestRunner.app/Contents/Resources/xultestrunner.icns +0 -0
- data/xultestrunner.gemspec +9 -2
- metadata +9 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.4.0
|
@@ -1 +1 @@
|
|
1
|
-
content xultestrunner
|
1
|
+
content xultestrunner content/
|
@@ -0,0 +1,110 @@
|
|
1
|
+
XPCOMCore({scope: this});
|
2
|
+
|
3
|
+
function XULTestRunner(argv, outputWindow) {
|
4
|
+
this.options = {};
|
5
|
+
this.argv = argv.concat([]);
|
6
|
+
this.outputWindow = outputWindow;
|
7
|
+
// FIXME - CurWorkD is busted because we get called from LaunchServices on a Mac, I guess.
|
8
|
+
// so use whatever ENV['PWD'] happens to be instead.
|
9
|
+
this.curDir = new XPCBuiltins.nsILocalFile($ENV.get('PWD'));
|
10
|
+
}
|
11
|
+
|
12
|
+
// TODO - add real at exit hooks into XPCOMCore
|
13
|
+
XULTestRunner.atExit = function() {};
|
14
|
+
|
15
|
+
// TODO - add some kind of optionparser class to
|
16
|
+
// XPCOMCore and also figure out why I'm getting
|
17
|
+
// -foreground in argv.
|
18
|
+
// TODO - when XPCOMCore gets a Shell object, just
|
19
|
+
// use glob and allow for specifying a test pattern
|
20
|
+
// rather than a test file or a test dir
|
21
|
+
// TODO - also this falls all over itself when handling
|
22
|
+
// absolute vs. relative paths. wee.
|
23
|
+
XULTestRunner.prototype = {
|
24
|
+
testFileMatcher: /_test\.js$/,
|
25
|
+
|
26
|
+
run: function() {
|
27
|
+
this._parseArgv();
|
28
|
+
this._loadTests();
|
29
|
+
},
|
30
|
+
|
31
|
+
_loadTests: function() {
|
32
|
+
this._checkOptions();
|
33
|
+
this._addLibs();
|
34
|
+
this._requireTests();
|
35
|
+
},
|
36
|
+
|
37
|
+
_addLibs: function() {
|
38
|
+
if (!this.options.testLibs) { return true; }
|
39
|
+
var libDir = this.curDir.clone();
|
40
|
+
libDir.QueryInterface($Ci.nsILocalFile);
|
41
|
+
libDir.appendRelativePath(this.options.testLibs);
|
42
|
+
$LOAD_PATH.push(libDir.path);
|
43
|
+
},
|
44
|
+
|
45
|
+
_requireTests: function() {
|
46
|
+
var testFiles = this._collectTestFiles();
|
47
|
+
puts("Requiring tests: " + testFiles);
|
48
|
+
testFiles.forEach(function(filePath) {
|
49
|
+
load(filePath);
|
50
|
+
});
|
51
|
+
XULTestRunner.atExit();
|
52
|
+
},
|
53
|
+
|
54
|
+
_collectTestFiles: function() {
|
55
|
+
if (this.options.testFile) {
|
56
|
+
var testFile = this.curDir.clone();
|
57
|
+
testFile.QueryInterface($Ci.nsILocalFile);
|
58
|
+
testFile.appendRelativePath(this.options.testFile);
|
59
|
+
return [testFile];
|
60
|
+
} else {
|
61
|
+
var rootDir = this.curDir.clone();
|
62
|
+
rootDir.QueryInterface($Ci.nsILocalFile);
|
63
|
+
rootDir.appendRelativePath(this.options.testDir);
|
64
|
+
return this._findTestsFromDir(rootDir);
|
65
|
+
}
|
66
|
+
},
|
67
|
+
|
68
|
+
_findTestsFromDir: function(rootDir) {
|
69
|
+
var testFiles = [];
|
70
|
+
var entries = rootDir.directoryEntries;
|
71
|
+
while (entries.hasMoreElements()) {
|
72
|
+
var entry = entries.getNext().QueryInterface($Ci.nsIFile);
|
73
|
+
if (entry.isDirectory()) {
|
74
|
+
testFiles = testFiles.concat(this._findTestsFromDir(entry));
|
75
|
+
} else if (this.testFileMatcher.test(entry.path)) {
|
76
|
+
testFiles.push(entry.path);
|
77
|
+
}
|
78
|
+
}
|
79
|
+
return testFiles;
|
80
|
+
},
|
81
|
+
|
82
|
+
_checkOptions: function() {
|
83
|
+
if (this.options.testDir && this.options.testFile) {
|
84
|
+
throw("Only one of -testDir or -testFile may be specified.");
|
85
|
+
} else if (!this.options.testDir && !this.options.testFile) {
|
86
|
+
throw("-testDir or -testFile must be specified.");
|
87
|
+
}
|
88
|
+
},
|
89
|
+
|
90
|
+
// TODO - refactor this shitty while/switch loop
|
91
|
+
_parseArgv: function() {
|
92
|
+
var arg = null;
|
93
|
+
while (arg = this.argv.shift()) {
|
94
|
+
switch (arg)
|
95
|
+
{
|
96
|
+
case "-testDir":
|
97
|
+
this.options.testDir = this.argv.shift();
|
98
|
+
break;
|
99
|
+
case "-testFile":
|
100
|
+
this.options.testFile = this.argv.shift();
|
101
|
+
break;
|
102
|
+
case "-testLibs":
|
103
|
+
this.options.testLibs = this.argv.shift();
|
104
|
+
break;
|
105
|
+
default:
|
106
|
+
puts("Got unknown argument: " + arg);
|
107
|
+
}
|
108
|
+
} // while
|
109
|
+
}
|
110
|
+
}
|
@@ -1,6 +1,18 @@
|
|
1
1
|
<?xml version="1.0"?>
|
2
2
|
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
|
3
3
|
|
4
|
-
<window id="main" title="
|
5
|
-
<
|
4
|
+
<window id="main" title="XUL Test Runner" width="800" height="600" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
5
|
+
<script type="text/javascript" src="../scripts/xul_test_runner.js" />
|
6
|
+
<script type="text/javascript">
|
7
|
+
try {
|
8
|
+
var testRunner = new XULTestRunner($ARGV, this);
|
9
|
+
testRunner.run();
|
10
|
+
} catch (e) {
|
11
|
+
puts("Got an exception while running tests: " + e);
|
12
|
+
}
|
13
|
+
|
14
|
+
// TODO - move some of this into XPCOMCore
|
15
|
+
var appStartup = $Cc["@mozilla.org/toolkit/app-startup;1"].getService($Ci.nsIAppStartup);
|
16
|
+
appStartup.quit($Ci.nsIAppStartup.eForceQuit);
|
17
|
+
</script>
|
6
18
|
</window>
|
Binary file
|
@@ -1,5 +1,5 @@
|
|
1
1
|
pref("toolkit.defaultChromeURI", "chrome://xultestrunner/content/xul/main_window.xul");
|
2
|
-
pref("toolkit.defaultChromeFeatures", "chrome,menubar,resizable");
|
2
|
+
pref("toolkit.defaultChromeFeatures", "chrome,menubar,status,resizable");
|
3
3
|
pref("javascript.options.showInConsole", true);
|
4
4
|
// TODO - only disable caching in development mode.
|
5
5
|
pref("nglayout.debug.disable_xul_cache", true);
|
@@ -0,0 +1,32 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
3
|
+
<plist version="1.0">
|
4
|
+
<dict>
|
5
|
+
<key>CFBundleDevelopmentRegion</key>
|
6
|
+
<string>English</string>
|
7
|
+
<key>CFBundleExecutable</key>
|
8
|
+
<string>stub_runner</string>
|
9
|
+
<key>CFBundleGetInfoString</key>
|
10
|
+
<string>XULTestRunner 0.4.0 © 2009 Conflagration JS</string>
|
11
|
+
<key>CFBundleIconFile</key>
|
12
|
+
<string>xultestrunner</string>
|
13
|
+
<key>CFBundleIdentifier</key>
|
14
|
+
<string>org.conflagrationjs.xultestrunner</string>
|
15
|
+
<key>CFBundleInfoDictionaryVersion</key>
|
16
|
+
<string>6.0</string>
|
17
|
+
<key>CFBundleName</key>
|
18
|
+
<string>XULTestRunner</string>
|
19
|
+
<key>CFBundlePackageType</key>
|
20
|
+
<string>APPL</string>
|
21
|
+
<key>CFBundleShortVersionString</key>
|
22
|
+
<string>0.4.0</string>
|
23
|
+
<key>CFBundleSignature</key>
|
24
|
+
<string>XPCC</string>
|
25
|
+
<key>CFBundleVersion</key>
|
26
|
+
<string>0.4.0</string>
|
27
|
+
<key>CGDisableCoalescedUpdates</key>
|
28
|
+
<true/>
|
29
|
+
<key>NSAppleScriptEnabled</key>
|
30
|
+
<true/>
|
31
|
+
</dict>
|
32
|
+
</plist>
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
APPL????
|
File without changes
|
Binary file
|
data/xultestrunner.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{xultestrunner}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.4.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Gabriel Gironda"]
|
12
|
-
s.date = %q{2009-10-
|
12
|
+
s.date = %q{2009-10-18}
|
13
13
|
s.default_executable = %q{xultest}
|
14
14
|
s.description = %q{XUL based test runner for running your JS unit tests.}
|
15
15
|
s.email = %q{contact@gironda.org}
|
@@ -31,9 +31,16 @@ Gem::Specification.new do |s|
|
|
31
31
|
"test/xultestrunner_test.rb",
|
32
32
|
"xpcomcore/app/application.ini",
|
33
33
|
"xpcomcore/app/chrome/chrome.manifest",
|
34
|
+
"xpcomcore/app/chrome/content/scripts/xul_test_runner.js",
|
34
35
|
"xpcomcore/app/chrome/content/xul/main_window.xul",
|
36
|
+
"xpcomcore/app/chrome/icons/default/default.png",
|
35
37
|
"xpcomcore/app/components/bootstrapper.js",
|
36
38
|
"xpcomcore/app/defaults/preferences/prefs.js",
|
39
|
+
"xpcomcore/stub_runners/XULTestRunner.app/Contents/Info.plist",
|
40
|
+
"xpcomcore/stub_runners/XULTestRunner.app/Contents/MacOS/stub_runner",
|
41
|
+
"xpcomcore/stub_runners/XULTestRunner.app/Contents/PkgInfo",
|
42
|
+
"xpcomcore/stub_runners/XULTestRunner.app/Contents/Resources/.gitignore",
|
43
|
+
"xpcomcore/stub_runners/XULTestRunner.app/Contents/Resources/xultestrunner.icns",
|
37
44
|
"xultestrunner.gemspec"
|
38
45
|
]
|
39
46
|
s.homepage = %q{http://github.com/gabrielg/xultestrunner}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xultestrunner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gabriel Gironda
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-10-
|
12
|
+
date: 2009-10-18 00:00:00 -05:00
|
13
13
|
default_executable: xultest
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -44,9 +44,16 @@ files:
|
|
44
44
|
- test/xultestrunner_test.rb
|
45
45
|
- xpcomcore/app/application.ini
|
46
46
|
- xpcomcore/app/chrome/chrome.manifest
|
47
|
+
- xpcomcore/app/chrome/content/scripts/xul_test_runner.js
|
47
48
|
- xpcomcore/app/chrome/content/xul/main_window.xul
|
49
|
+
- xpcomcore/app/chrome/icons/default/default.png
|
48
50
|
- xpcomcore/app/components/bootstrapper.js
|
49
51
|
- xpcomcore/app/defaults/preferences/prefs.js
|
52
|
+
- xpcomcore/stub_runners/XULTestRunner.app/Contents/Info.plist
|
53
|
+
- xpcomcore/stub_runners/XULTestRunner.app/Contents/MacOS/stub_runner
|
54
|
+
- xpcomcore/stub_runners/XULTestRunner.app/Contents/PkgInfo
|
55
|
+
- xpcomcore/stub_runners/XULTestRunner.app/Contents/Resources/.gitignore
|
56
|
+
- xpcomcore/stub_runners/XULTestRunner.app/Contents/Resources/xultestrunner.icns
|
50
57
|
- xultestrunner.gemspec
|
51
58
|
has_rdoc: true
|
52
59
|
homepage: http://github.com/gabrielg/xultestrunner
|