(t *testing.T)
| 1630 | } |
| 1631 | |
| 1632 | func TestPushImage(t *testing.T) { |
| 1633 | t.Parallel() |
| 1634 | |
| 1635 | // Write a test feature to an in-memory registry. |
| 1636 | testFeature := registrytest.WriteContainer(t, registrytest.New(t), emptyRemoteOpts, "features/test-feature:latest", features.TarLayerMediaType, map[string]any{ |
| 1637 | "install.sh": `#!/bin/sh |
| 1638 | echo "${MESSAGE}" > /root/message.txt`, |
| 1639 | "devcontainer-feature.json": features.Spec{ |
| 1640 | ID: "test-feature", |
| 1641 | Name: "test feature", |
| 1642 | Version: "v0.0.1", |
| 1643 | Options: map[string]features.Option{ |
| 1644 | "message": { |
| 1645 | Type: "string", |
| 1646 | Default: "hello world", |
| 1647 | }, |
| 1648 | }, |
| 1649 | }, |
| 1650 | }) |
| 1651 | |
| 1652 | t.Run("CacheWithoutPush", func(t *testing.T) { |
| 1653 | t.Parallel() |
| 1654 | |
| 1655 | srv := gittest.CreateGitServer(t, gittest.Options{ |
| 1656 | Files: map[string]string{ |
| 1657 | ".devcontainer/Dockerfile": fmt.Sprintf(`FROM %s |
| 1658 | USER root |
| 1659 | ARG WORKDIR=/ |
| 1660 | WORKDIR $WORKDIR |
| 1661 | ENV FOO=bar |
| 1662 | RUN echo $FOO > /root/foo.txt |
| 1663 | RUN date --utc > /root/date.txt`, testImageAlpine), |
| 1664 | ".devcontainer/devcontainer.json": fmt.Sprintf(`{ |
| 1665 | "name": "Test", |
| 1666 | "build": { |
| 1667 | "dockerfile": "Dockerfile" |
| 1668 | }, |
| 1669 | "features": { |
| 1670 | %q: {} |
| 1671 | } |
| 1672 | }`, testFeature), |
| 1673 | }, |
| 1674 | }) |
| 1675 | |
| 1676 | // Given: an empty registry |
| 1677 | testReg := setupInMemoryRegistry(t, setupInMemoryRegistryOpts{}) |
| 1678 | testRepo := testReg + "/test" |
| 1679 | ref, err := name.ParseReference(testRepo + ":latest") |
| 1680 | require.NoError(t, err) |
| 1681 | _, err = remote.Image(ref) |
| 1682 | require.ErrorContains(t, err, "NAME_UNKNOWN", "expected image to not be present before build + push") |
| 1683 | |
| 1684 | // When: we run envbuilder with GET_CACHED_IMAGE |
| 1685 | _, err = runEnvbuilder(t, runOpts{env: []string{ |
| 1686 | envbuilderEnv("GIT_URL", srv.URL), |
| 1687 | envbuilderEnv("CACHE_REPO", testRepo), |
| 1688 | envbuilderEnv("GET_CACHED_IMAGE", "1"), |
| 1689 | }}) |
nothing calls this directly
no test coverage detected