spade 0.1.0 → 0.1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +0 -11
- data/.gitmodules +3 -6
- data/Gemfile +10 -0
- data/bin/spade +3 -1
- data/lib/spade.rb +70 -0
- data/lib/spade/bundle.rb +180 -0
- data/lib/spade/cli.rb +1 -17
- data/lib/spade/cli/base.rb +182 -0
- data/lib/spade/console.rb +39 -0
- data/lib/spade/context.rb +107 -0
- data/lib/spade/evaluator.rb +34 -0
- data/lib/spade/exports.rb +70 -0
- data/lib/spade/loader.rb +208 -0
- data/lib/spade/package/.gitignore +1 -0
- data/lib/spade/package/Gemfile +15 -0
- data/lib/spade/package/lib/spade.js +1283 -0
- data/lib/spade/package/lib/wrapper.js +15 -0
- data/lib/spade/package/package.json +17 -0
- data/lib/spade/package/spec/javascript/async-test.js +123 -0
- data/lib/spade/package/spec/javascript/compiler/javascript.js +13 -0
- data/lib/spade/package/spec/javascript/compiler/ruby.js +14 -0
- data/lib/spade/package/spec/javascript/loader-test.js +64 -0
- data/lib/spade/package/spec/javascript/normalize-test.js +73 -0
- data/lib/spade/package/spec/javascript/packages-test.js +50 -0
- data/lib/spade/package/spec/javascript/relative-require-test.js +72 -0
- data/lib/spade/package/spec/javascript/require-test.js +117 -0
- data/lib/spade/package/spec/javascript/sandbox/creation.js +44 -0
- data/lib/spade/package/spec/javascript/sandbox/evaluate.js +37 -0
- data/lib/spade/package/spec/javascript/sandbox/format.js +79 -0
- data/lib/spade/package/spec/javascript/sandbox/misc.js +58 -0
- data/lib/spade/package/spec/javascript/sandbox/preprocessor.js +81 -0
- data/lib/spade/package/spec/javascript/sandbox/require.js +48 -0
- data/lib/spade/package/spec/javascript/sandbox/run-command.js +21 -0
- data/lib/spade/package/spec/javascript/spade/externs.js +14 -0
- data/lib/spade/package/spec/javascript/spade/load-factory.js +15 -0
- data/lib/spade/package/spec/javascript/spade/misc.js +23 -0
- data/lib/spade/package/spec/javascript/spade/ready.js +12 -0
- data/lib/spade/package/spec/javascript/spade/register.js +13 -0
- data/lib/spade/package/spec/javascript_spec.rb +7 -0
- data/lib/spade/package/spec/spec_helper.rb +3 -0
- data/lib/spade/package/spec/support/core_test.rb +67 -0
- data/lib/spade/reactor.rb +159 -0
- data/lib/spade/server.rb +66 -0
- data/lib/spade/shell.rb +85 -0
- data/lib/spade/version.rb +1 -1
- data/spade.gemspec +15 -4
- data/spec/cli/update_spec.rb +65 -0
- data/spec/spec_helper.rb +22 -0
- data/spec/support/cli.rb +103 -0
- data/spec/support/matchers.rb +12 -0
- data/spec/support/path.rb +66 -0
- metadata +146 -78
- data/.rspec +0 -1
- data/Buildfile +0 -18
- data/README.md +0 -152
- data/Rakefile +0 -9
- data/examples/format-app/lib/hello.coffee +0 -1
- data/examples/format-app/lib/main.js +0 -6
- data/examples/format-app/package.json +0 -10
- data/examples/format-app/resources/README.txt +0 -1
- data/examples/format-app/resources/config.json +0 -3
- data/examples/path-test/lib/hello.js +0 -1
- data/examples/path-test/lib/main.js +0 -1
- data/examples/path-test/package.json +0 -5
- data/examples/sc-app/index.html +0 -13
- data/examples/sc-app/lib/main.js +0 -24
- data/examples/sc-app/package.json +0 -8
- data/examples/single-file.js +0 -22
- data/examples/todos/index.html +0 -11
- data/examples/todos/lib/main.js +0 -11
- data/examples/todos/lib/todos.js +0 -93
- data/examples/todos/package.json +0 -10
- data/examples/todos/resources/stylesheets/todos.css +0 -162
- data/examples/todos/resources/templates/todos.handlebars +0 -31
- data/examples/web-app/README.md +0 -83
- data/examples/web-app/index.html +0 -12
- data/examples/web-app/lib/main.js +0 -3
- data/examples/web-app/package.json +0 -6
- data/examples/web-app/tests.html +0 -12
- data/examples/web-app/tests/ct-example-test.js +0 -39
- data/examples/web-app/tests/qunit-test.js +0 -23
@@ -0,0 +1,15 @@
|
|
1
|
+
exports.compileWrapper = function(code, spade, filename, pkg, id) {
|
2
|
+
var ret = ''
|
3
|
+
|
4
|
+
// Register package, probably a better way to do this
|
5
|
+
if (id.match(/^[^\/]+\/main$/)) {
|
6
|
+
ret += 'spade.register("'+pkg.name+'", '+JSON.stringify(pkg)+');\n\n';
|
7
|
+
}
|
8
|
+
|
9
|
+
// TODO: This probably isn't quite right
|
10
|
+
// TOOD: We can also pass a string here, maybe we should instead
|
11
|
+
ret += 'spade.register("'+id+'", function(){\n'+code+'\n});';
|
12
|
+
|
13
|
+
return ret;
|
14
|
+
};
|
15
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
{
|
2
|
+
"name": "spade",
|
3
|
+
"version": "0.1.1",
|
4
|
+
|
5
|
+
"description": "Dependency Management Library for JavaScript",
|
6
|
+
"author": "Charles Jolley",
|
7
|
+
"homepage": "http://github.com/sproutcore/spade",
|
8
|
+
|
9
|
+
"directories": {
|
10
|
+
"lib": "./lib",
|
11
|
+
"tests": "./tests"
|
12
|
+
},
|
13
|
+
|
14
|
+
"main": "./lib/spade",
|
15
|
+
|
16
|
+
"plugin:wrapper": "spade/wrapper"
|
17
|
+
}
|
@@ -0,0 +1,123 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: Spade - CommonJS Runtime
|
3
|
+
// Copyright: ©2010 Strobe Inc. All rights reserved.
|
4
|
+
// License: Licened under MIT license (see __preamble__.js)
|
5
|
+
// ==========================================================================
|
6
|
+
/*globals Ct */
|
7
|
+
|
8
|
+
require('core-test');
|
9
|
+
|
10
|
+
var Spade = require('spade').Spade;
|
11
|
+
|
12
|
+
// ..........................................................
|
13
|
+
// BASIC REQUIRE
|
14
|
+
//
|
15
|
+
|
16
|
+
Ct.module('spade: async require');
|
17
|
+
|
18
|
+
Ct.setup(function(t, done) {
|
19
|
+
t.spade = new Spade();
|
20
|
+
|
21
|
+
// preload a module
|
22
|
+
t.spade.register('foo/baz', function(require,e) {
|
23
|
+
e.id = 'foo/baz';
|
24
|
+
e.async = require.async; // export for testing
|
25
|
+
});
|
26
|
+
|
27
|
+
// dummy loader loads only foo/bar on demand after delay
|
28
|
+
t.spade.loader = {
|
29
|
+
|
30
|
+
requests: 0,
|
31
|
+
|
32
|
+
loadFactory: function(spade, id, formats, done) {
|
33
|
+
this.requests++;
|
34
|
+
if (id === 'foo/bar') {
|
35
|
+
setTimeout(function() {
|
36
|
+
spade.register(id, function(r,e) { e.id='foo/bar'; });
|
37
|
+
done();
|
38
|
+
}, 10);
|
39
|
+
|
40
|
+
} else {
|
41
|
+
done('Not Found'); // immediately
|
42
|
+
}
|
43
|
+
}
|
44
|
+
};
|
45
|
+
|
46
|
+
done();
|
47
|
+
});
|
48
|
+
|
49
|
+
Ct.teardown(function(t, done) {
|
50
|
+
delete t.spade;
|
51
|
+
done();
|
52
|
+
});
|
53
|
+
|
54
|
+
Ct.test('should not talk to loader if registered', function(t, done) {
|
55
|
+
var spade = t.spade;
|
56
|
+
|
57
|
+
t.timeout(1000);
|
58
|
+
|
59
|
+
spade.async('foo/baz', function(err) {
|
60
|
+
t.equal(err, null);
|
61
|
+
t.equal(spade.loader.requests, 0, 'loader should not have been called');
|
62
|
+
t.equal(spade.require('foo/baz').id, 'foo/baz', 'should find foo');
|
63
|
+
done();
|
64
|
+
});
|
65
|
+
|
66
|
+
});
|
67
|
+
|
68
|
+
Ct.test('should let loader register', function(t, done) {
|
69
|
+
var spade = t.spade;
|
70
|
+
t.timeout(1000);
|
71
|
+
spade.async('foo/bar', function(err) {
|
72
|
+
t.equal(err, null);
|
73
|
+
t.equal(spade.loader.requests, 1, 'loader should have been called');
|
74
|
+
t.equal(spade.require('foo/bar').id, 'foo/bar', 'should find foo');
|
75
|
+
done();
|
76
|
+
});
|
77
|
+
});
|
78
|
+
|
79
|
+
|
80
|
+
Ct.test('should normalize id', function(t, done) {
|
81
|
+
var spade = t.spade;
|
82
|
+
t.timeout(1000);
|
83
|
+
spade.async('/./foo/baz/../bar', function(err) {
|
84
|
+
t.equal(err, null);
|
85
|
+
t.equal(spade.loader.requests, 1, 'loader should have been called');
|
86
|
+
t.equal(spade.require('foo/bar').id, 'foo/bar', 'should find foo');
|
87
|
+
done();
|
88
|
+
});
|
89
|
+
});
|
90
|
+
|
91
|
+
|
92
|
+
Ct.test('should expose async inside of module', function(t, done) {
|
93
|
+
var spade = t.spade;
|
94
|
+
t.timeout(1000);
|
95
|
+
|
96
|
+
var async = spade.require('foo/baz').async;
|
97
|
+
t.ok(async, 'should have an async function');
|
98
|
+
|
99
|
+
// normalize relative to async
|
100
|
+
async('./bar', function(err) {
|
101
|
+
t.equal(err, null);
|
102
|
+
t.equal(spade.loader.requests, 1, 'loader should have been called');
|
103
|
+
t.equal(spade.require('foo/bar').id, 'foo/bar', 'should find foo');
|
104
|
+
done();
|
105
|
+
});
|
106
|
+
});
|
107
|
+
|
108
|
+
|
109
|
+
Ct.test('should return err if loader does not register', function(t, done) {
|
110
|
+
var spade = t.spade;
|
111
|
+
t.timeout(1000);
|
112
|
+
spade.async('imaginary/bar', function(err) {
|
113
|
+
t.equal(err, 'Not Found');
|
114
|
+
t.equal(spade.loader.requests, 1, 'loader should have been called');
|
115
|
+
|
116
|
+
t.throws(function() {
|
117
|
+
spade.require('imaginary/bar');
|
118
|
+
});
|
119
|
+
done();
|
120
|
+
});
|
121
|
+
|
122
|
+
});
|
123
|
+
|
@@ -0,0 +1,13 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: Spade - CommonJS Runtime
|
3
|
+
// Copyright: ©2011 Strobe Inc. All rights reserved.
|
4
|
+
// License: Licened under MIT license (see __preamble__.js)
|
5
|
+
// ==========================================================================
|
6
|
+
//
|
7
|
+
|
8
|
+
var Ct = require('core-test/sync');
|
9
|
+
|
10
|
+
Ct.module('spade: Compiler JavaScript');
|
11
|
+
|
12
|
+
Ct.test('works');
|
13
|
+
|
@@ -0,0 +1,14 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: Spade - CommonJS Runtime
|
3
|
+
// Copyright: ©2011 Strobe Inc. All rights reserved.
|
4
|
+
// License: Licened under MIT license (see __preamble__.js)
|
5
|
+
// ==========================================================================
|
6
|
+
//
|
7
|
+
|
8
|
+
var Ct = require('core-test/sync');
|
9
|
+
|
10
|
+
Ct.module('spade: Compiler Ruby');
|
11
|
+
|
12
|
+
Ct.test('works');
|
13
|
+
|
14
|
+
|
@@ -0,0 +1,64 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: Spade - CommonJS Runtime
|
3
|
+
// Copyright: ©2010 Strobe Inc. All rights reserved.
|
4
|
+
// License: Licened under MIT license (see __preamble__.js)
|
5
|
+
// ==========================================================================
|
6
|
+
|
7
|
+
var Ct = require('core-test/sync'),
|
8
|
+
Spade = require('spade').Spade;
|
9
|
+
|
10
|
+
// ..........................................................
|
11
|
+
// BASIC REQUIRE
|
12
|
+
//
|
13
|
+
|
14
|
+
Ct.module('spade: basic require');
|
15
|
+
|
16
|
+
Ct.setup(function(t) {
|
17
|
+
t.spade = new Spade();
|
18
|
+
|
19
|
+
// preload a module
|
20
|
+
t.spade.register('foo/main', function(r, e) { e.id = 'foo'; });
|
21
|
+
|
22
|
+
// dummy loader loads only foo/bar on demand
|
23
|
+
t.spade.loader = {
|
24
|
+
|
25
|
+
requests: 0,
|
26
|
+
|
27
|
+
loadFactory: function(spade, id, formats, done) {
|
28
|
+
this.requests++;
|
29
|
+
if (id === 'foo/bar') {
|
30
|
+
spade.register(id, function(r,e) { e.id='foo/bar'; });
|
31
|
+
}
|
32
|
+
if (done) throw "should not be passed done"
|
33
|
+
}
|
34
|
+
};
|
35
|
+
|
36
|
+
});
|
37
|
+
|
38
|
+
Ct.teardown(function(t) {
|
39
|
+
delete t.spade;
|
40
|
+
});
|
41
|
+
|
42
|
+
Ct.test('should not talk to loader if module is registered', function(t) {
|
43
|
+
var spade = t.spade;
|
44
|
+
t.equal(spade.require('foo').id, 'foo', 'should find foo');
|
45
|
+
t.equal(spade.loader.requests, 0, 'loader should not have been called');
|
46
|
+
});
|
47
|
+
|
48
|
+
Ct.test('should let loader register', function(t) {
|
49
|
+
var spade = t.spade;
|
50
|
+
t.equal(spade.require('foo/bar').id, 'foo/bar', 'should find foo');
|
51
|
+
t.equal(spade.loader.requests, 1, 'loader should have been called');
|
52
|
+
});
|
53
|
+
|
54
|
+
Ct.test('should throw if loader does not register', function(t) {
|
55
|
+
var spade = t.spade;
|
56
|
+
t.throws(function() {
|
57
|
+
spade.require('imaginary/bar');
|
58
|
+
});
|
59
|
+
t.equal(spade.loader.requests, 1, 'loader should have been called');
|
60
|
+
});
|
61
|
+
|
62
|
+
|
63
|
+
|
64
|
+
Ct.run();
|
@@ -0,0 +1,73 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: Spade - CommonJS Runtime
|
3
|
+
// Copyright: ©2010 Strobe Inc. All rights reserved.
|
4
|
+
// License: Licened under MIT license (see __preamble__.js)
|
5
|
+
// ==========================================================================
|
6
|
+
|
7
|
+
var Ct = require('core-test/sync'),
|
8
|
+
Spade = require('spade').Spade;
|
9
|
+
|
10
|
+
// ..........................................................
|
11
|
+
// BASIC REQUIRE
|
12
|
+
//
|
13
|
+
|
14
|
+
Ct.module('spade: normalize');
|
15
|
+
|
16
|
+
Ct.setup(function(t) {
|
17
|
+
t.spade = new Spade();
|
18
|
+
});
|
19
|
+
|
20
|
+
Ct.teardown(function(t) {
|
21
|
+
delete t.spade;
|
22
|
+
});
|
23
|
+
|
24
|
+
Ct.test('normalize', function(t) {
|
25
|
+
var spade = t.spade;
|
26
|
+
t.equal(spade.normalize('foo/bar'), 'foo/bar');
|
27
|
+
t.equal(spade.normalize('./foo', 'bar/baz'), 'bar/foo');
|
28
|
+
t.equal(spade.normalize('../foo', 'bar/baz'), 'foo/main');
|
29
|
+
t.equal(spade.normalize('foo/../bar//foo/./baz', 'bar/baz'), 'bar/foo/baz');
|
30
|
+
|
31
|
+
t.equal(spade.normalize('/foo/./bar'), 'foo/bar');
|
32
|
+
t.equal(spade.normalize('foo/../bar/'), 'bar/main');
|
33
|
+
t.equal(spade.normalize('/foo/../bar/'), 'bar/main');
|
34
|
+
|
35
|
+
t.equal(spade.normalize('/foo/bar'), 'foo/bar');
|
36
|
+
t.equal(spade.normalize('foo/bar/'), 'foo/bar');
|
37
|
+
t.equal(spade.normalize('/foo/bar/'), 'foo/bar');
|
38
|
+
|
39
|
+
t.equal(spade.normalize('PKG/foo/bar'), 'PKG/foo/bar');
|
40
|
+
t.equal(spade.normalize('BAR/foo', 'PKG/bar/baz'), 'BAR/foo');
|
41
|
+
t.equal(spade.normalize('./foo', 'PKG/bar/baz'), 'PKG/bar/foo');
|
42
|
+
t.equal(spade.normalize('../foo', 'PKG/bar/baz'), 'PKG/foo');
|
43
|
+
t.equal(spade.normalize('./foo/../../bar//foo/./baz', 'PKG/bar/baz'), 'PKG/bar/foo/baz');
|
44
|
+
|
45
|
+
});
|
46
|
+
|
47
|
+
Ct.test('normalize package', function(t) {
|
48
|
+
var spade = t.spade;
|
49
|
+
spade.register('sproutcore', {}); // register as a package
|
50
|
+
t.equal(spade.normalize('sproutcore'), 'sproutcore/main');
|
51
|
+
t.equal(spade.normalize('foo/sproutcore'), 'foo/sproutcore');
|
52
|
+
});
|
53
|
+
|
54
|
+
Ct.test('normalize relative require from main', function(t) {
|
55
|
+
// I think this is a valid test, but not certain
|
56
|
+
var spade = t.spade, mainRequire, otherRequire;
|
57
|
+
spade.register('foo', { main: './lib/foo', directories: { lib: './lib/foo' } });
|
58
|
+
spade.register('foo/main', 'return require;');
|
59
|
+
spade.register('foo/other/main', 'return require;');
|
60
|
+
mainRequire = spade.require('foo/main');
|
61
|
+
otherRequire = spade.require('foo/other/main');
|
62
|
+
t.equal(mainRequire.normalize('./foo/adfadf'), 'foo/adfadf', 'works for real main');
|
63
|
+
t.equal(otherRequire.normalize('./foo/core'), 'foo/other/foo/core', "no difference for fake main");
|
64
|
+
});
|
65
|
+
|
66
|
+
Ct.test('normalize tilde paths with lib', function(t){
|
67
|
+
var spade = t.spade, fooRequire;
|
68
|
+
spade.register('foo', { directories: { lib: './lib' }}); // register as a package
|
69
|
+
spade.register('foo/main', 'return require;');
|
70
|
+
fooRequire = spade.require('foo');
|
71
|
+
t.equal(fooRequire.normalize('foo/~lib/main'), 'foo/main');
|
72
|
+
t.equal(fooRequire.normalize('foo/~lib/core'), 'foo/core');
|
73
|
+
});
|
@@ -0,0 +1,50 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: Spade - CommonJS Runtime
|
3
|
+
// Copyright: ©2010 Strobe Inc. All rights reserved.
|
4
|
+
// License: Licened under MIT license (see __preamble__.js)
|
5
|
+
// ==========================================================================
|
6
|
+
|
7
|
+
var Ct = require('core-test/sync'),
|
8
|
+
Spade = require('spade').Spade;
|
9
|
+
|
10
|
+
Ct.module('spade: packages');
|
11
|
+
|
12
|
+
Ct.setup(function(t) {
|
13
|
+
t.spade = new Spade();
|
14
|
+
});
|
15
|
+
|
16
|
+
Ct.teardown(function(t) {
|
17
|
+
delete t.spade;
|
18
|
+
});
|
19
|
+
|
20
|
+
Ct.test('should find registered package', function(t) {
|
21
|
+
|
22
|
+
var spade = t.spade;
|
23
|
+
spade.register('PKG', { name: 'PKG' });
|
24
|
+
|
25
|
+
t.equal(spade.package('PKG').name, 'PKG');
|
26
|
+
t.equal(spade.package('PKG/foo/bar').name, 'PKG');
|
27
|
+
|
28
|
+
});
|
29
|
+
|
30
|
+
Ct.test('should respect mappings', function(t) {
|
31
|
+
|
32
|
+
var spade = t.spade;
|
33
|
+
spade.register('PKG', { mappings: { foo: 'FOO' } });
|
34
|
+
|
35
|
+
spade.register('PKG/bar', function(require, exports) {
|
36
|
+
exports.id = require('foo/foo').id;
|
37
|
+
});
|
38
|
+
|
39
|
+
spade.register('FOO/foo', function(r, e) { e.id = 'FOO'; });
|
40
|
+
|
41
|
+
t.equal(spade.require('PKG/bar').id, 'FOO'); // should remap pkg name
|
42
|
+
|
43
|
+
});
|
44
|
+
|
45
|
+
Ct.test('should set default directories', function(t){
|
46
|
+
var spade = t.spade;
|
47
|
+
spade.register('PKG', { name: 'PKG' });
|
48
|
+
|
49
|
+
t.deepEqual(spade.package('PKG').directories, { 'lib': ['lib'] });
|
50
|
+
});
|
@@ -0,0 +1,72 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: Spade - CommonJS Runtime
|
3
|
+
// Copyright: ©2010 Strobe Inc. All rights reserved.
|
4
|
+
// License: Licened under MIT license (see __preamble__.js)
|
5
|
+
// ==========================================================================
|
6
|
+
|
7
|
+
var Ct = require('core-test/sync'),
|
8
|
+
Spade = require('spade').Spade;
|
9
|
+
|
10
|
+
// ..........................................................
|
11
|
+
// BASIC REQUIRE
|
12
|
+
//
|
13
|
+
|
14
|
+
Ct.module('spade: relative require');
|
15
|
+
|
16
|
+
Ct.setup(function(t) {
|
17
|
+
t.spade = new Spade();
|
18
|
+
|
19
|
+
['foo', 'bar'].forEach(function(id) {
|
20
|
+
t.spade.register(id, { "name": id });
|
21
|
+
});
|
22
|
+
|
23
|
+
// register some dummy modules. These will just set an 'id' prop on exports
|
24
|
+
['foo/bar', 'bar/main', 'foo/bar/baz'].forEach(function(id) {
|
25
|
+
t.spade.register(id, function(r, e) { e.id = id; });
|
26
|
+
});
|
27
|
+
|
28
|
+
});
|
29
|
+
|
30
|
+
Ct.teardown(function(t) {
|
31
|
+
delete t.spade;
|
32
|
+
});
|
33
|
+
|
34
|
+
Ct.test('require absolute', function(t) {
|
35
|
+
var spade = t.spade;
|
36
|
+
|
37
|
+
spade.register('blah/main', function(require, e) {
|
38
|
+
e.found = require('foo/bar').id;
|
39
|
+
});
|
40
|
+
|
41
|
+
t.equal(spade.require('blah').found, 'foo/bar');
|
42
|
+
});
|
43
|
+
|
44
|
+
Ct.test('require relative top level', function(t) {
|
45
|
+
var spade = t.spade;
|
46
|
+
spade.register('blah/main', function(require, e) {
|
47
|
+
e.found = require('../bar').id;
|
48
|
+
});
|
49
|
+
|
50
|
+
t.equal(spade.require('blah').found, 'bar/main');
|
51
|
+
});
|
52
|
+
|
53
|
+
Ct.test('require relative nested', function(t) {
|
54
|
+
var spade = t.spade;
|
55
|
+
spade.register('foo/blah', function(require, e) {
|
56
|
+
e.found = require('./bar').id;
|
57
|
+
});
|
58
|
+
|
59
|
+
t.equal(spade.require('foo/blah').found, 'foo/bar');
|
60
|
+
});
|
61
|
+
|
62
|
+
Ct.test('require relative up nested', function(t) {
|
63
|
+
var spade = t.spade;
|
64
|
+
spade.register('bar/blah', function(require, e) {
|
65
|
+
e.found = require('../foo/bar/baz').id;
|
66
|
+
});
|
67
|
+
|
68
|
+
t.equal(spade.require('bar/blah').found, 'foo/bar/baz');
|
69
|
+
});
|
70
|
+
|
71
|
+
|
72
|
+
Ct.run();
|