From ba8dc476b9757b5301dbcb2e9633929cffb4f181 Mon Sep 17 00:00:00 2001 From: moshebe Date: Sat, 25 Jul 2020 14:01:31 +0300 Subject: [PATCH] Bugfix/no ports invalid config (#29) * wip * Update bug_report.md * fix invalid configuration bug when debugger mode enabled but no port were exposed * add test for this bug --- .gitignore | 1 + codecov.yml | 20 ------ pkg/config/config_test.go | 65 ++++++++++++++----- pkg/config/render.go | 2 +- .../testdata/generate_docker_compose_4.golden | 12 ++++ .../testdata/generate_docker_compose_4.in | 10 +++ 6 files changed, 71 insertions(+), 39 deletions(-) delete mode 100644 codecov.yml create mode 100644 pkg/config/testdata/generate_docker_compose_4.golden create mode 100644 pkg/config/testdata/generate_docker_compose_4.in diff --git a/.gitignore b/.gitignore index ce63d2d1..5264e6e9 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,4 @@ .idea gebug .gebug +coverage.txt diff --git a/codecov.yml b/codecov.yml deleted file mode 100644 index 657d8f75..00000000 --- a/codecov.yml +++ /dev/null @@ -1,20 +0,0 @@ -codecov: - require_ci_to_pass: yes - -coverage: - precision: 2 - round: down - range: "70...100" - -parsers: - gcov: - branch_detection: - conditional: yes - loop: yes - method: no - macro: no - -comment: - layout: "reach,diff,flags,tree" - behavior: default - require_changes: no diff --git a/pkg/config/config_test.go b/pkg/config/config_test.go index 2dc81d4d..1ae3a630 100644 --- a/pkg/config/config_test.go +++ b/pkg/config/config_test.go @@ -62,13 +62,25 @@ expose_ports: }, wantErr: false, }, + { + input: `invalid yaml`, + wantErr: true, + }, + { + input: `name: {{.NotExists}}`, + wantErr: true, + }, } for _, test := range tests { c, err := Load([]byte(test.input)) - assert.NoError(t, err) - assert.NotNil(t, c) - assert.Equal(t, test.expected, c) + if test.wantErr { + assert.Error(t, err) + } else { + assert.NoError(t, err) + assert.NotNil(t, c) + assert.Equal(t, test.expected, c) + } } } @@ -127,7 +139,23 @@ func generateFile(t *testing.T, prefix string, generate func(*Config, io.Writer) } func TestConfig_Write(t *testing.T) { - expected := `name: my-app + tests := []struct { + input *Config + expected string + wantErr bool + }{ + { + input: &Config{ + Name: "my-app", + OutputBinaryPath: "/app", + BuildCommand: "go build -o /app -gcflags=\"all=-N-l\"", + RunCommand: "/app", + RuntimeImage: "golang:1.14", + DebuggerPort: 40000, + DebuggerEnabled: true, + ExposePorts: []string{"8080", "8081:8081"}, + }, + expected: `name: my-app output_binary: /app build_command: go build -o /app -gcflags="all=-N-l" run_command: /app @@ -139,22 +167,23 @@ expose_ports: - 8081:8081 networks: [] environment: [] -` - c := Config{ - Name: "my-app", - OutputBinaryPath: "/app", - BuildCommand: "go build -o /app -gcflags=\"all=-N-l\"", - RunCommand: "/app", - RuntimeImage: "golang:1.14", - DebuggerPort: 40000, - DebuggerEnabled: true, - ExposePorts: []string{"8080", "8081:8081"}, +`, + wantErr: false, + }, } - buf := bytes.NewBufferString("") - err := c.Write(buf) - assert.NoError(t, err) - assert.Equal(t, expected, buf.String()) + for i, test := range tests { + t.Run(strconv.Itoa(i), func(t *testing.T) { + buf := bytes.NewBufferString("") + err := test.input.Write(buf) + if test.wantErr { + assert.Error(t, err) + } else { + assert.NoError(t, err) + assert.Equal(t, test.expected, buf.String()) + } + }) + } } func TestConfig_updateBuildCommand(t *testing.T) { diff --git a/pkg/config/render.go b/pkg/config/render.go index 33ef51d8..32430814 100644 --- a/pkg/config/render.go +++ b/pkg/config/render.go @@ -35,7 +35,7 @@ services: {{- end}} volumes: - ../:/src:ro -{{- if .ExposePorts}} +{{- if or .ExposePorts .DebuggerEnabled}} ports: {{- range $key, $value := .ExposePorts}} - {{$value}} diff --git a/pkg/config/testdata/generate_docker_compose_4.golden b/pkg/config/testdata/generate_docker_compose_4.golden new file mode 100644 index 00000000..67b6468b --- /dev/null +++ b/pkg/config/testdata/generate_docker_compose_4.golden @@ -0,0 +1,12 @@ +version: '3' +services: + gebug-my-app: + build: + context: .. + dockerfile: .gebug/Dockerfile + cap_add: + - SYS_PTRACE + volumes: + - ../:/src:ro + ports: + - 40000:40000 diff --git a/pkg/config/testdata/generate_docker_compose_4.in b/pkg/config/testdata/generate_docker_compose_4.in new file mode 100644 index 00000000..4580f116 --- /dev/null +++ b/pkg/config/testdata/generate_docker_compose_4.in @@ -0,0 +1,10 @@ +name: my-app +output_binary: /app +build_command: go build -o {{.output_binary}} +run_command: '{{.output_binary}}' +runtime_image: golang:1.14 +debugger_enabled: true +debugger_port: 40000 +expose_ports: [] +networks: [] +environment: [] \ No newline at end of file