Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
128 commits
Select commit Hold shift + click to select a range
d0252d4
fix: align OTel versions to v1.44.0 and use explicit e2e timeout fall…
tmshort Jul 2, 2026
6a28728
:seedling: Bump github.com/google/go-containerregistry (#2800)
dependabot[bot] Jul 2, 2026
8013292
feat: replace asciinema with godog-based demo recording (#2801)
pedjak Jul 3, 2026
6655994
chore(deps): bump golang.org/x/net in /hack/tools/test-profiling (#2804)
dependabot[bot] Jul 3, 2026
395bb86
:seedling: Bump github.com/sigstore/fulcio from 1.8.5 to 1.8.6 (#2793)
dependabot[bot] Jul 3, 2026
7461774
fix: missing olm.operatorNamespace annotation (#2803)
Kajot-dev Jul 6, 2026
a918ca8
fix: use static permissions in update-demos workflow (#2805)
pedjak Jul 6, 2026
60f2706
:seedling: Bump actions/setup-go from 6.4.0 to 6.5.0 (#2807)
dependabot[bot] Jul 8, 2026
b7926dc
:seedling: Bump pymdown-extensions from 10.21.3 to 11.0 (#2808)
dependabot[bot] Jul 8, 2026
abd8c4a
:seedling: Bump helm.sh/helm/v3 from 3.21.1 to 3.21.2 (#2806)
dependabot[bot] Jul 8, 2026
dd78f2f
:seedling: Bump actions/setup-python from 6.2.0 to 6.3.0 (#2809)
dependabot[bot] Jul 8, 2026
be16a0a
:seedling: Align ClusterObjectSet e2e cleanup with addedResources pat…
perdasilva Jul 8, 2026
dbc9b4a
fix: remove HelmChartSupport feature (#2798)
pedjak Jul 9, 2026
e5bac06
:seedling: Bump click from 8.4.1 to 8.4.2 (#2811)
dependabot[bot] Jul 10, 2026
c63b183
:seedling: Bump github.com/cert-manager/cert-manager (#2812)
dependabot[bot] Jul 10, 2026
e5877d7
:seedling: Bump golang.org/x/tools from 0.46.0 to 0.47.0 (#2813)
dependabot[bot] Jul 13, 2026
8877ba0
:seedling: Bump regex from 2026.5.9 to 2026.6.28 (#2814)
dependabot[bot] Jul 14, 2026
ca2945a
:seedling: Bump github.com/klauspost/compress from 1.18.6 to 1.19.0 (…
dependabot[bot] Jul 14, 2026
507310b
:seedling: Bump docker/login-action from 4.2.0 to 4.3.0 (#2816)
dependabot[bot] Jul 16, 2026
61c439f
:seedling: Bump dorny/paths-filter from 4.0.1 to 4.0.2 (#2817)
dependabot[bot] Jul 16, 2026
7909550
:seedling: Bump golang.org/x/sync from 0.21.0 to 0.22.0 (#2818)
dependabot[bot] Jul 16, 2026
07e6312
✨ catalogd graphql shift to file-based cache (#2732)
grokspawn Jul 17, 2026
74d27b2
:seedling: Bump docker/login-action from 4.3.0 to 4.4.0 (#2820)
dependabot[bot] Jul 17, 2026
4562584
:seedling: Bump pymdown-extensions from 11.0 to 11.0.1 (#2821)
dependabot[bot] Jul 17, 2026
e56dcc8
Merge branch 'main' into synchronize
Jul 18, 2026
f0ff530
UPSTREAM: <carry>: Add OpenShift specific files
dtfranz Oct 26, 2023
3618a17
UPSTREAM: <carry>: Add new tests for single/own namespaces install modes
camilamacedo86 Oct 6, 2025
83c3ce0
UPSTREAM: <carry>: Upgrade OCP image from 4.20 to 4.21
camilamacedo86 Oct 13, 2025
cf04372
UPSTREAM: <carry>: [Default Catalog Tests] - Change logic to get ocp …
camilamacedo86 Oct 13, 2025
1e7d75d
UPSTREAM: <carry>: Update OCP catalogs to v4.21
tmshort Oct 13, 2025
b5e0160
UPSTREAM: <carry>: support singleown cases in disconnected
kuiwang02 Oct 16, 2025
d1053aa
UPSTREAM: <carry>: fix cases 81696 and 74618 for product code changes
kuiwang02 Oct 17, 2025
4f0c709
UPSTREAM: <carry>: Define Default timeouts and apply their usage accr…
camilamacedo86 Oct 22, 2025
9b98e10
UPSTREAM: <carry>: Update to new feature-gate options in helm
tmshort Oct 22, 2025
5bbbb2a
UPSTREAM: <carry>: Fix flake for single/own ns tests by ensuring uniq…
camilamacedo86 Oct 22, 2025
9343577
UPSTREAM: <carry>: [OTE]: Enhance single/own ns based on review comme…
camilamacedo86 Oct 24, 2025
2facc44
UPSTREAM: <carry>: Update OwnSingle template to use spec.config.inlin…
kuiwang02 Nov 3, 2025
3ad7a6e
UPSTREAM: <carry>: [OTE]: Add webhook cleanup validation on extension…
camilamacedo86 Nov 4, 2025
505af3e
UPSTREAM: <carry>: Add [OTP] to migrated cases
kuiwang02 Nov 7, 2025
33393d0
UPSTREAM: <carry>: [OTE]: Upgrade dependencies used
camilamacedo86 Nov 5, 2025
fe435ef
UPSTREAM: <carry>: fix(OTE): fix OpenShift Kubernetes replace version…
camilamacedo86 Nov 10, 2025
45e3275
UPSTREAM: <carry>: [Default Catalog Tests] Upgrade go 1.24.6 and depe…
camilamacedo86 Nov 11, 2025
1fe3b12
UPSTREAM: <carry>: add disconnected environment support with custom p…
kuiwang02 Nov 12, 2025
5dc0ddc
UPSTREAM: <carry>: migrate jiazha test cases to OTE
jianzhangbjz Nov 14, 2025
4c67ca5
UPSTREAM: <carry>: migrate clustercatalog case to ote
Xia-Zhao-rh Oct 17, 2025
b30011d
UPSTREAM: <carry>: migrate olmv1 QE stress cases
kuiwang02 Nov 20, 2025
828e0c9
UPSTREAM: <carry>: Use busybox/httpd to simulate probes
tmshort Nov 25, 2025
9123670
UPSTREAM: <carry>: migrate olmv1 QE cases
Xia-Zhao-rh Nov 25, 2025
847dcfb
UPSTREAM: <carry>: add agent for olmv1 qe cases
kuiwang02 Oct 21, 2025
adbca2a
UPSTREAM: <carry>: Disable upstream PodDisruptionBudget
tmshort Dec 3, 2025
236b941
UPSTREAM: <carry>: Add AGENTS.md for AI code contributions
rashmigottipati Dec 11, 2025
fbcca63
UPSTREAM: <carry>: address review comments through addl prompts
rashmigottipati Dec 11, 2025
9736374
UPSTREAM: <carry>: addressing some more review comments
rashmigottipati Dec 11, 2025
9867d6a
UPSTREAM: <carry>: remove DCO line
rashmigottipati Dec 11, 2025
4d409eb
UPSTREAM: <carry>: migrate bandrade test cases to OTE
bandrade Nov 18, 2025
335becf
UPSTREAM: <carry>: update metadata
bandrade Dec 3, 2025
1a805e4
UPSTREAM: <carry>: remove originalName
bandrade Dec 3, 2025
7b9131c
UPSTREAM: <carry>: update 80458's timeout to 180s
jianzhangbjz Dec 8, 2025
7958d17
UPSTREAM: <carry>: update 83026 to specify the clustercatalog
jianzhangbjz Dec 15, 2025
783abef
UPSTREAM: <carry>: Update to golang 1.25 and ocp 4.22
oceanc80 Dec 18, 2025
b9bfd65
UPSTREAM: <carry>: Use oc client for running e2e tests
pedjak Jan 13, 2026
1483887
UPSTREAM: <carry>: Run upstream e2e tests tagged with `@catalogd-update`
pedjak Jan 14, 2026
219ac87
UPSTREAM: <carry>: enhance case to make it more stable
kuiwang02 Jan 6, 2026
fa95446
UPSTREAM: <carry>: add service account to curl job
ehearne-redhat Jan 7, 2026
8549f83
UPSTREAM: <carry>: move sa creation out of buildCurlJob()
ehearne-redhat Jan 8, 2026
294b152
UPSTREAM: <carry>: comment out delete service account
ehearne-redhat Jan 9, 2026
d3c2471
UPSTREAM: <carry>: move defercleanup for sa for LIFO
ehearne-redhat Jan 9, 2026
c2f58c4
UPSTREAM: <carry>: add polling so job fully deleted before proceed
ehearne-redhat Jan 12, 2026
dfafe0f
UPSTREAM: <carry>: Revert "Merge pull request #594 from ehearne-redha…
sosiouxme Jan 20, 2026
eff10fc
UPSTREAM: <carry>: Remove openshift-redhat-marketplace catalog tests
camilamacedo86 Jan 8, 2026
2603c34
UPSTREAM: <carry>: config watchnamespace cases
kuiwang02 Jan 6, 2026
7bb043e
UPSTREAM: <carry>: enhance ocp-79770
Xia-Zhao-rh Jan 26, 2026
6984a7a
UPSTREAM: <carry>: upgrade version support case
kuiwang02 Jan 28, 2026
9a29cb6
UPSTREAM: <carry>: Remove installed condition check from auth preflig…
Jan 30, 2026
26de82d
UPSTREAM: <carry>: Add openshift/api dependency
Jan 30, 2026
eaa1b17
UPSTREAM: <carry>: Add boxcutter specific preflight auth test
Jan 30, 2026
24e5ee8
UPSTREAM: <carry>: adjust watchnamespace case based on change
kuiwang02 Feb 2, 2026
803182f
UPSTREAM: <carry>: fix(ote): Use as operator-controller dep from root…
camilamacedo86 Feb 3, 2026
b5be4b4
UPSTREAM: <carry>: add 83979 automation
bandrade Feb 2, 2026
57f2abe
UPSTREAM: <carry>: add 85889 automation
bandrade Feb 2, 2026
aad6acc
UPSTREAM: <carry>: Update test-operator startup script to fix pod pro…
Feb 4, 2026
0ee225e
UPSTREAM: <carry>: Fix up own-namespace invalid configuration test
Feb 7, 2026
0d5883d
UPSTREAM: <carry>: Preflight tests use in-cluster catalog and bundles…
camilamacedo86 Feb 24, 2026
be1aea9
UPSTREAM: <carry>: adjust sa and permission test cases per new change…
kuiwang02 Feb 2, 2026
a2f817e
UPSTREAM: <carry>: Update OCP catalogs to v4.22
camilamacedo86 Feb 3, 2026
905a0d8
UPSTREAM: <carry>: chore(OTE and Default Catalog Tests) Update go and…
camilamacedo86 Feb 26, 2026
1ecfc9e
UPSTREAM: <carry>: fix 83026 for TP cluster
jianzhangbjz Feb 28, 2026
2e23095
UPSTREAM: <carry>: serviceAccount validation unified across all runtimes
kuiwang02 Mar 6, 2026
6f7d958
UPSTREAM: <carry>: Fix OLMv1 test operator to listen on IPv6
stbenjam Mar 6, 2026
3bc9151
UPSTREAM: <carry>: Increase install timeout and add diagnostic loggin…
camilamacedo86 Mar 11, 2026
8bdbc48
UPSTREAM: <carry>: add service account to curl job
ehearne-redhat Mar 2, 2026
8bd0094
UPSTREAM: <carry>: update OCP-75441 to support multi-arch
jianzhangbjz Mar 19, 2026
9b5e96a
UPSTREAM: <carry>: deployment config cases
kuiwang02 Feb 6, 2026
1c3e3ac
UPSTREAM: <carry>: Add OTE tests for OLMv1 DeploymentConfig support
tmshort Mar 11, 2026
33cdc89
UPSTREAM: <carry>: Update openshift/api and client-go
tmshort Mar 19, 2026
d22c99e
UPSTREAM: <carry>: Add boxcutter tests
camilamacedo86 Mar 23, 2026
f1e44f1
UPSTREAM: <carry>: enhance QE cases
Xia-Zhao-rh Mar 17, 2026
616713c
UPSTREAM: <carry>: Update quay-operator version to one containing arm…
dtfranz Mar 24, 2026
f538de7
UPSTREAM: <carry>: verify volume/volumeMount override
kuiwang02 Mar 25, 2026
30bb8d0
UPSTREAM: <carry>: Add long-duration test script and documents
jianzhangbjz Mar 11, 2026
77771b3
UPSTREAM: <carry>: Update grpc in default-catalog-consistency tests
tmshort Mar 27, 2026
5b73765
UPSTREAM: <carry>: Rename ClusterExtensionRevision to ClusterObjectSe…
camilamacedo86 Mar 31, 2026
9120a1c
UPSTREAM: <carry>: Skip incompatible operator test when Boxcutter use…
camilamacedo86 Mar 31, 2026
d757656
UPSTREAM: <carry>: add ocp-87557
bandrade Feb 8, 2026
ff0a5a9
UPSTREAM: <carry>: Add fgiudici as reviewer
fgiudici Mar 31, 2026
412a5eb
UPSTREAM: <carry>: Remove skip for incompatible operator check after …
camilamacedo86 Apr 1, 2026
6addeed
UPSTREAM: <carry>: Test empty affinity erasure and cleanup
kuiwang02 Apr 1, 2026
112c5b2
UPSTREAM: <carry>: Fix boxcutter finalizer ResourceNames in prefligh…
camilamacedo86 Apr 9, 2026
403cbc6
UPSTREAM: <carry>: Expand OTE docs with more comprehensive details
camilamacedo86 Apr 15, 2026
d9cc6d1
UPSTREAM: <carry>: Disable upstream TLSProfile tests
tmshort Apr 18, 2026
d69f6f9
UPSTREAM: <carry>: OTE: Simplify by remove option to configure tests …
camilamacedo86 Apr 20, 2026
8493350
UPSTREAM: <carry>: OTE - Make OTE local output easier to read
camilamacedo86 Apr 21, 2026
5eac7b1
UPSTREAM: <carry>: remove dead e2e registry push job and related vari…
joelanford Apr 29, 2026
f8de21c
UPSTREAM: <carry>: OCPBUGS-62517: Set replicas=1, PDB, and pod anti-a…
tmshort Apr 23, 2026
dad08db
UPSTREAM: <carry>: fix(test): drop blocking namespace-deletion wait b…
tmshort May 4, 2026
7fe245d
UPSTREAM: <carry>: Fix downstream e2e test invocation
tmshort May 18, 2026
3a6f702
UPSTREAM: <carry>: Delete openshift/registry.Dockerfile
joelanford May 19, 2026
2565670
UPSTREAM: <carry>: Remove test-experimenal-e2e
tmshort May 20, 2026
7eed2e2
UPSTREAM: <carry>: Update readme Default Catalog Tests
camilamacedo86 May 27, 2026
57bd310
UPSTREAM: <carry>: add OLMv1 topology-based deployment scaling e2e test
tmshort May 26, 2026
f076a48
UPSTREAM: <carry>: Update dockerfiles to use golang-1.26-release-4.23…
tmshort Jun 4, 2026
94e8035
UPSTREAM: <carry>: Updating ose-olm-operator-controller-container ima…
Jun 6, 2026
7813c8f
UPSTREAM: <carry>: Updating ose-olm-catalogd-container image to be co…
Jun 6, 2026
e78e280
UPSTREAM: <carry>: Update catalogs for 4.23/5.0
tmshort May 21, 2026
f8ffca5
UPSTREAM: <carry>: Remove HelmChartSupport feature gate from experime…
Jul 15, 2026
df7a78b
UPSTREAM: <drop>: go mod vendor
Jul 18, 2026
59aeb79
UPSTREAM: <drop>: remove upstream GitHub configuration
Jul 18, 2026
2e94aed
UPSTREAM: <drop>: configure the commit-checker
Jul 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,9 @@ vendor/
# documentation website asset folder
site

# generated demo asciicast recordings
docs/demos/

.tiltbuild/
.catalogd-tmp/
.vscode
Expand Down
41 changes: 30 additions & 11 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -404,7 +404,6 @@ else
endif

.PHONY: e2e-run-%
e2e-run-%: E2E_TIMEOUT ?= 20m
e2e-run-%: GODOG_ARGS ?=
e2e-run-%: prometheus-%
ifeq ($(strip $(GODOG_ARGS)),)
Expand All @@ -414,11 +413,11 @@ ifeq ($(strip $(GODOG_ARGS)),)
set +e; \
KUBECONFIG=$(E2E_KUBECONFIG) \
PROMETHEUS_URL=http://localhost:$$E2E_PROMETHEUS_PORT \
go test -count=1 -v ./test/e2e/features_test.go -timeout $(E2E_TIMEOUT) -args --godog.tags="~@Serial" --godog.concurrency=100; \
go test -count=1 -v ./test/e2e/features_test.go -timeout $(or $(E2E_TIMEOUT),20m) -args --godog.tags="~@Serial && ~@demo" --godog.concurrency=100; \
parallelExit=$$?; \
KUBECONFIG=$(E2E_KUBECONFIG) \
PROMETHEUS_URL=http://localhost:$$E2E_PROMETHEUS_PORT \
go test -count=1 -v ./test/e2e/features_test.go -timeout $(E2E_TIMEOUT) -args --godog.tags="@Serial" --godog.concurrency=1; \
go test -count=1 -v ./test/e2e/features_test.go -timeout $(or $(E2E_TIMEOUT),20m) -args --godog.tags="@Serial && ~@demo" --godog.concurrency=1; \
serialExit=$$?; \
if [[ $$parallelExit -ne 0 ]] || [[ $$serialExit -ne 0 ]]; then \
echo "e2e tests failed: parallel=$$parallelExit serial=$$serialExit"; \
Expand All @@ -429,7 +428,7 @@ else
if [[ -z "$$E2E_PROMETHEUS_PORT" ]]; then echo "error: failed to extract prometheus hostPort from $(KIND_CONFIG)" >&2; exit 1; fi; \
KUBECONFIG=$(E2E_KUBECONFIG) \
PROMETHEUS_URL=http://localhost:$$E2E_PROMETHEUS_PORT \
go test -count=1 -v ./test/e2e/features_test.go -timeout=$(E2E_TIMEOUT) -args $(GODOG_ARGS)
go test -count=1 -v ./test/e2e/features_test.go -timeout=$(or $(E2E_TIMEOUT),20m) -args $(GODOG_ARGS)
endif

.PHONY: e2e-coverage-%
Expand Down Expand Up @@ -697,13 +696,33 @@ deploy-docs: venv
. $(VENV)/activate; \
mkdocs gh-deploy --force --strict

# The demo script requires to install asciinema with: brew install asciinema to run on mac os envs.
# Please ensure that all demos are named with the demo name and the suffix -demo-script.sh
.PHONY: update-demos #EXHELP Validate demo recordings.
update-demos:
@for script in hack/demo/*-demo-script.sh; do \
nm=$$(basename $$script -script.sh); \
./hack/demo/generate-asciidemo.sh -n $$nm $$(basename $$script); \
DEMO_OUTPUT_DIR ?= $(ROOT_DIR)/docs/demos

.PHONY: update-demos
update-demos: SOURCE_MANIFEST := $(EXPERIMENTAL_E2E_MANIFEST)
update-demos: export MANIFEST := $(EXPERIMENTAL_RELEASE_MANIFEST)
update-demos: export DEFAULT_CATALOG := $(CATALOGS_MANIFEST)
update-demos: export INSTALL_DEFAULT_CATALOGS := true
update-demos: export CATALOG_WAIT_TIMEOUT := 5m
update-demos: wait-operator-controller-experimental-e2e demo-e2e demo-svg experimental-e2e-teardown #EXHELP Record demo scenarios as asciicast and SVG files.
Comment on lines +699 to +707

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🩺 Stability & Availability | 🟑 Minor | ⚑ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Inspect the relevant Makefile section and the referenced targets.
git ls-files Makefile
sed -n '660,760p' Makefile

printf '\n--- target definitions ---\n'
rg -n '^(demo-e2e|demo-svg|experimental-e2e-teardown|wait-operator-controller-experimental-e2e):|\.NOTPARALLEL|update-demos:' Makefile

Repository: openshift/operator-framework-operator-controller

Length of output: 4445


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '--- parallelism/order controls ---\n'
rg -n '^\s*\.NOTPARALLEL|^\s*\.WAIT|^\s*\.PARALLEL|^update-demos:|^demo-e2e:|^demo-svg:|^experimental-e2e-teardown:|^wait-operator-controller-experimental-e2e:' Makefile

printf '\n--- update-demos references ---\n'
rg -n '\bupdate-demos\b' -S .

printf '\n--- demo-e2e / demo-svg bodies ---\n'
sed -n '707,735p' Makefile

Repository: openshift/operator-framework-operator-controller

Length of output: 277


Make update-demos run sequentially
update-demos lists independent prerequisites, so make -j can start demo-svg or experimental-e2e-teardown before demo-e2e finishes writing the .cast files. Convert this to a recipe, or mark the target .NOTPARALLEL, so recording, conversion, and teardown happen in order.

🧰 Tools
πŸͺ› checkmake (0.3.2)

[warning] 703-703: Target "update-demos" defined multiple times (lines 702 and 703).

(uniquetargets)


[warning] 704-704: Target "update-demos" defined multiple times (lines 702 and 704).

(uniquetargets)


[warning] 705-705: Target "update-demos" defined multiple times (lines 702 and 705).

(uniquetargets)


[warning] 706-706: Target "update-demos" defined multiple times (lines 702 and 706).

(uniquetargets)


[warning] 707-707: Target "update-demos" defined multiple times (lines 702 and 707).

(uniquetargets)

πŸ€– Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Makefile` around lines 699 - 707, The update-demos target is vulnerable to
parallel execution because its current prerequisite list lets make -j run
demo-e2e, demo-svg, and experimental-e2e-teardown out of order. Update the
Makefile so update-demos executes sequentially by moving the steps into a recipe
or marking the target (or its related
demo-e2e/demo-svg/experimental-e2e-teardown flow) as .NOTPARALLEL, ensuring
recording, conversion, and teardown happen in the correct order.


.PHONY: demo-e2e
demo-e2e:
@command -v curl >/dev/null 2>&1 || { echo "Error: curl not found in PATH."; exit 1; }
@command -v jq >/dev/null 2>&1 || { echo "Error: jq not found in PATH."; exit 1; }
@mkdir -p $(DEMO_OUTPUT_DIR)
KUBECONFIG=$(KUBECONFIG_DIR)/operator-controller-experimental-e2e.kubeconfig \
DEMO_OUTPUT_DIR=$(DEMO_OUTPUT_DIR) go test -count=1 -v ./test/e2e/features_test.go -timeout 30m \
-args --godog.tags="@demo" --godog.concurrency=1

.PHONY: demo-svg
demo-svg: #EXHELP Convert asciicast recordings to SVG.
@command -v docker >/dev/null 2>&1 || { echo "Error: docker not found in PATH."; exit 1; }
@for cast in $(DEMO_OUTPUT_DIR)/*.cast; do \
svg=$${cast%.cast}.svg; \
echo "Converting $$(basename $$cast) -> $$(basename $$svg)"; \
docker run --rm -v $(DEMO_OUTPUT_DIR):/data node:alpine \
npx --yes svg-term-cli --in /data/$$(basename $$cast) --out /data/$$(basename $$svg) --window; \
done
Comment on lines +718 to 726

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🩺 Stability & Availability | 🟑 Minor | ⚑ Quick win

Unquoted glob can fail when no .cast files exist.

If $(DEMO_OUTPUT_DIR) contains no .cast files, the glob won't expand under default shell settings, so cast becomes the literal string $(DEMO_OUTPUT_DIR)/*.cast, and docker run will fail trying to mount/read a nonexistent file with a confusing error instead of a clear message.

πŸ› Proposed fix using nullglob guard
 demo-svg: `#EXHELP` Convert asciicast recordings to SVG.
 	`@command` -v docker >/dev/null 2>&1 || { echo "Error: docker not found in PATH."; exit 1; }
-	`@for` cast in $(DEMO_OUTPUT_DIR)/*.cast; do \
+	`@shopt` -s nullglob; \
+	casts=($(DEMO_OUTPUT_DIR)/*.cast); \
+	if [ $${`#casts`[@]} -eq 0 ]; then \
+	  echo "No .cast files found in $(DEMO_OUTPUT_DIR)"; \
+	  exit 0; \
+	fi; \
+	for cast in "$${casts[@]}"; do \
 	  svg=$${cast%.cast}.svg; \
 	  echo "Converting $$(basename $$cast) -> $$(basename $$svg)"; \
 	  docker run --rm -v $(DEMO_OUTPUT_DIR):/data node:alpine \
 	    npx --yes svg-term-cli --in /data/$$(basename $$cast) --out /data/$$(basename $$svg) --window; \
 	done

Requires bash as the recipe shell (for shopt/arrays) β€” verify SHELL is set to bash elsewhere in this Makefile, consistent with the [[ ]] usage already present at Line 411/422.

πŸ“ Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
.PHONY: demo-svg
demo-svg: #EXHELP Convert asciicast recordings to SVG.
@command -v docker >/dev/null 2>&1 || { echo "Error: docker not found in PATH."; exit 1; }
@for cast in $(DEMO_OUTPUT_DIR)/*.cast; do \
svg=$${cast%.cast}.svg; \
echo "Converting $$(basename $$cast) -> $$(basename $$svg)"; \
docker run --rm -v $(DEMO_OUTPUT_DIR):/data node:alpine \
npx --yes svg-term-cli --in /data/$$(basename $$cast) --out /data/$$(basename $$svg) --window; \
done
.PHONY: demo-svg
demo-svg: `#EXHELP` Convert asciicast recordings to SVG.
`@command` -v docker >/dev/null 2>&1 || { echo "Error: docker not found in PATH."; exit 1; }
`@shopt` -s nullglob; \
casts=($(DEMO_OUTPUT_DIR)/*.cast); \
if [ $${`#casts`[@]} -eq 0 ]; then \
echo "No .cast files found in $(DEMO_OUTPUT_DIR)"; \
exit 0; \
fi; \
for cast in "$${casts[@]}"; do \
svg=$${cast%.cast}.svg; \
echo "Converting $$(basename $$cast) -> $$(basename $$svg)"; \
docker run --rm -v $(DEMO_OUTPUT_DIR):/data node:alpine \
npx --yes svg-term-cli --in /data/$$(basename $$cast) --out /data/$$(basename $$svg) --window; \
done
🧰 Tools
πŸͺ› checkmake (0.3.2)

[warning] 719-719: Target body for "demo-svg" exceeds allowed length of 5 lines (7).

(maxbodylength)


[warning] 719-719: Required target "all" is missing from the Makefile.

(minphony)


[warning] 719-719: Required target "clean" is missing from the Makefile.

(minphony)

πŸ€– Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Makefile` around lines 718 - 726, The demo-svg recipe currently iterates over
an unquoted *.cast glob, so when no recordings exist it passes a literal path
into docker and fails confusingly. Update the demo-svg target to use
bash-friendly glob handling in the recipe (consistent with the existing
bash-only [[ ]] usage) by enabling a no-match-safe pattern or explicitly
checking for matching files before the loop, and keep the existing demo-svg
command flow and symbols like demo-svg, DEMO_OUTPUT_DIR, and the for cast loop
intact.


include Makefile.venv
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ To get started with OLM v1, please see our [Getting Started](https://operator-fr

### Quickstart DEMO

[![asciicast](https://asciinema.org/a/682344.svg)](https://asciinema.org/a/682344)
[![ClusterCatalog Demo](https://operator-framework.github.io/operator-controller/demos/clustercatalog-quickstart.svg)](https://operator-framework.github.io/operator-controller/)

### ClusterCatalog Quickstart Steps

Expand Down
Loading