A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/coder/coder/commit/529fb5083c498f119bba603830cb12e0a70f6eb6 below:

support apps for dev container agents (#… · coder/coder@529fb50 · GitHub

@@ -68,7 +68,7 @@ type fakeDevcontainerCLI struct {

68 68

execErrC chan func(cmd string, args ...string) error // If set, send fn to return err, nil or close to return execErr.

69 69

readConfig agentcontainers.DevcontainerConfig

70 70

readConfigErr error

71 -

readConfigErrC chan error

71 +

readConfigErrC chan func(envs []string) error

72 72

}

73 73 74 74

func (f *fakeDevcontainerCLI) Up(ctx context.Context, _, _ string, _ ...agentcontainers.DevcontainerCLIUpOptions) (string, error) {

@@ -99,14 +99,14 @@ func (f *fakeDevcontainerCLI) Exec(ctx context.Context, _, _ string, cmd string,

99 99

return f.execErr

100 100

}

101 101 102 -

func (f *fakeDevcontainerCLI) ReadConfig(ctx context.Context, _, _ string, _ ...agentcontainers.DevcontainerCLIReadConfigOptions) (agentcontainers.DevcontainerConfig, error) {

102 +

func (f *fakeDevcontainerCLI) ReadConfig(ctx context.Context, _, _ string, envs []string, _ ...agentcontainers.DevcontainerCLIReadConfigOptions) (agentcontainers.DevcontainerConfig, error) {

103 103

if f.readConfigErrC != nil {

104 104

select {

105 105

case <-ctx.Done():

106 106

return agentcontainers.DevcontainerConfig{}, ctx.Err()

107 -

case err, ok := <-f.readConfigErrC:

107 +

case fn, ok := <-f.readConfigErrC:

108 108

if ok {

109 -

return f.readConfig, err

109 +

return f.readConfig, fn(envs)

110 110

}

111 111

}

112 112

}

@@ -1253,7 +1253,8 @@ func TestAPI(t *testing.T) {

1253 1253

deleteErrC: make(chan error, 1),

1254 1254

}

1255 1255

fakeDCCLI = &fakeDevcontainerCLI{

1256 -

execErrC: make(chan func(cmd string, args ...string) error, 1),

1256 +

execErrC: make(chan func(cmd string, args ...string) error, 1),

1257 +

readConfigErrC: make(chan func(envs []string) error, 1),

1257 1258

}

1258 1259 1259 1260

testContainer = codersdk.WorkspaceAgentContainer{

@@ -1293,13 +1294,15 @@ func TestAPI(t *testing.T) {

1293 1294

agentcontainers.WithSubAgentClient(fakeSAC),

1294 1295

agentcontainers.WithSubAgentURL("test-subagent-url"),

1295 1296

agentcontainers.WithDevcontainerCLI(fakeDCCLI),

1297 +

agentcontainers.WithManifestInfo("test-user", "test-workspace"),

1296 1298

)

1297 1299

apiClose := func() {

1298 1300

closeOnce.Do(func() {

1299 1301

// Close before api.Close() defer to avoid deadlock after test.

1300 1302

close(fakeSAC.createErrC)

1301 1303

close(fakeSAC.deleteErrC)

1302 1304

close(fakeDCCLI.execErrC)

1305 +

close(fakeDCCLI.readConfigErrC)

1303 1306 1304 1307

_ = api.Close()

1305 1308

})

@@ -1313,6 +1316,13 @@ func TestAPI(t *testing.T) {

1313 1316

assert.Empty(t, args)

1314 1317

return nil

1315 1318

}) // Exec pwd.

1319 +

testutil.RequireSend(ctx, t, fakeDCCLI.readConfigErrC, func(envs []string) error {

1320 +

assert.Contains(t, envs, "CODER_WORKSPACE_AGENT_NAME=test-container")

1321 +

assert.Contains(t, envs, "CODER_WORKSPACE_NAME=test-workspace")

1322 +

assert.Contains(t, envs, "CODER_WORKSPACE_OWNER_NAME=test-user")

1323 +

assert.Contains(t, envs, "CODER_URL=test-subagent-url")

1324 +

return nil

1325 +

})

1316 1326 1317 1327

// Make sure the ticker function has been registered

1318 1328

// before advancing the clock.

@@ -1453,6 +1463,13 @@ func TestAPI(t *testing.T) {

1453 1463

assert.Empty(t, args)

1454 1464

return nil

1455 1465

}) // Exec pwd.

1466 +

testutil.RequireSend(ctx, t, fakeDCCLI.readConfigErrC, func(envs []string) error {

1467 +

assert.Contains(t, envs, "CODER_WORKSPACE_AGENT_NAME=test-container")

1468 +

assert.Contains(t, envs, "CODER_WORKSPACE_NAME=test-workspace")

1469 +

assert.Contains(t, envs, "CODER_WORKSPACE_OWNER_NAME=test-user")

1470 +

assert.Contains(t, envs, "CODER_URL=test-subagent-url")

1471 +

return nil

1472 +

})

1456 1473 1457 1474

err = api.RefreshContainers(ctx)

1458 1475

require.NoError(t, err, "refresh containers should not fail")

@@ -1603,6 +1620,116 @@ func TestAPI(t *testing.T) {

1603 1620

assert.Contains(t, subAgent.DisplayApps, codersdk.DisplayAppPortForward)

1604 1621

},

1605 1622

},

1623 +

{

1624 +

name: "WithApps",

1625 +

customization: []agentcontainers.CoderCustomization{

1626 +

{

1627 +

Apps: []agentcontainers.SubAgentApp{

1628 +

{

1629 +

Slug: "web-app",

1630 +

DisplayName: "Web Application",

1631 +

URL: "http://localhost:8080",

1632 +

OpenIn: codersdk.WorkspaceAppOpenInTab,

1633 +

Share: codersdk.WorkspaceAppSharingLevelOwner,

1634 +

Icon: "/icons/web.svg",

1635 +

Order: int32(1),

1636 +

},

1637 +

{

1638 +

Slug: "api-server",

1639 +

DisplayName: "API Server",

1640 +

URL: "http://localhost:3000",

1641 +

OpenIn: codersdk.WorkspaceAppOpenInSlimWindow,

1642 +

Share: codersdk.WorkspaceAppSharingLevelAuthenticated,

1643 +

Icon: "/icons/api.svg",

1644 +

Order: int32(2),

1645 +

Hidden: true,

1646 +

},

1647 +

{

1648 +

Slug: "docs",

1649 +

DisplayName: "Documentation",

1650 +

URL: "http://localhost:4000",

1651 +

OpenIn: codersdk.WorkspaceAppOpenInTab,

1652 +

Share: codersdk.WorkspaceAppSharingLevelPublic,

1653 +

Icon: "/icons/book.svg",

1654 +

Order: int32(3),

1655 +

},

1656 +

},

1657 +

},

1658 +

},

1659 +

afterCreate: func(t *testing.T, subAgent agentcontainers.SubAgent) {

1660 +

require.Len(t, subAgent.Apps, 3)

1661 + 1662 +

// Verify first app

1663 +

assert.Equal(t, "web-app", subAgent.Apps[0].Slug)

1664 +

assert.Equal(t, "Web Application", subAgent.Apps[0].DisplayName)

1665 +

assert.Equal(t, "http://localhost:8080", subAgent.Apps[0].URL)

1666 +

assert.Equal(t, codersdk.WorkspaceAppOpenInTab, subAgent.Apps[0].OpenIn)

1667 +

assert.Equal(t, codersdk.WorkspaceAppSharingLevelOwner, subAgent.Apps[0].Share)

1668 +

assert.Equal(t, "/icons/web.svg", subAgent.Apps[0].Icon)

1669 +

assert.Equal(t, int32(1), subAgent.Apps[0].Order)

1670 + 1671 +

// Verify second app

1672 +

assert.Equal(t, "api-server", subAgent.Apps[1].Slug)

1673 +

assert.Equal(t, "API Server", subAgent.Apps[1].DisplayName)

1674 +

assert.Equal(t, "http://localhost:3000", subAgent.Apps[1].URL)

1675 +

assert.Equal(t, codersdk.WorkspaceAppOpenInSlimWindow, subAgent.Apps[1].OpenIn)

1676 +

assert.Equal(t, codersdk.WorkspaceAppSharingLevelAuthenticated, subAgent.Apps[1].Share)

1677 +

assert.Equal(t, "/icons/api.svg", subAgent.Apps[1].Icon)

1678 +

assert.Equal(t, int32(2), subAgent.Apps[1].Order)

1679 +

assert.Equal(t, true, subAgent.Apps[1].Hidden)

1680 + 1681 +

// Verify third app

1682 +

assert.Equal(t, "docs", subAgent.Apps[2].Slug)

1683 +

assert.Equal(t, "Documentation", subAgent.Apps[2].DisplayName)

1684 +

assert.Equal(t, "http://localhost:4000", subAgent.Apps[2].URL)

1685 +

assert.Equal(t, codersdk.WorkspaceAppOpenInTab, subAgent.Apps[2].OpenIn)

1686 +

assert.Equal(t, codersdk.WorkspaceAppSharingLevelPublic, subAgent.Apps[2].Share)

1687 +

assert.Equal(t, "/icons/book.svg", subAgent.Apps[2].Icon)

1688 +

assert.Equal(t, int32(3), subAgent.Apps[2].Order)

1689 +

},

1690 +

},

1691 +

{

1692 +

name: "AppDeduplication",

1693 +

customization: []agentcontainers.CoderCustomization{

1694 +

{

1695 +

Apps: []agentcontainers.SubAgentApp{

1696 +

{

1697 +

Slug: "foo-app",

1698 +

Hidden: true,

1699 +

Order: 1,

1700 +

},

1701 +

{

1702 +

Slug: "bar-app",

1703 +

},

1704 +

},

1705 +

},

1706 +

{

1707 +

Apps: []agentcontainers.SubAgentApp{

1708 +

{

1709 +

Slug: "foo-app",

1710 +

Order: 2,

1711 +

},

1712 +

{

1713 +

Slug: "baz-app",

1714 +

},

1715 +

},

1716 +

},

1717 +

},

1718 +

afterCreate: func(t *testing.T, subAgent agentcontainers.SubAgent) {

1719 +

require.Len(t, subAgent.Apps, 3)

1720 + 1721 +

// As the original "foo-app" gets overridden by the later "foo-app",

1722 +

// we expect "bar-app" to be first in the order.

1723 +

assert.Equal(t, "bar-app", subAgent.Apps[0].Slug)

1724 +

assert.Equal(t, "foo-app", subAgent.Apps[1].Slug)

1725 +

assert.Equal(t, "baz-app", subAgent.Apps[2].Slug)

1726 + 1727 +

// We do not expect the properties from the original "foo-app" to be

1728 +

// carried over.

1729 +

assert.Equal(t, false, subAgent.Apps[1].Hidden)

1730 +

assert.Equal(t, int32(2), subAgent.Apps[1].Order)

1731 +

},

1732 +

},

1606 1733

}

1607 1734 1608 1735

for _, tt := range tests {


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4