Unify the copy-to-container methods and add reading a file from a container
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 5/5
- 预计耗时
- 一周以上
- 新手友好度
- 42/100
- Issue 类型
- 功能
- 描述清晰度
- 基本清楚
- 活跃度
- 活跃
- 技术栈
- docker, node.js, typescript
调研方向
Start with the four listed files and trace how copy methods, options, and StartedTestContainer are implemented and forwarded. Review #1522 and coordinate with #1518 before changing the shared copy API. Done means unified before and after start copy methods with matching options and behavior, a way to read one file, and deprecated aliases for existing methods.
由索引模型根据 Issue 内容生成。
描述
What happens
Copying into a container is spread over nine methods with slightly different shapes.
Before start:
withCopyFilesToContainer(files[])withCopyDirectoriesToContainer(directories[])withCopyContentToContainer(contents[])withCopyArchivesToContainer(archives[])withCopyToContainerOptions(options)
After start:
copyFilesToContainer(files[])copyDirectoriesToContainer(directories[])copyContentToContainer(contents[])copyArchiveToContainer(tar, target?, options?)
The two sides do not behave the same (from reading the code):
DirectoryToCopy.modeis applied before start and ignored after start.CopyToContainerOptionsapplies to every copy before start, but after start onlycopyArchiveToContaineraccepts it.- The archive method is plural with an array before start, singular with positional arguments after.
Copying out is limited to copyArchiveFromContainer(path), which resolves to a tar stream. Reading one file's content means bringing a tar parser.
Expected
- One
withCopyToContainerand onecopyToContainerthat accept a list of entries, each a host path, inline content or an archive, withtargetandmode. The same options and behaviour on both sides. - A way to read a single file from a container, for example
readFile(path): Promise<Buffer>orcopyFileFromContainer(path, destination). - The existing methods stay as deprecated aliases.
Where
packages/testcontainers/src/test-container.tspackages/testcontainers/src/generic-container/generic-container.tspackages/testcontainers/src/generic-container/started-generic-container.tspackages/testcontainers/src/types.ts
Notes
- Java has
withCopyToContainer(Transferable, containerPath)andwithCopyFileToContainer(MountableFile, containerPath), pluscopyFileFromContainer(containerPath, destinationPath)and a variant that passes the file'sInputStreamto a function. Go hasFiles []ContainerFileon the request andCopyFileFromContainer, which returns the file's content. - Related: #1526. The
modefield should say it is an octal permission.
Dependencies
- Stack on #1522: the reuse hash has to cover copied files. Changing how copies are stored first would move that target.
- Coordinate with #1518: for the old method names.
- Changes
StartedTestContainer, which today means the interface,StartedGenericContainerand the forwarder onAbstractStartedContainer. Several other issues do the same. The edits do not overlap, so they can go in parallel.
- 主要语言
- TypeScript
- 星标
- 2.6k
- 派生
- 274
- 平均合并
- 1 天 14 小时
- 30 天内合并 PR
- 44
环境准备
在浏览器里用你自己的 GitHub 账号启动这个项目的开发容器。
- 提供 Dockerfile 或 Docker Compose 文件
- 没有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
testcontainers/testcontainers-node 的其他 Issue
-
enhancement minor
难度 2/5 1-3 小时 新手友好度 74/100
testcontainers/testcontainers-node#1539 ·
维护者通常 1 天内回复
-
enhancement minor
难度 2/5 1-3 小时 新手友好度 82/100
testcontainers/testcontainers-node#1533 ·
维护者通常 1 天内回复
-
enhancement minor
难度 2/5 1-3 小时 新手友好度 77/100
testcontainers/testcontainers-node#1531 ·
维护者通常 1 天内回复
-
enhancement minor
难度 2/5 1-3 小时 新手友好度 76/100
testcontainers/testcontainers-node#1529 ·
维护者通常 1 天内回复
-
enhancement minor
难度 2/5 1-3 小时 新手友好度 78/100
testcontainers/testcontainers-node#1528 ·
维护者通常 1 天内回复
查看 testcontainers/testcontainers-node 的全部 Issue
相似的 Issue
-
Add: VIVE TV未关闭approved check:passed streams:add
难度 1/5 1 小时以内 新手友好度 72/100
维护者通常 1 天内回复
-
bug needs-triage
难度 2/5 1-3 小时 新手友好度 62/100
Fission-AI/OpenSpec#2084 ·
维护者通常 2 天内回复
-
Contrib indemnité de départ à la retraite : faire le pont avec le simulateur sur la page générique未关闭P1
难度 2/5 1-3 小时 新手友好度 62/100
SocialGouv/code-du-travail-numerique#7561 ·
维护者通常 1 天内回复
-
beginner bug
难度 1/5 1 小时以内 新手友好度 88/100
hiero-ledger/hiero-sdk-js#4517 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 85/100
kubernetes-sigs/headlamp#7950 ·
维护者通常 3 天内回复