Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为使用Git的ruby脚本编写rspec测试_Ruby_Git_Unit Testing_Rspec - Fatal编程技术网

如何为使用Git的ruby脚本编写rspec测试

如何为使用Git的ruby脚本编写rspec测试,ruby,git,unit-testing,rspec,Ruby,Git,Unit Testing,Rspec,我有一个Ruby脚本,用于检查git repo和url端点上的文件之间的更改。如果存在变更,则提交变更并将其推送到回购协议。我想为这个脚本编写rspec测试,但我在理解如何做时遇到了困难,因为我不希望这些测试实际将任何内容推送到实际的Git repo。我想我需要建立某种模拟存储库,但我不完全确定。任何关于如何最好地为这样一个脚本编写单元测试的建议都将不胜感激 我认为您可以利用这样一个事实,即推送到本地“裸”存储库是完全合法的,即您需要以下步骤: 创建一个“裸”存储库repo1(即没有工作副本的存

我有一个Ruby脚本,用于检查git repo和url端点上的文件之间的更改。如果存在变更,则提交变更并将其推送到回购协议。我想为这个脚本编写rspec测试,但我在理解如何做时遇到了困难,因为我不希望这些测试实际将任何内容推送到实际的Git repo。我想我需要建立某种模拟存储库,但我不完全确定。任何关于如何最好地为这样一个脚本编写单元测试的建议都将不胜感激

我认为您可以利用这样一个事实,即推送到本地“裸”存储库是完全合法的,即您需要以下步骤:

  • 创建一个“裸”存储库
    repo1
    (即没有工作副本的存储库,它完全由
    .git
    文件夹的内容组成)
  • repo1
    克隆常规存储库
    repo2
  • 像通常在
    repo2
    中那样进行任何更改(添加、提交、推送)。检查推送是否成功
  • 检查
    repo1
    中的数据是否也可用
  • 以下是我的
    /tmp
    目录中的控制台会话示例:

    ruby-2.2.0 in /tmp ♥ mkdir repo1
    ruby-2.2.0 in /tmp ♥ cd repo1 
    ruby-2.2.0 in /tmp/repo1 ♥ git init --bare
    Initialized empty Git repository in /private/tmp/repo1/
    ruby-2.2.0 in /tmp/repo1 ♥ cd ..
    ruby-2.2.0 in /tmp ♥ git clone repo1 repo2
    Cloning into 'repo2'...
    warning: You appear to have cloned an empty repository.
    done.
    ruby-2.2.0 in /tmp ♥ cd repo2 
    ruby-2.2.0 in /tmp/repo2 on master ♥ git remote -v
    origin  /tmp/repo1 (fetch)
    origin  /tmp/repo1 (push)
    ruby-2.2.0 in /tmp/repo2 on master ♥ cd ..
    ruby-2.2.0 in /tmp ♥ cd -
    /tmp/repo2
    ruby-2.2.0 in /tmp/repo2 on master ♥ echo 'ohai!' >> readme.txt
    ruby-2.2.0 in /tmp/repo2 on master ♥ git add readme.txt 
    ruby-2.2.0 in /tmp/repo2 on master ♥ git commit
    [master (root-commit) 1f1fb96] First commit
     1 file changed, 1 insertion(+)
     create mode 100644 readme.txt
    ruby-2.2.0 in /tmp/repo2 on master ♥ git push
    Counting objects: 3, done.
    Writing objects: 100% (3/3), 227 bytes | 0 bytes/s, done.
    Total 3 (delta 0), reused 0 (delta 0)
    To /tmp/repo1
     * [new branch]      master -> master
    ruby-2.2.0 in /tmp/repo2 on master ♥ git log
    commit 1f1fb96deaaf15fa33f1682d87d85014b59b36db
    Author: Alexey Shein <alexey.shein.dev@gmail.com>
    Date:   Tue Sep 22 01:22:12 2015 +0500
    
        First commit
    ruby-2.2.0 in /tmp/repo2 on master ♥ cd ..
    ruby-2.2.0 in /tmp ♥ cd repo1 
    ruby-2.2.0 in /tmp/repo1 ♥ ls
    HEAD  config  description  hooks  info  objects  refs
    ruby-2.2.0 in /tmp/repo1 ♥ git log
    commit 1f1fb96deaaf15fa33f1682d87d85014b59b36db
    Author: Alexey Shein <alexey.shein.dev@gmail.com>
    Date:   Tue Sep 22 01:22:12 2015 +0500
    
        First commit
    ruby-2.2.0 in /tmp/repo1 ♥ 
    
    /tmp中的ruby-2.2.0♥ mkdir报告1 ruby-2.2.0in/tmp♥ cd报告1 ruby-2.2.0in/tmp/repo1♥ git init——裸 已在/private/tmp/repo1中初始化空Git存储库/ ruby-2.2.0in/tmp/repo1♥ 光盘 ruby-2.2.0in/tmp♥ git克隆repo1 repo2 克隆到“repo2”。。。 警告:您似乎克隆了一个空存储库。 完成。 ruby-2.2.0in/tmp♥ cd报告2 master上的ruby-2.2.0 in/tmp/repo2♥ git远程-v 来源/tmp/repo1(提取) 原点/tmp/repo1(推送) master上的ruby-2.2.0 in/tmp/repo2♥ 光盘 ruby-2.2.0in/tmp♥ 光盘- /tmp/2 master上的ruby-2.2.0 in/tmp/repo2♥ 回音“ohai!”>>自述文件 master上的ruby-2.2.0 in/tmp/repo2♥ git add readme.txt master上的ruby-2.2.0 in/tmp/repo2♥ git提交 [master(root提交)1f1fb96]第一次提交 1个文件已更改,1个插入(+) 创建模式100644 readme.txt master上的ruby-2.2.0 in/tmp/repo2♥ git推送 计数对象:3,完成。 写入对象:100%(3/3),227字节| 0字节/秒,完成。 总计3(增量0),重复使用0(增量0) 至/tmp/repo1 *[新分支]主控->主控 master上的ruby-2.2.0 in/tmp/repo2♥ 吉特日志 提交1f1fb96deaaf15fa33f1682d87d85014b59b36db 作者:Alexey Shein 日期:2015年9月22日星期二01:22:12+0500 第一次提交 master上的ruby-2.2.0 in/tmp/repo2♥ 光盘 ruby-2.2.0in/tmp♥ cd报告1 ruby-2.2.0in/tmp/repo1♥ ls 头部配置描述挂钩信息对象参考 ruby-2.2.0in/tmp/repo1♥ 吉特日志 提交1f1fb96deaaf15fa33f1682d87d85014b59b36db 作者:Alexey Shein 日期:2015年9月22日星期二01:22:12+0500 第一次提交 ruby-2.2.0in/tmp/repo1♥
    您的代码如何与Git存储库交互?您是在使用gem,还是在执行
    git
    命令,例如
    exec(“git…”)
    ?脚本使用ruby-git-gem: