英文:
Regression testing Issue [make installcheck]
问题
用于回归测试的部分:
makefile 的代码如下:
EXTENSION = my_extension
DATA = my_extension--1.0.sql
REGRESS = my_extension--regress.sql
PG_CONFIG  ?= pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS)
回归测试 SQL 文件 my_extension--regress.sql:
-- 用于 my_extension 的回归测试脚本
-- 创建 my_table 表
CREATE TABLE my_table (
  id SERIAL PRIMARY KEY,
  name VARCHAR(100) NOT NULL
);
-- 测试 my_function 函数
SELECT my_function();
-- 验证 my_table 表中的数据
SELECT * FROM my_table;
在运行 my_extension 上的 make installcheck 后,出现错误:
尝试设置环境变量 PGUSER
PGUSER=postgres make installcheck
收到以下错误:
echo "+++ regress install-check in  +++" && /Users/spartacus/.pgenv/pgsql-15.0/lib/pgxs/src/makefiles/../../src/test/regress/pg_regress --inputdir=./ --bindir='/Users/spartacus/.pgenv/pgsql-15.0/bin'    --dbname=contrib_regression my_extension--regress
+++ regress install-check in  +++
(使用 Unix 套接字上的 postmaster,默认端口)
============== 删除数据库 "contrib_regression" ==============
SET
DROP DATABASE
============== 创建数据库 "contrib_regression" ==============
CREATE DATABASE
ALTER DATABASE
ALTER DATABASE
ALTER DATABASE
ALTER DATABASE
ALTER DATABASE
ALTER DATABASE
============== 运行回归测试查询        ==============
test my_extension--re
gress        ... diff: /Users/spartacus/Desktop/GSoC/CODE/my_extension/expected/my_extension--regress.out: No such file or directory
diff command failed with status 512: diff  "/Users/spartacus/Desktop/GSoC/CODE/my_extension/expected/my_extension--regress.out" "/Users/spartacus/Desktop/GSoC/CODE/my_extension/results/my_extension--regress.out" > "/Users/spartacus/Desktop/GSoC/CODE/my_extension/results/my_extension--regress.out.diff"
make: *** [installcheck] Error 2
GitHub 问题链接:https://github.com/IshaanAdarsh/Postgres-extension-tutorial/issues/15(以获取更多详细信息和扩展代码)
英文:
For the regression tests:
The code for the makefile is:
EXTENSION = my_extension
DATA = my_extension--1.0.sql
REGRESS = my_extension--regress.sql
PG_CONFIG  ?= pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS)
Regression testing SQL file my_extension--regress.sql:
-- regression test script for my_extension
-- Create the my_table table
CREATE TABLE my_table (
  id SERIAL PRIMARY KEY,
  name VARCHAR(100) NOT NULL
);
-- Test the my_function function
SELECT my_function();
-- Verify the data in the my_table table
SELECT * FROM my_table;
After running make installcheck on my_extension getting error:
Tried to set the environment variable PGUSER
PGUSER=postgres make installcheck
Got the error:
echo "+++ regress install-check in  +++" && /Users/spartacus/.pgenv/pgsql-15.0/lib/pgxs/src/makefiles/../../src/test/regress/pg_regress --inputdir=./ --bindir='/Users/spartacus/.pgenv/pgsql-15.0/bin'    --dbname=contrib_regression my_extension--regress
+++ regress install-check in  +++
(using postmaster on Unix socket, default port)
============== dropping database "contrib_regression" ==============
SET
DROP DATABASE
============== creating database "contrib_regression" ==============
CREATE DATABASE
ALTER DATABASE
ALTER DATABASE
ALTER DATABASE
ALTER DATABASE
ALTER DATABASE
ALTER DATABASE
============== running regression test queries        ==============
test my_extension--regress        ... diff: /Users/spartacus/Desktop/GSoC/CODE/my_extension/expected/my_extension--regress.out: No such file or directory
diff command failed with status 512: diff  "/Users/spartacus/Desktop/GSoC/CODE/my_extension/expected/my_extension--regress.out" "/Users/spartacus/Desktop/GSoC/CODE/my_extension/results/my_extension--regress.out" > "/Users/spartacus/Desktop/GSoC/CODE/my_extension/results/my_extension--regress.out.diff"
make: *** [installcheck] Error 2
Link to the Github issue: https://github.com/IshaanAdarsh/Postgres-extension-tutorial/issues/15 (for more details and the extension code)
答案1
得分: 0
你需要提供 expected/my_extension--regress.out,以便回归测试可以将实际结果与之进行比较。
通常情况下,您可以按照以下步骤进行操作:
- 
运行回归测试并获取您看到的错误消息
 - 
查看
results/my_extension--regress.out,看输出是否符合预期 - 
如果结果满意,将
results/my_extension--regress.out复制到expected/my_extension--regress.out 
英文:
You need to provide expected/my_extension--regress.out so that the regression tests have something to compare the actual results with.
Typically, you proceed like this:
- 
run the regression tests and get the error message you see
 - 
look at
results/my_extension--regress.outand see if the output is as it should be - 
if you are happy with the results, copy
results/my_extension--regress.outtoexpected/my_extension--regress.out 
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论