Skip to content

xmake test -v的输出被错误转义 #7370

@Stehsaer

Description

@Stehsaer

Xmake 版本

v3.0.7+HEAD.77d94ad

操作系统版本和架构

Linux DebianDev 6.12.73+deb13-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.73-1 (2026-02-17) x86_64 GNU/Linux

描述问题

xmake test -v输出的测试程序stdout等标准流输出时,将流中的输出错误地进行了转义(如$(tmpdir)被按照xmake内置变量规则,替换为了路径)

期待的结果

测试程序的输出应当保持原样

工程配置

xmake.lua:

add_rules("mode.debug", "mode.release")

target("test_fault")
    set_kind("binary")
    add_files("src/*.cpp")
    add_tests("wrong-output")

src/main.cpp:

#include <iostream>

int main()
{
	std::cout << "$(tmpdir)" << '\n';
	return 0;
}

执行xmake test -v时输出:

[ 23%]: cache compiling.release src/main.cpp
/usr/local/bin/g++ -c -m64 -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG -o build/.objs/test_fault/linux/x86_64/release/src/main.cpp.o src/main.cpp
[ 47%]: linking.release test_fault
/usr/local/bin/g++ -o build/linux/x86_64/release/test_fault build/.objs/test_fault/linux/x86_64/release/src/main.cpp.o -m64 -s
running tests ...
[  0%]: running.test test_fault/wrong-output

report of tests:
[100%]: test_fault/wrong-output  passed 0.002s
stdout: /tmp/.xmake1000/260304


100% tests passed, 0 test(s) failed out of 1, spent 0.002s

注意stdout:后,原本应该为$(tmpdir)的被转换为了实际路径

附加信息和错误日志

没有进一步日志,工程例子已经足够说明问题

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions