(t *testing.T)
| 75 | var emptyRemoteOpts []remote.Option |
| 76 | |
| 77 | func TestLogs(t *testing.T) { |
| 78 | t.Parallel() |
| 79 | |
| 80 | token := uuid.NewString() |
| 81 | logsDone := make(chan struct{}) |
| 82 | |
| 83 | logHandler := func(w http.ResponseWriter, r *http.Request) { |
| 84 | switch r.URL.Path { |
| 85 | case "/api/v2/buildinfo": |
| 86 | w.Header().Set("Content-Type", "application/json") |
| 87 | _, _ = w.Write([]byte(`{"version": "v2.8.9"}`)) |
| 88 | return |
| 89 | case "/api/v2/workspaceagents/me/logs": |
| 90 | w.WriteHeader(http.StatusOK) |
| 91 | tokHdr := r.Header.Get(codersdk.SessionTokenHeader) |
| 92 | assert.Equal(t, token, tokHdr) |
| 93 | var req agentsdk.PatchLogs |
| 94 | err := json.NewDecoder(r.Body).Decode(&req) |
| 95 | if err != nil { |
| 96 | http.Error(w, err.Error(), http.StatusBadRequest) |
| 97 | return |
| 98 | } |
| 99 | for _, log := range req.Logs { |
| 100 | t.Logf("got log: %+v", log) |
| 101 | if strings.Contains(log.Output, "Running init command") { |
| 102 | close(logsDone) |
| 103 | return |
| 104 | } |
| 105 | } |
| 106 | return |
| 107 | default: |
| 108 | t.Errorf("unexpected request to %s", r.URL.Path) |
| 109 | w.WriteHeader(http.StatusNotFound) |
| 110 | return |
| 111 | } |
| 112 | } |
| 113 | logSrv := httptest.NewServer(http.HandlerFunc(logHandler)) |
| 114 | defer logSrv.Close() |
| 115 | |
| 116 | // Ensures that a Git repository with a devcontainer.json is cloned and built. |
| 117 | srv := gittest.CreateGitServer(t, gittest.Options{ |
| 118 | Files: map[string]string{ |
| 119 | "devcontainer.json": `{ |
| 120 | "build": { |
| 121 | "dockerfile": "Dockerfile" |
| 122 | }, |
| 123 | }`, |
| 124 | "Dockerfile": fmt.Sprintf(`FROM %s`, testImageUbuntu), |
| 125 | }, |
| 126 | }) |
| 127 | ctrID, err := runEnvbuilder(t, runOpts{env: []string{ |
| 128 | envbuilderEnv("GIT_URL", srv.URL), |
| 129 | "CODER_AGENT_URL=" + logSrv.URL, |
| 130 | "CODER_AGENT_TOKEN=" + token, |
| 131 | "ENVBUILDER_SETUP_SCRIPT=/bin/sh -c 'echo MY${NO_MATCH_ENV}_SETUP_SCRIPT_OUT; echo MY${NO_MATCH_ENV}_SETUP_SCRIPT_ERR' 1>&2", |
| 132 | "ENVBUILDER_INIT_SCRIPT=env", |
| 133 | }}) |
| 134 | require.NoError(t, err) |
nothing calls this directly
no test coverage detected