Commit Graph

9863 Commits

Author SHA1 Message Date
Sebastiaan van Stijn ab230240ad
test spring-cleaning
This makes a quick pass through our tests;

Discard output/err
----------------------------------------------

Many tests were testing for error-conditions, but didn't discard output.
This produced a lot of noise when running the tests, and made it hard
to discover if there were actual failures, or if the output was expected.
For example:

    === RUN   TestConfigCreateErrors
    Error: "create" requires exactly 2 arguments.
    See 'create --help'.

    Usage:  create [OPTIONS] CONFIG file|- [flags]

    Create a config from a file or STDIN
    Error: "create" requires exactly 2 arguments.
    See 'create --help'.

    Usage:  create [OPTIONS] CONFIG file|- [flags]

    Create a config from a file or STDIN
    Error: error creating config
    --- PASS: TestConfigCreateErrors (0.00s)

And after discarding output:

    === RUN   TestConfigCreateErrors
    --- PASS: TestConfigCreateErrors (0.00s)

Use sub-tests where possible
----------------------------------------------

Some tests were already set-up to use test-tables, and even had a usable
name (or in some cases "error" to check for). Change them to actual sub-
tests. Same test as above, but now with sub-tests and output discarded:

    === RUN   TestConfigCreateErrors
    === RUN   TestConfigCreateErrors/requires_exactly_2_arguments
    === RUN   TestConfigCreateErrors/requires_exactly_2_arguments#01
    === RUN   TestConfigCreateErrors/error_creating_config
    --- PASS: TestConfigCreateErrors (0.00s)
        --- PASS: TestConfigCreateErrors/requires_exactly_2_arguments (0.00s)
        --- PASS: TestConfigCreateErrors/requires_exactly_2_arguments#01 (0.00s)
        --- PASS: TestConfigCreateErrors/error_creating_config (0.00s)
    PASS

It's not perfect in all cases (in the above, there's duplicate "expected"
errors, but Go conveniently adds "#01" for the duplicate). There's probably
also various tests I missed that could still use the same changes applied;
we can improve these in follow-ups.

Set cmd.Args to prevent test-failures
----------------------------------------------

When running tests from my IDE, it compiles the tests before running,
then executes the compiled binary to run the tests. Cobra doesn't like
that, because in that situation `os.Args` is taken as argument for the
command that's executed. The command that's tested now sees the test-
flags as arguments (`-test.v -test.run ..`), which causes various tests
to fail ("Command XYZ does not accept arguments").

    # compile the tests:
    go test -c -o foo.test

    # execute the test:
    ./foo.test -test.v -test.run TestFoo
    === RUN   TestFoo
    Error: "foo" accepts no arguments.

The Cobra maintainers ran into the same situation, and for their own
use have added a special case to ignore `os.Args` in these cases;
https://github.com/spf13/cobra/blob/v1.8.1/command.go#L1078-L1083

    args := c.args

    // Workaround FAIL with "go test -v" or "cobra.test -test.v", see #155
    if c.args == nil && filepath.Base(os.Args[0]) != "cobra.test" {
        args = os.Args[1:]
    }

Unfortunately, that exception is too specific (only checks for `cobra.test`),
so doesn't automatically fix the issue for other test-binaries. They did
provide a `cmd.SetArgs()` utility for this purpose
https://github.com/spf13/cobra/blob/v1.8.1/command.go#L276-L280

    // SetArgs sets arguments for the command. It is set to os.Args[1:] by default, if desired, can be overridden
    // particularly useful when testing.
    func (c *Command) SetArgs(a []string) {
        c.args = a
    }

And the fix is to explicitly set the command's args to an empty slice to
prevent Cobra from falling back to using `os.Args[1:]` as arguments.

    cmd := newSomeThingCommand()
    cmd.SetArgs([]string{})

Some tests already take this issue into account, and I updated some tests
for this, but there's likely many other ones that can use the same treatment.

