Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Tests relying on .bashrc being loaded not working

未关闭
#275 0 条评论 2 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
35/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
停滞
技术栈
bash, docker

调研方向

从 issue 中描述的 commandTests 执行路径和 setup entrypoint 行为开始,使用提供的 Debian Dockerfile 和 YAML 用例进行复现。比较直接命令、bash -c、source .bashrc 以及 setup entrypoints 的环境处理;当相关测试始终观察到 FOO=BAR 时即表示完成。

由索引模型根据 Issue 内容生成。

描述

Hi all.
First of all... great library, really like the simplicity of it.

We have a fairly rich docker container that makes heavy use of bash scripting to dynamically define env variables in the ~/,bashrc. After trying all kind of things for the last days I cannot get container structure tests to work in the context of the bashrc. Whatever I do, the env vars seem to be undefined.

Here's an example Dockerfile I wrote up:

FROM debian:buster

RUN echo "export FOO=BAR" >> /root/.bashrc
RUN echo "echo 'bashrc loaded!'" >> ~/.bashrc

# this is strictly seen not necessary, but it forces the bashrc to be always loaded, not just in interactive mode and suppresses a related warning:
ENV BASH_ENV=/root/.bashrc

These are my example tests - they all fail.
The output indicates that the .bashrc is actually loaded, but the actual test seems to run separately under a different context - FOO seems never defined in the test context and the output of $FOO is always blank.

schemaVersion: 2.0.0

commandTests:
  - name: "echo FOO"
    command: echo
    args: [ "$FOO" ]
    expectedOutput: [ "BAR" ]
  - name: "echo FOO using bash -c wrapper and enumerated args"
    command: "bash"
    args:
      - -c
      - "echo $FOO"
    expectedOutput: [ "BAR" ]
  - name: "echo FOO using bash -c wrapper and string array args"
    command: "bash"
    args: ["-c", "echo $FOO"]
    expectedOutput: [ "BAR" ]
  - name: "echo FOO using bash -c wrapper, pipe and source .bashrc"
    command: "bash"
    args:
      - -c
      - |
          source ~/.bashrc &&
          echo $FOO
    expectedOutput: [ "BAR" ]

I also tried to specify a custom entry point using setup: [["entrypoint.sh"]] with the same result.
entrypoint.sh:

#!/bin/bash
source /root/.bashrc

Any help is greatly appreciated!
We already wrote fair a bit of non-bash tests, but cannot use this framework without proper bash support :(

主要语言
Go
星标
2.5k
派生
213
PR 合并指标
30 天内没有已合并 PR

环境准备

  • 提供 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

GoogleContainerTools/container-structure-test 的其他 Issue

查看 GoogleContainerTools/container-structure-test 的全部 Issue

相似的 Issue

更多 Go Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。