如果没有Git知道代码,代码是否可以改变?

时间:2011-10-31 15:44:44

标签: ruby-on-rails git unit-testing testing ssd

今天早上我进行了测试,有2次失败。但我几天没有更改任何代码,所有测试都通过了。

根据Git,没有变化(coverage.data除外,它是测试输出)。 gitk没有显示任何其他变化。

Git如何知道代码何时发生变化?这可能是由SSD故障/错误造成的吗?

找出发生的事情的最佳方法是什么?

编辑:使用单元测试框架在Ruby on Rails中工作。

3 个答案:

答案 0 :(得分:10)

我首先要弄清楚测试失败的原因,这可能会为你提供一些关于他们之前如何通过的线索。有时这是一个时间问题,间歇性故障,测试工具外部的东西,数据变化,日期或时间的变化,各种各样的东西。

答案 1 :(得分:9)

我看到迈克发现了你的问题(请给小答案框打勾)。

是的,代码可以在没有Git知道的情况下进行更改。导致失败的文件(可能是临时测试文件或夹具)可以在.gitignore或.git / info / exclude中忽略。执行git clean -dxf会清除结帐清除git不知道的任何内容。 git status --ignored将显示git忽略的文件。如果是这种情况,您希望在测试运行器中添加更好的测试清理。

对于后代,这里是测试可能失败的方法的简短列表,如果没有任何代码更改可见git:

  • “临时”测试文件和固定装置可能很脏。
  • “临时”数据库和表格可能很脏。
  • 对时间或日期敏感。
  • 它使用网络资源并进行了更改。
  • 编译器已更改。
  • 使用的已安装库已更改。
    • 库使用的库已更改。
  • 内核已更改。
  • 使用的任何服务器(数据库,Web服务器等)都已更改。
  • 它使用并行处理,有时只会出现细微的错误。
  • 磁盘(或临时文件所在的文件系统)已满。
  • 磁盘(或临时文件所在的文件系统)已损坏。
  • 您的内存/磁盘/进程/文件句柄配额已减少。
  • 机器内存不足。
  • 机器已用尽文件句柄。
  • 它使用具有随机生成数据的灯具,并生成一些漏洞。

答案 2 :(得分:2)

如果没有Git知道它并将其记录到某处,您的存储库就无法进行任何更改,因为必须检索日志才能获得repo文件。我会检查是否故障不是由机器上的某些东西造成的,这些东西不应该与测试同时运行,或者它可能是你不期望的竞争条件。