feat: 초기 프로젝트 설정 및 룰.md 파일 추가

This commit is contained in:
2025-07-28 09:53:31 +09:00
commit 09a4d38512
8165 changed files with 1021855 additions and 0 deletions

View File

@@ -0,0 +1,23 @@
var expect = require('chai').expect;
var cliCommand = require("../../lib/cliCommand.js");
describe('Functional: cliCommand', function () {
it("ok", function () {
var target, folder;
if (/^win/.exec(process.platform)) {
folder = "C:\\Program Files\\nodejs\\foobar";
target = "cd \"" + folder + "\" && git status -s";
}
else {
folder = "/etc/node/foobar";
target = "cd '" + folder + "';LC_ALL=en_US.UTF-8 git status -s";
}
var result = cliCommand(folder, "git status -s");
expect(target).to.eq(result);
});
});

View File

@@ -0,0 +1,207 @@
var expect = require('chai').expect;
var shell = require('shelljs');
var vizion = require("../../index.js");
var p = require('path');
if (shell.which('git') === null) process.exit(0);
describe('Functional: Git', function () {
var testRepoPath = '';
var tmp_meta = {};
before(function (done) {
shell.cd('test/fixtures');
shell.rm('-rf', 'angular-bridge');
shell.exec('git clone https://github.com/Unitech/angular-bridge.git', () => {
testRepoPath = p.join(shell.pwd().toString(), 'angular-bridge');
done()
});
});
after(function () {
shell.rm('-rf', 'angular-bridge');
shell.cd('../..'); // go back to root
});
it('should recursively downgrade to first commit', function (done) {
var callback = function (err, meta) {
if (err) {
return done(err);
}
if (meta.success === true) {
vizion.prev({folder: testRepoPath}, callback);
}
else {
expect(meta.success).to.eq(false);
vizion.analyze({folder: testRepoPath}, function (err, meta) {
if (err) {
return done(err);
}
expect(meta.prev_rev).to.eq(null);
expect(meta.revision).to.eq('445c0b78e447e87eaec2140d32f67652108b434e');
done();
});
}
};
vizion.prev({folder: testRepoPath}, callback);
});
it('should recursively upgrade to most recent commit', function (done) {
var callback = function (err, meta) {
if (err) {
return done(err);
}
if (meta.success === true) {
vizion.next({folder: testRepoPath}, callback);
}
else {
expect(meta.success).to.eq(false);
vizion.analyze({folder: testRepoPath}, function (err, meta) {
if (err) {
return done(err);
}
expect(meta.next_rev).to.eq(null);
expect(meta.revision).to.eq('d1dee188a0d82f21c05a398704ac3237f5523ca7');
done();
});
}
};
vizion.next({folder: testRepoPath}, callback);
});
describe('at head', function () {
describe('analyze', function () {
it('ok', function (done) {
console.log('start')
vizion.analyze({folder: testRepoPath}, function (err, meta) {
if (err) {
return done(err);
}
expect(meta.type).to.eq('git');
expect(meta.url).to.eq('https://github.com/Unitech/angular-bridge.git');
expect(meta.branch).to.eq('master');
expect(meta.comment).to.eq('Merge pull request #17 from jorge-d/express_4\n\nExpress 4');
expect(meta.unstaged).to.eq(false);
expect(meta.branch).to.eq('master');
expect(meta.remotes).to.deep.eq(['origin']);
expect(meta.remote).to.eq('origin');
expect(meta.branch_exists_on_remote).to.eq(true);
expect(meta.ahead).to.eq(false);
expect(meta.next_rev).to.eq(null);
expect(meta.prev_rev).to.eq('da29de44b4884c595468b6978fb19f17bee76893');
expect(meta.tags).to.deep.eq(['v0.3.4']);
tmp_meta = meta;
done();
});
});
});
describe('isUpToDate', function () {
it('up to date', function (done) {
vizion.isUpToDate({
folder: testRepoPath
}, function (err, meta) {
if (err) {
return done(err);
}
expect(meta.is_up_to_date).to.eq(true);
done();
});
});
});
});
describe('previous commit', function () {
before(function beforeTest(done) {
vizion.revertTo({
folder: testRepoPath,
revision: 'eb488c1ca9024b6da2d65ef34dc1544244d8c714'
}, function (err, meta) {
if (err) {
return done(err);
}
expect(meta.success).to.eq(true);
done();
});
});
describe('analyze', function () {
it('ok', function it(done) {
vizion.analyze({folder: testRepoPath}, function (err, meta) {
if (err) {
return done(err);
}
expect(meta.type).to.eq('git');
expect(meta.branch).to.eq('master');
expect(meta.comment).to.eq('Fix indentation\n');
expect(meta.unstaged).to.eq(false);
expect(meta.branch).to.eq('master');
expect(meta.remotes).to.deep.eq(['origin']);
expect(meta.remote).to.eq('origin');
expect(meta.branch_exists_on_remote).to.eq(true);
expect(meta.ahead).to.eq(false);
expect(meta.next_rev).to.eq('759120ab5b19953886424b7c847879cf7f4cb28e');
expect(meta.prev_rev).to.eq('0c0cb178a3de0b8c69a81d1fd2f0d72fe0f23a11');
expect(meta.tags).to.deep.eq(['v0.3.4']);
done();
});
});
});
describe('isUpToDate', function () {
it('not up to date', function (done) {
vizion.isUpToDate({
folder: testRepoPath
}, function (err, meta) {
if (err) {
return done(err);
}
expect(meta.is_up_to_date).to.eq(false);
done();
});
});
});
describe('update', function () {
it('should update to latest', function (done) {
vizion.update({
folder: testRepoPath
}, function (err, meta) {
if (err) {
return done(err);
}
expect(meta.success).to.eq(true);
vizion.analyze({folder: testRepoPath}, function (err, meta) {
if (err) {
return done(err);
}
expect(meta.revision).to.eq('d1dee188a0d82f21c05a398704ac3237f5523ca7');
done();
});
});
});
});
});
});

