【发布时间】:2016-12-06 06:54:53
【问题描述】:
我正在使用 pg-promise 进行一些测试,涉及删除一个表并重新创建一个表。
所有测试都在我的本地机器上通过。但是在travis-ci上,似乎跳过了所有DROP TABLE ... SQL,导致测试失败。
有人知道为什么吗?是权限问题吗?
有没有办法让我进一步调试,比如连接到travis-ci postgres 服务器?
更新:我没有放任何代码,因为所有测试都通过我的本地环境,所以我认为这只是一个travis-ci 问题。以下是我认为traivs-ci 正在跳过的部分。
afterEach('cleanup tables', (done) => {
db.none('DROP TABLE $1~', 'syncTest')
.then(done)
.catch(() => done());
});
beforeEach('cleanup tables', (done) => {
db.none('DROP TABLE $1~', 'syncTest')
.then(done)
.catch(() => done());
});
Update2:经过进一步测试,原来测试失败是因为
db.one('SELECT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name=$1)', [tableName])
没有返回预期值。该查询在 travis 上返回 { '?column?': false },但在我的本地环境中返回 { exists: false }。
这是travis-ci 的问题吗?还是 postgres 版本问题?
【问题讨论】:
-
一个通常包含一些代码;)
-
@vitaly-t 我添加了一些可能相关的代码。
-
@vitaly-t 如果您有更多时间调查,这里是 repo。 github.com/xiaofan2406/pglize
标签: postgresql travis-ci pg-promise