Perhaps the Cobra maintainers would accept a contribution to make their
condition less specific and to look for binaries ending with a `.test`
suffix (which is what compiled binaries usually are named as).

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-07-04 01:35:12 +02:00
Sebastiaan van Stijn 3837aa62d8
Merge pull request #5222 from thaJeztah/cleanup_for_engine_update
assorted minor changes in preparation of updating docker/docker dependency
2024-07-03 17:38:18 +02:00
Sebastiaan van Stijn b711372cab
cli/command/container: TestNewAttachCommandErrors: use struct-literals
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-07-03 17:09:41 +02:00
Sebastiaan van Stijn 229616e173
cli/command/image: fakeClient.ImagesPrune: fix unhandled err-return
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-07-03 17:09:41 +02:00
Sebastiaan van Stijn 42ba29395b
rename vars to prevent colliding with imports
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-07-03 17:09:41 +02:00
Sebastiaan van Stijn 3a77fdd91f
cli/command/trust: unconvert
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-07-03 17:09:40 +02:00
Sebastiaan van Stijn 26223f7017
cli/command/formatter: don't use unkeyed structs
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-07-03 17:09:40 +02:00
Paweł Gronowski bab48ebcc8
Merge pull request #5168 from Benehiko/fix-cli-login
fix: ctx cancellation on login prompt
2024-07-03 15:20:12 +02:00
Laura Brehm e2361a5ca8
Merge pull request #5218 from vvoland/update-go
update to go1.21.12
2024-07-03 11:03:40 +01:00
Paweł Gronowski d73d7d4ed3
update to go1.21.12
- https://github.com/golang/go/issues?q=milestone%3AGo1.21.12+label%3ACherryPickApproved
- full diff: https://github.com/golang/go/compare/go1.21.11...go1.21.12

These minor releases include 1 security fixes following the security policy:

net/http: denial of service due to improper 100-continue handling

The net/http HTTP/1.1 client mishandled the case where a server responds to a request with an "Expect: 100-continue" header with a non-informational (200 or higher) status. This mishandling could leave a client connection in an invalid state, where the next request sent on the connection will fail.

An attacker sending a request to a net/http/httputil.ReverseProxy proxy can exploit this mishandling to cause a denial of service by sending "Expect: 100-continue" requests which elicit a non-informational response from the backend. Each such request leaves the proxy with an invalid connection, and causes one subsequent request using that connection to fail.

Thanks to Geoff Franks for reporting this issue.

This is CVE-2024-24791 and Go issue https://go.dev/issue/67555.
View the release notes for more information:
https://go.dev/doc/devel/release#go1.21.12

**- Description for the changelog**

```markdown changelog
Update Go runtime to 1.21.12
```

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
2024-07-03 10:59:37 +02:00
Alano Terblanche c15ade0c64
fix: ctx cancellation on login prompt
Signed-off-by: Alano Terblanche <18033717+Benehiko@users.noreply.github.com>
2024-07-02 12:07:16 +02:00
Paweł Gronowski 03409219af
Merge pull request #5213 from thaJeztah/vendor_sortorder_v1.1.0
vendor: github.com/fvbommel/sortorder v1.1.0
2024-07-01 17:20:24 +02:00
Sebastiaan van Stijn cd982b111a
Merge pull request #5212 from thaJeztah/fix_stack_sorting
cli/command/stack: fix faulty sort for sorting stacks
2024-07-01 15:08:04 +02:00
Paweł Gronowski ab2373a18e
Merge pull request #5207 from thaJeztah/bump_engine_27.0.3
vendor: github.com/docker/docker v27.0.3
2024-07-01 13:41:34 +02:00
Sebastiaan van Stijn be14edca2a
cli/command/stack: fix faulty sort for sorting stacks
This code was updated in 7b9580df51, which
removed support for using kubernetes as orchestrator, but in doing so
made this `sort.Slice` (probably) not do what it was expected to do ':)

    index 412cc2e5ee86..861ae1be2fb9 100644
    @@ -75,8 +54,7 @@ func format(dockerCli command.Cli, opts options.List, orchestrator command.Orche
        }
        sort.Slice(stacks, func(i, j int) bool {
            return sortorder.NaturalLess(stacks[i].Name, stacks[j].Name) ||
    -            !sortorder.NaturalLess(stacks[j].Name, stacks[i].Name) &&
    -            sortorder.NaturalLess(stacks[j].Namespace, stacks[i].Namespace)
    +            !sortorder.NaturalLess(stacks[j].Name, stacks[i].Name)
        })
        return formatter.StackWrite(stackCtx, stacks)
     }

