oras-project / oras

OCI registry client - managing content like artifacts, images, packages
https://oras.land
Apache License 2.0
1.51k stars 181 forks source link

containerd/console is broken for mac consider creack/pty #1449

Open TerryHowe opened 4 months ago

TerryHowe commented 4 months ago

What is the version of your ORAS CLI

1.2.0

What would you like to be added?

Working console

Why is this needed for ORAS?

Tests are broken for mac. They will not fix.

https://github.com/containerd/console/issues/79

Are you willing to submit PRs to contribute to this feature?

FeynmanZhou commented 4 months ago

@TerryHowe How could a macOS user reproduces this issue? I am a macOS user but seems have not encountered this issue before.

qweeah commented 4 months ago

This should only impact unit tests run on macOS. IMHO since there is no automated CI run on macOS, we can simply exclude macOS from PTY-related tests. Refactoring test infra to creack/pty costs extra effort and most importantly it's managed by individual not CNCF.

TerryHowe commented 4 months ago

Yes, as far as I know only the unit tests are broken, but the way I read this containerd console was not really being supported like it is pretty much a dead project.

Something needs to be done at least to minimize the impact of the broken tests. If one class wrapped the console in a way that could be mocked, we could run cp_test.go on mac.

qweeah commented 4 months ago

I read this containerd console was not really being supported like it is pretty much a dead project.

Originally choosing containerd/console since it's a CNCF project and reached 1.0. The bugs related to ORAS (e.g. https://github.com/containerd/console/issues/79 and https://github.com/containerd/console/issues/83) receives no support because they are all provider specific bugs. I guess OS experts from Apple and Microsoft should fix those issues but there isn't any.

Something needs to be done at least to minimize the impact of the broken tests.

Again, to me there is no macOS CI for unit test so it's easier to just exclude Darwin out of unit test. We might do need to switch to creack/pty someday but IMHO there isn't enough motivation.

TerryHowe commented 3 weeks ago

The problem is there are tests up and down (from console_test to cp_test) that are not run on mac because of this.

No need to change containerd/console, just need to isolate the implementation so it can be mocked and only low level tests like console_test will not run on mac.

slonopotamus commented 2 weeks ago

As an original reporter of containerd/console#79, I strongly recommend creack/pty (that's what I ended up using in my program). It Just Works. containerd/console is a total SNAFU currently on Darwin + FreeBSD and has a severe Windows issue that might or might not affect you: https://github.com/containerd/console/issues/83

TerryHowe commented 1 week ago

If I can complete https://github.com/oras-project/oras/issues/1461 to isolate the separation of concerns, trying out creak/pty would probably be easier.