View File

@@ -0,0 +1,61 @@
var assert = require("assert");
var shell = require("shelljs");
var vizion = require("../../index.js");
/*
To enable a sample test suite, remove the _disabled
and fill in the strings. One way to fetch these values is to
create the sample directory, enter it as the directory,
and then run this test suite (npm test).
The test will return the expected value (a blank string),
and the actual value, which can be then used as the string to
test.
*/
var sample = {
svn: {
directory: "./test/fixtures/test_svn/",
url: "https://github.com/jshkurti/vizionar_test",
revision: "r3",
comment: "dat commit though",
branch: "vizionar_test",
update_time: "2014-10-21T12:29:21.289Z"
},
hg: {
directory: "./test/fixtures/test_hg/",
url: "https://jshkurti@bitbucket.org/jshkurti/vizionar_test",
revision: "0:a070c08854c3",
comment: "Initial commit with contributors",
branch: "default",
update_time: "2014-10-21T12:42:31.017Z"
}
};
describe("vizion.analyze()", function() {
if (shell.which('svn')) {
it.skip("Pulling from Subversion", function(done) {
this.timeout(5000);
vizion.analyze({folder: sample.svn.directory}, function(err, metadata) {
assert.equal(err, null);
assert.equal(metadata.url, sample.svn.url);
assert.equal(metadata.revision, sample.svn.revision);
assert.equal(metadata.comment, sample.svn.comment);
assert.equal(metadata.branch, sample.svn.branch);
done();
});
});
}
if (shell.which('hg')) {
it("Pulling from Mercurial", function(done) {
this.timeout(5000);
vizion.analyze({folder: sample.hg.directory}, function(err, metadata) {
assert.equal(err, null);
assert.equal(metadata.url, sample.hg.url);
assert.equal(metadata.revision, sample.hg.revision);
assert.equal(metadata.comment, sample.hg.comment);
assert.equal(metadata.branch, sample.hg.branch);
done();
});
});
}
});