golang subprocess tests

简介: golang Subprocess testsSometimes you need to test the behavior of a process, not just a function.func Crasher() { fmt.

golang Subprocess tests

Sometimes you need to test the behavior of a process, not just a function.

func Crasher() {
    fmt.Println("Going down in flames!")
    os.Exit(1)
}

To test this code, we invoke the test binary itself as a subprocess:

func TestCrasher(t *testing.T) {
    if os.Getenv("BE_CRASHER") == "1" {
        Crasher()
        return
    }
    cmd := exec.Command(os.Args[0], "-test.run=TestCrasher")
    cmd.Env = append(os.Environ(), "BE_CRASHER=1")
    err := cmd.Run()
    if e, ok := err.(*exec.ExitError); ok && !e.Success() {
        return
    }
    t.Fatalf("process ran with err %v, want exit status 1", err)
}

核心技巧在于os.args[0]可以获取到真实的可执行 test 程序,从而改变环境变量.

目录
相关文章
|
存储 JSON 关系型数据库
Pandas载入txt、csv、Excel、JSON、数据库文件讲解及实战(超详细 附源码)
Pandas载入txt、csv、Excel、JSON、数据库文件讲解及实战(超详细 附源码)
645 0
|
6月前
|
数据采集 机器学习/深度学习 传感器
传统MES向AI智能MES转型的技术难点是什么?
从传统MES(制造执行系统)向AI智能MES转型的过程,绝非简单的“软件升级”或“模块叠加”,而是一场涉及数据架构、算法模型、业务逻辑乃至组织文化的深层重构。
417 1
|
9月前
|
项目管理 开发者
业务架构图
本文系统阐述了业务架构图的核心概念与绘制方法,涵盖业务定义、架构分层(组织层、应用层、能力层、基础层)、模块划分及功能分解,并结合医院场景示例,说明如何通过分层、分模块、分功能构建清晰的业务视图,提升客户理解与开发效率。
|
人工智能 数据可视化 安全
提升效率的秘密武器:10款最佳会议纪要与任务衔接工具推荐
【企业会议纪要落地难题及解决方案】 当前企业普遍面临会议纪要执行难的问题:1)会议记录与任务执行脱节,手动转化效率低;2)责任分配不清导致重复沟通;3)缺乏追踪机制造成任务拖延。针对这些痛点,市场上涌现出10款专业工具(如飞书、Teambition等),通过智能记录、任务自动转化、进度追踪等功能实现;会议-执行"闭环管理。选型需考虑场景适配、系统对接和易用性,建议配合五步流程(模板制定-任务指派-自动提醒-定期复盘)使用。这类工具不仅能提升30%以上执行效率,更能帮助企业建立;
1110 2
|
人工智能 自然语言处理 搜索推荐
云上玩转DeepSeek系列之三:PAI-RAG集成联网搜索,构建企业级智能助手
本文将为您带来“基于 PAI-RAG 构建 DeepSeek 联网搜索+企业级知识库助手服务”解决方案,PAI-RAG 提供全面的生态能力,支持一键部署至企业微信、微信公众号、钉钉群聊机器人等,助力打造多场景的AI助理,全面提升业务效率与用户体验。
|
负载均衡 调度 芯片
SMP多核启动(一):spin-table
SMP多核启动(一):spin-table
1026 0
|
监控 IDE 开发工具
「Mac畅玩鸿蒙与硬件5」鸿蒙开发环境配置篇5 - 熟悉DevEco Studio界面
本篇将详细介绍 DevEco Studio 的界面布局和主要功能模块,帮助开发者熟悉开发环境,提高开发效率。通过了解各个界面区域,开发者可以顺利找到所需工具,流畅开展鸿蒙应用开发。
732 2
「Mac畅玩鸿蒙与硬件5」鸿蒙开发环境配置篇5 - 熟悉DevEco Studio界面
|
算法 Java Go
【经典算法】LeetCode 69. x 的平方根(Java/C/Python3/Golang实现含注释说明,Easy)
【经典算法】LeetCode 69. x 的平方根(Java/C/Python3/Golang实现含注释说明,Easy)
415 1
|
存储 数据可视化 数据处理
单细胞Seurat - 数据处理 (2)
单细胞Seurat - 数据处理 (2)
1014 1