制造用于单元测试的git repo

时间:2014-01-28 03:02:09

标签: node.js git mocha

我在节点中运行,该节点应该返回git中最近修改过的(1天)文件列表。该功能基本上像

git diff --name-only $(git rev-list -n1 --before="1 day ago" HEAD)

git log --since="1.day" --name-only --oneline

所以,我想验证函数是否完成它应该做的事情。所以,在摩卡测试中,我有:

  var tmp = require('tmp');
  describe('Git test', function() {
  var today = new Date();
  var threedays = new Date();
  var yesterday = new Date();

  threedays.setDate(today.getDate() - 3);
  yesterday.setDate(today.getDate() - 1);    

  beforeEach(function(done) {
    tmp.dir({ template: '/tmp/test-XXXXXX', unsafeCleanup: true },
      function _tempDirCreated(err, path) {
        if (err) { throw err; }
        repo = path;
        sh.exec('cd ' + repo + '; git init');
        sh.exec('touch ' + repo + '/file1');
        sh.exec('touch ' + repo + '/file2');
        //sh.exec('touch ' + repo + '/file3');
        //sh.exec('cd ' + repo + '; git add file3; GIT_COMMITTER_DATE="' + 
        //  threedays.toISOString() +
        //  '" git commit -m "file3" file3 --date ' + threedays.toISOString());
        sh.exec('cd ' + repo + '; git add file2; GIT_COMMITTER_DATE="' +
          yesterday.toISOString() + '" git commit -m "FILE2" file2 --date ' +
          yesterday.toISOString());
        sh.exec('cd ' + repo + '; git add file1; git commit -m "FILE1" file1');
        sessionConfig = new Session(repo, repo);
        done();
      }
    );
  });

我注意到的是,在我创建git repo之后,仅返回最近修改过的文件的git命令似乎没有返回结果。但是,如果我添加file3(注释部分),该命令将起作用。

我想要最终创建的是具有旧提交和新提交的repo以及仅返回最近修改过的文件的命令。任何建议表示赞赏!

1 个答案:

答案 0 :(得分:1)

事实证明,在转换为ISO字符串时,获取“昨天”在处理时区方面存在一些问题。

我将昨天修改为午夜,现在一切正常。