The extra condition was added in 84241cc393
to support multiple namespaces. This patch removes it, bringing it back to
the state it was before that commit.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-07-01 13:19:37 +02:00
Sebastiaan van Stijn 0f6370c94b
vendor: github.com/fvbommel/sortorder v1.1.0
- Add a case-folding version of Natural sort order
  This can be used to perform case-insensitive comparisons and sorting.
  It's been placed in a separate sub-package because it requires the Unicode
  tables in the standard library, which can add significantly to binary size.

full diff: https://github.com/fvbommel/sortorder/compare/v1.0.2...v1.1.0

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-07-01 13:10:44 +02:00
Sebastiaan van Stijn 2e6aaf05d4
vendor: github.com/docker/docker v27.0.3
full diff: https://github.com/docker/docker/compare/v27.0.2...v27.0.3

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-07-01 12:28:52 +02:00
Laura Brehm 4270341cad
Merge pull request #5205 from thaJeztah/docker_27.0.2
vendor: github.com/docker/docker v27.0.2
2024-06-28 15:56:18 +01:00
Sebastiaan van Stijn 9455d61768
vendor: github.com/docker/docker v27.0.2
no diff, as it's the same commit tagged: https://github.com/docker/docker/compare/e953d76450b6...v27.0.2

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-06-28 09:06:28 +02:00
Paweł Gronowski 1382fbe61e
vendor: github.com/docker/docker v27.0.2-dev (e953d76450b6)
full diff: 861fde8cc9...e953d76450

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
(cherry picked from commit c97e8091a6)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-06-28 09:01:39 +02:00
Paweł Gronowski ab0898ee32
vendor: github.com/docker/docker v27.0.2-dev (861fde8cc974)
full diff: https://github.com/docker/docker/compare/v27.0.1...861fde8cc974

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
(cherry picked from commit 8945848025)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-06-28 09:01:01 +02:00
Paweł Gronowski cfec21f28b
vendor: github.com/docker/docker v27.0.1
no change in vendored files, just changing a tag

full diff: https://github.com/docker/docker/compare/ff1e2c0de72a...v27.0.1

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
(cherry picked from commit bf1a701820)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-06-28 08:59:48 +02:00
Sebastiaan van Stijn 01dd6ab6c6
Merge pull request #5191 from vvoland/dind-test-versions
gha/e2e: Update latest version to 27.0
2024-06-26 15:36:10 +02:00
Sebastiaan van Stijn 1996259c78
Merge pull request #5196 from thaJeztah/carry_fix_custom_ports
cli/config/credentials: ConvertToHostname: handle IP-addresses
2024-06-26 15:09:11 +02:00
Sebastiaan van Stijn 8b0a7b025d
cli/config/credentials: ConvertToHostname: handle IP-addresses
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-06-26 13:43:02 +02:00
Paweł Gronowski 94e9aa6891
Merge pull request #5195 from CarstonSchilds/master
re-introduced support for port numbers in docker registry URL
2024-06-26 13:42:05 +02:00
Carston Schilds 2380481609 re-introduced support for port numbers in docker registry URL
Signed-off-by: Carston Schilds <Carston.Schilds@visier.com>
2024-06-25 15:36:31 -07:00
Paweł Gronowski ffb842597a
Merge pull request #5189 from thaJeztah/bump_golangci_lint
update golangci-lint to v1.59.1
2024-06-25 14:44:52 +02:00
Paweł Gronowski 60775b6150
gha/e2e: Update latest version to 27.0
27.0 is out - update the latest version used for e2e and drop the 25.0

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
2024-06-25 14:43:31 +02:00
Sebastiaan van Stijn b5d1b4de1a
update golangci-lint to v1.59.1
full diff: https://github.com/golangci/golangci-lint/compare/v1.59.0...v1.59.1

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-06-24 16:42:42 +02:00
Sebastiaan van Stijn 7fafd33de0
Merge pull request #5188 from thaJeztah/tracer_meter_optional
cli: make initializing the global meter- and tracing providers optional
2024-06-24 16:00:57 +02:00
Sebastiaan van Stijn 617eb5271a
cli: make initializing the global meter- and tracing providers optional
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-06-24 15:44:20 +02:00
Sebastiaan van Stijn 50acbb031b
Merge pull request #5187 from thaJeztah/config_no_pkg_homedir
cli/config: replace pkg/homedir dependency with local copy
2024-06-24 14:02:47 +02:00
Sebastiaan van Stijn 9f8bda1df9
cli/config: replace pkg/homedir dependency with local copy
There's some consumers of the config package that don't need any of the
other parts of the code, but because of the pkg/homedir were now forced
to also depend on docker/docker.

This patch introduces a local copy of the function to prevent this.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-06-24 11:41:53 +02:00
Paweł Gronowski 12ea47dafa
Merge pull request #5186 from thaJeztah/bump_compose
Dockerfile: update compose to v2.28.0
2024-06-21 15:42:10 +02:00
Paweł Gronowski 319767c0a8
Merge pull request #5184 from vvoland/vendor-docker
vendor: github.com/docker/docker v27.0-dev (ff1e2c0de72a, master)
2024-06-21 15:41:48 +02:00
Paweł Gronowski 9e278883c5
Merge pull request #5185 from thaJeztah/deprecate_graphdriver_plugins2
docs/deprecated: update status for graphdriver-plugins
2024-06-21 15:20:51 +02:00
Paweł Gronowski ad583961b6 vendor: github.com/docker/docker v27.0-dev (ff1e2c0de72a, master)
full diff: 81b2027979...ff1e2c0de7

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
2024-06-21 15:18:13 +02:00
Sebastiaan van Stijn c8c13bdcac
docs/deprecated: update status for graphdriver-plugins
Add a mention of the feature being disabled by default, and
the DOCKERD_DEPRECATED_GRAPHDRIVER_PLUGINS env-var.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-06-21 15:03:53 +02:00
Sebastiaan van Stijn 1f7561ecbb
Dockerfile: update compose to v2.28.0
release notes: https://github.com/docker/compose/releases/tag/v2.28.0

full diff: https://github.com/docker/compose/compare/v2.27.1...v2.28.0

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-06-21 14:52:22 +02:00
Paweł Gronowski 886661427e
Merge pull request #5183 from thaJeztah/bump_docker
vendor: github.com/docker/docker v27.0.1-rc.1
2024-06-21 13:44:37 +02:00
Sebastiaan van Stijn 1a04810073
vendor: github.com/docker/docker v27.0.1-rc.1
no diff;  same commit, but tagged.

full diff: https://github.com/docker/docker/compare/018d93decfb5...v27.0.1-rc.1

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-06-20 23:53:47 +02:00
Sebastiaan van Stijn b83cf582cd
Merge pull request #5178 from thaJeztah/buildkit_windows
build: allow BuildKit to be used on Windows daemons that advertise it
2024-06-20 18:46:41 +02:00
Paweł Gronowski 0d415ad0e9
Merge pull request #5171 from Benehiko/feat-global-force-exit
fix: force cli to exit after third sigint/sigterm
2024-06-20 17:49:07 +02:00
Alano Terblanche faf7647dcf
refactor: remove test
Signed-off-by: Alano Terblanche <18033717+Benehiko@users.noreply.github.com>
2024-06-20 17:03:33 +02:00
Paweł Gronowski d8cdcaee23
Merge pull request #3599 from thaJeztah/use_local_ConvertToHostname
use local ConvertToHostname() implementation
2024-06-20 16:29:30 +02:00
Sebastiaan van Stijn 623fcd5489
Merge pull request #5180 from vvoland/docker-27.0-rc
vendor: github.com/docker/docker v27.0-dev (018d93decfb5)
2024-06-20 15:17:22 +02:00
Paweł Gronowski d1cb7d41c2
cli/command: Don't copy fakeClient
The embedded `client.Client` has mutexes and it shouldn't be copied.

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
2024-06-20 14:59:38 +02:00
Alano Terblanche 1322f585fe
test: cli force exit signal handler
Signed-off-by: Alano Terblanche <18033717+Benehiko@users.noreply.github.com>
2024-06-20 14:32:38 +02:00
Paweł Gronowski 34d42bdf0c
vendor: github.com/docker/docker v27.0-dev (018d93decfb5)
full diff: 1a1f3cff45...018d93decf

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
2024-06-20 14:00:27 +02:00