Skip to content

Improve atmos describe affected and atmos describe stacks commands#1590

Merged
aknysh merged 7 commits intomainfrom
update-describe-affected-14
Oct 4, 2025
Merged

Improve atmos describe affected and atmos describe stacks commands#1590
aknysh merged 7 commits intomainfrom
update-describe-affected-14

Conversation

@aknysh
Copy link
Member

@aknysh aknysh commented Oct 4, 2025

what

  • Process templates and YAML functions by default in atmos describe stacks command
  • Exclude disabled dependent components from atmos describe affected --include-dependents results
  • Filter dependents by stack when using atmos describe affected --stack <stack> --include-dependents
  • Add comprehensive test coverage for describe affected scenarios

why

1. atmos describe stacks - Enable Template/Function Processing by Default

The documentation states that atmos describe stacks processes templates and YAML functions by default, but the code was doing the opposite. This change aligns the implementation with the documentation and provides consistency with other atmos describe commands.

Users can still disable processing with:

  • --process-templates=false
  • --process-functions=false

2. atmos describe affected --include-dependents - Honor metadata.enabled: false

When using --include-dependents, disabled dependent components (with metadata.enabled: false) should not be included in the dependents list for each affected component. This prevents showing components that are intentionally disabled from being part of the dependency chain.

3. atmos describe affected --stack <stack> --include-dependents - Filter Dependents by Stack

When using both --stack <stack> and --include-dependents flags together, the provided stack filter should apply to:

  • The affected components (existing behavior)
  • AND the dependent components (new behavior)

This ensures that when filtering by a specific stack, you only see the dependency relationships within that stack, making it easier to understand stack-specific impacts.

Example:

# Show affected components in ue1-network and their dependents (also in ue1-network only)
atmos describe affected --stack ue1-network --include-dependents

Test Coverage

Added comprehensive test coverage for all describe affected scenarios:

  • TestDescribeAffectedWithTemplatesAndFunctions - Template/function processing enabled
  • TestDescribeAffectedWithoutTemplatesAndFunctions - Template/function processing disabled
  • TestDescribeAffectedWithExcludeLocked - Exclude locked components
  • TestDescribeAffectedWithDependents - Include all dependents
  • TestDescribeAffectedWithDependentsWithoutTemplates - Dependents without template processing
  • TestDescribeAffectedWithDependentsFilteredByStack - Filter dependents to specific stack (ue1-network)
  • TestDescribeAffectedWithDisabledDependents - Verify disabled components excluded (uw2-network)

Summary by CodeRabbit

  • New Features
    • Describe stacks now processes templates and YAML functions by default.
  • Bug Fixes
    • Dependents handling respects target stack filters and excludes disabled components.
  • Documentation
    • Added note that disabled components are excluded from dependents.
    • Updated integration docs to reference ATMOS_VERSION 1.194.0.
  • Chores
    • Example Dockerfile updated to ATMOS_VERSION 1.194.0.
    • AWS SDK S3 manager bumped (patch).
  • Style
    • Minor comment and formatting cleanups.

@aknysh aknysh requested a review from a team as a code owner October 4, 2025 03:49
@github-actions github-actions bot added the size/m Medium size PR label Oct 4, 2025
@mergify
Copy link

mergify bot commented Oct 4, 2025

Important

Cloud Posse Engineering Team Review Required

This pull request modifies files that require Cloud Posse's review. Please be patient, and a core maintainer will review your changes.

To expedite this process, reach out to us on Slack in the #pr-reviews channel.

@mergify mergify bot added the needs-cloudposse Needs Cloud Posse assistance label Oct 4, 2025
@aknysh aknysh added the no-release Do not create a new release (wait for additional code changes) label Oct 4, 2025
@aknysh aknysh self-assigned this Oct 4, 2025
@osterman
Copy link
Member

osterman commented Oct 4, 2025

@aknysh update PR description and title

@aknysh aknysh changed the title feat: improve describe affected and describe stacks commands Improve atmos describe affected and atmos describe stacks commands Oct 4, 2025
@codecov
Copy link

codecov bot commented Oct 4, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 60.92%. Comparing base (dcbf2df) to head (4510a64).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main    #1590      +/-   ##
==========================================
+ Coverage   60.82%   60.92%   +0.10%     
==========================================
  Files         290      290              
  Lines       32848    32858      +10     
==========================================
+ Hits        19979    20019      +40     
+ Misses      10988    10957      -31     
- Partials     1881     1882       +1     
Flag Coverage Δ
unittests 60.92% <100.00%> (+0.10%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
cmd/aws_eks_update_kubeconfig.go 100.00% <ø> (ø)
cmd/cmd_utils.go 18.79% <ø> (ø)
cmd/describe_stacks.go 84.37% <100.00%> (+0.67%) ⬆️
cmd/terraform_commands.go 92.10% <ø> (ø)
cmd/validate_editorconfig.go 22.00% <ø> (ø)
internal/exec/describe_affected.go 62.71% <100.00%> (+0.84%) ⬆️
internal/exec/describe_affected_utils_2.go 68.06% <100.00%> (+3.98%) ⬆️
internal/exec/describe_dependents.go 76.85% <100.00%> (+0.20%) ⬆️
internal/exec/terraform_utils.go 75.14% <100.00%> (+0.07%) ⬆️

... and 3 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Oct 4, 2025

📝 Walkthrough

Walkthrough

Sets ProcessTemplates and ProcessYamlFunctions true by default for describe stacks; adds an onlyInStack filter to addDependentsToAffected and propagates it to call sites/tests; treat components with metadata.enabled: false as disabled when computing dependents; bumps Atmos and an AWS SDK dependency; plus comment/import cosmetic edits and test/fixture updates.

Changes

Cohort / File(s) Summary
Cosmetic / comment / import tweaks
cmd/aws_eks_update_kubeconfig.go, cmd/cmd_utils.go, cmd/terraform_commands.go, cmd/validate_editorconfig.go, demo/screengrabs/Makefile
Punctuation, comment and import-order adjustments; Makefile comment path clarified. No behavioral changes.
Describe stacks defaults and tests
cmd/describe_stacks.go, cmd/describe_stacks_test.go
Defaulted ProcessTemplates and ProcessYamlFunctions to true; tests updated to include new ProcessYamlFunctions field in expectations.
Describe affected: onlyInStack filter and tests
internal/exec/describe_affected.go, internal/exec/describe_affected_utils_2.go, internal/exec/describe_affected_test.go
Added onlyInStack parameter to addDependentsToAffected; early-skip when an affected item’s Stack != onlyInStack; tests refactored and new cases added; test helper introduced.
Describe dependents: skip disabled components
internal/exec/describe_dependents.go, tests/fixtures/.../us-west-2.yaml, website/docs/cli/commands/describe/describe-dependents.mdx
Dependency walkthrough now also skips components with metadata.enabled: false (in addition to abstract components); fixture marks a component disabled; docs updated to note exclusion.
Terraform affected call-site update
internal/exec/terraform_utils.go
Calls to addDependentsToAffected updated with the new onlyInStack parameter (empty string at this site).
Version bumps
examples/quick-start-advanced/Dockerfile, website/docs/integrations/atlantis.mdx, go.mod
ATMOS_VERSION bumped to 1.194.0 in Dockerfile/docs; AWS S3 manager bumped to v1.19.11 in go.mod.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor User
  participant CLI as CLI (describe stacks)
  participant Args as Arg Parser
  participant Exec as Exec Layer

  User->>CLI: atmos describe stacks ...
  CLI->>Args: set defaults
  Note right of Args #BBE3FF: ProcessTemplates = true<br/>ProcessYamlFunctions = true
  Args->>Exec: Execute with args
  Exec-->>User: Output
Loading
sequenceDiagram
  autonumber
  actor User
  participant Exec as Describe Affected
  participant Dep as addDependentsToAffected
  participant DD as Describe Dependents

  User->>Exec: Execute(includeDependents, onlyInStack?)
  Exec->>Dep: addDependentsToAffected(affected, onlyInStack)
  loop for each affected item
    alt onlyInStack set AND item.Stack != onlyInStack
      Dep-->>Dep: continue (skip)
    else
      Dep->>DD: ExecuteDescribeDependents(...)
      Note right of DD #F3F7D9: Skip abstract & disabled components
      DD-->>Dep: dependents
    end
  end
  Dep-->>Exec: augmented affected
  Exec-->>User: Result
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested labels

minor

Suggested reviewers

  • osterman
  • milldr

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 40.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed The title concisely and accurately describes the main enhancements to both the atmos describe affected and atmos describe stacks commands introduced by this pull request.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch update-describe-affected-14

📜 Recent review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between fd3454b and 4510a64.

📒 Files selected for processing (1)
  • internal/exec/describe_affected_test.go (14 hunks)
🧰 Additional context used
📓 Path-based instructions (5)
**/*_test.go

📄 CodeRabbit inference engine (.cursor/rules/atmos-rules.mdc)

**/*_test.go: Every new feature must include comprehensive unit tests
Test both happy paths and error conditions
Use table-driven tests for multiple scenarios

**/*_test.go: Use table-driven tests for unit tests.
Always use t.Skipf(...) with a clear reason when skipping tests; do not use t.Skip().
TestMain must call os.Exit(m.Run()) to propagate the test exit code for CLI tests.
Co-locate test files with implementation (use _test.go alongside .go files) and maintain naming symmetry with implementation files.

Files:

  • internal/exec/describe_affected_test.go
**/*.go

📄 CodeRabbit inference engine (.cursor/rules/atmos-rules.mdc)

**/*.go: All code must pass golangci-lint checks
Follow Go error handling idioms and use meaningful error messages
Wrap errors with context using fmt.Errorf("context: %w", err)
Consider custom error types for domain-specific errors
Follow standard Go coding style; run gofmt and goimports
Use snake_case for environment variables
Document complex logic with inline comments

**/*.go: All Go comments must end with periods. Enforced by golangci-lint's godot.
Organize imports into three groups (stdlib, third-party, Atmos) separated by blank lines; sort alphabetically within each group; maintain existing aliases.
Add defer perf.Track(...) to all public functions and critical private functions, with a blank line after the call and package-prefixed name (e.g., "exec.ProcessComponent"). Use atmosConfig if available, otherwise nil.
Wrap all errors using static errors defined in errors/errors.go; never return dynamic errors directly.
Use the error wrapping pattern: fmt.Errorf("%w: details", errUtils.ErrStaticError, ...) with %w to preserve error chains and add context after the static error.
Bind environment variables with viper.BindEnv() and provide ATMOS_ alternatives for every env var (e.g., viper.BindEnv("ATMOS_GITHUB_TOKEN", "GITHUB_TOKEN")).
Ensure cross-platform compatibility: prefer SDKs over invoking binaries, use filepath.Join, os.PathSeparator/PathListSeparator, and runtime.GOOS when necessary.

Files:

  • internal/exec/describe_affected_test.go
internal/exec/**/*_test.go

📄 CodeRabbit inference engine (CLAUDE.md)

Add comprehensive tests for new template functions in internal/exec/.

Files:

  • internal/exec/describe_affected_test.go
{cmd,internal,pkg}/**/*.go

📄 CodeRabbit inference engine (CLAUDE.md)

{cmd,internal,pkg}/**/*.go: Do not use logging for UI output. Send prompts/status/progress and actionable errors to stderr; send data/results to stdout; keep logging for system/debug with structured fields.
Most text UI must go to stderr; only data/results go to stdout. Prefer utils.PrintfMessageToTUI for UI messages.
For non-standard execution paths, capture telemetry using telemetry.CaptureCmd(...) or telemetry.CaptureCmdString(...); never capture user data.

Files:

  • internal/exec/describe_affected_test.go
{internal/exec,pkg}/**/*.go

📄 CodeRabbit inference engine (CLAUDE.md)

All new configs must support Go templating using FuncMap() from internal/exec/template_funcs.go.

Files:

  • internal/exec/describe_affected_test.go
🧠 Learnings (3)
📚 Learning: 2024-11-13T21:37:07.852Z
Learnt from: Cerebrovinny
PR: cloudposse/atmos#764
File: internal/exec/describe_stacks.go:289-295
Timestamp: 2024-11-13T21:37:07.852Z
Learning: In the `internal/exec/describe_stacks.go` file of the `atmos` project written in Go, avoid extracting the stack name handling logic into a helper function within the `ExecuteDescribeStacks` method, even if the logic appears duplicated.

Applied to files:

  • internal/exec/describe_affected_test.go
📚 Learning: 2024-10-20T00:57:53.500Z
Learnt from: haitham911
PR: cloudposse/atmos#731
File: internal/exec/validate_stacks.go:0-0
Timestamp: 2024-10-20T00:57:53.500Z
Learning: In `internal/exec/validate_stacks.go`, when downloading the Atmos JSON Schema file to the temp directory, the temporary file is overwritten each time, so explicit removal is not necessary.

Applied to files:

  • internal/exec/describe_affected_test.go
📚 Learning: 2025-08-16T23:33:07.477Z
Learnt from: aknysh
PR: cloudposse/atmos#1405
File: internal/exec/describe_dependents_test.go:651-652
Timestamp: 2025-08-16T23:33:07.477Z
Learning: In the cloudposse/atmos Go codebase, ExecuteDescribeDependents expects a pointer to AtmosConfiguration (*schema.AtmosConfiguration), so when calling it with a value returned by cfg.InitCliConfig (which returns schema.AtmosConfiguration), the address-of operator (&) is necessary: ExecuteDescribeDependents(&atmosConfig, ...).

Applied to files:

  • internal/exec/describe_affected_test.go
🧬 Code graph analysis (1)
internal/exec/describe_affected_test.go (3)
pkg/schema/schema.go (4)
  • AtmosConfiguration (27-63)
  • Affected (608-627)
  • Dependent (658-673)
  • Settings (679-683)
internal/exec/describe_affected.go (1)
  • DescribeAffectedCmdArgs (28-49)
internal/exec/describe_affected_helpers.go (1)
  • ExecuteDescribeAffectedWithTargetRepoPath (352-412)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (8)
  • GitHub Check: Build (macos-latest, macos)
  • GitHub Check: Build (windows-latest, windows)
  • GitHub Check: Build (ubuntu-latest, linux)
  • GitHub Check: Analyze (go)
  • GitHub Check: website-deploy-preview
  • GitHub Check: Lint (golangci)
  • GitHub Check: Run pre-commit hooks
  • GitHub Check: Summary
🔇 Additional comments (5)
internal/exec/describe_affected_test.go (5)

158-220: LGTM: Excellent test helper refactoring.

The setupDescribeAffectedTest helper effectively reduces duplication across test functions. Good use of t.Helper() and t.Cleanup() following modern Go test patterns.


102-119: LGTM: Good test coverage for new parameters.

The new test cases properly exercise the IncludeDependents flag and Stack filter, covering both the unfiltered and filtered dependent scenarios.


222-463: LGTM: Comprehensive test coverage with clear expectations.

The refactored tests cleanly leverage the new helper and provide thorough coverage of template processing and exclude-locked scenarios. The //nolint:dupl directives are justified since each test verifies distinct behavior.


465-791: LGTM: Dependents inclusion properly tested.

Both tests correctly verify that dependents are included when requested, with appropriate handling of template processing. The semantic distinction between nil and empty slice for the Dependents field is properly maintained.


793-1091: LGTM: Excellent semantic documentation and test coverage.

These tests thoroughly verify the new stack-filtering and disabled-dependent-exclusion features. The inline comments clearly document the three-state semantic for the Dependents field (nil vs empty slice vs populated), which aids understanding and maintainability.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

coderabbitai[bot]
coderabbitai bot previously approved these changes Oct 4, 2025
@aknysh aknysh requested a review from osterman October 4, 2025 04:15
- Add test case with IncludeDependents flag
- Add test case with IncludeDependents and Stack filter
- Increases Execute function coverage from 75.0% to 87.5%
- Covers the addDependentsToAffected call with onlyInStack parameter
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
internal/exec/describe_affected_test.go (1)

239-239: Add periods to inline comments.

All Go comments must end with periods per the coding guidelines (enforced by golangci-lint's godot).

As per coding guidelines.

Apply this diff to add periods to the inline comments:

-			Dependents:           nil, // must be nil to match actual
+			Dependents:           nil, // Must be nil to match actual.

Apply similar changes to all inline comments at lines 239, 252, 273, 287, 331, 345, 366, 380, 423, 437, 941, 955, 1007, 1028, 1049, 1063, and 1064.

Also applies to: 252-252, 273-273, 287-287, 331-331, 345-345, 366-366, 380-380, 423-423, 437-437, 941-941, 955-955, 1007-1007, 1028-1028, 1049-1049, 1063-1064

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 7a25782 and fd3454b.

📒 Files selected for processing (1)
  • internal/exec/describe_affected_test.go (14 hunks)
🧰 Additional context used
📓 Path-based instructions (5)
**/*_test.go

📄 CodeRabbit inference engine (.cursor/rules/atmos-rules.mdc)

**/*_test.go: Every new feature must include comprehensive unit tests
Test both happy paths and error conditions
Use table-driven tests for multiple scenarios

**/*_test.go: Use table-driven tests for unit tests.
Always use t.Skipf(...) with a clear reason when skipping tests; do not use t.Skip().
TestMain must call os.Exit(m.Run()) to propagate the test exit code for CLI tests.
Co-locate test files with implementation (use _test.go alongside .go files) and maintain naming symmetry with implementation files.

Files:

  • internal/exec/describe_affected_test.go
**/*.go

📄 CodeRabbit inference engine (.cursor/rules/atmos-rules.mdc)

**/*.go: All code must pass golangci-lint checks
Follow Go error handling idioms and use meaningful error messages
Wrap errors with context using fmt.Errorf("context: %w", err)
Consider custom error types for domain-specific errors
Follow standard Go coding style; run gofmt and goimports
Use snake_case for environment variables
Document complex logic with inline comments

**/*.go: All Go comments must end with periods. Enforced by golangci-lint's godot.
Organize imports into three groups (stdlib, third-party, Atmos) separated by blank lines; sort alphabetically within each group; maintain existing aliases.
Add defer perf.Track(...) to all public functions and critical private functions, with a blank line after the call and package-prefixed name (e.g., "exec.ProcessComponent"). Use atmosConfig if available, otherwise nil.
Wrap all errors using static errors defined in errors/errors.go; never return dynamic errors directly.
Use the error wrapping pattern: fmt.Errorf("%w: details", errUtils.ErrStaticError, ...) with %w to preserve error chains and add context after the static error.
Bind environment variables with viper.BindEnv() and provide ATMOS_ alternatives for every env var (e.g., viper.BindEnv("ATMOS_GITHUB_TOKEN", "GITHUB_TOKEN")).
Ensure cross-platform compatibility: prefer SDKs over invoking binaries, use filepath.Join, os.PathSeparator/PathListSeparator, and runtime.GOOS when necessary.

Files:

  • internal/exec/describe_affected_test.go
internal/exec/**/*_test.go

📄 CodeRabbit inference engine (CLAUDE.md)

Add comprehensive tests for new template functions in internal/exec/.

Files:

  • internal/exec/describe_affected_test.go
{cmd,internal,pkg}/**/*.go

📄 CodeRabbit inference engine (CLAUDE.md)

{cmd,internal,pkg}/**/*.go: Do not use logging for UI output. Send prompts/status/progress and actionable errors to stderr; send data/results to stdout; keep logging for system/debug with structured fields.
Most text UI must go to stderr; only data/results go to stdout. Prefer utils.PrintfMessageToTUI for UI messages.
For non-standard execution paths, capture telemetry using telemetry.CaptureCmd(...) or telemetry.CaptureCmdString(...); never capture user data.

Files:

  • internal/exec/describe_affected_test.go
{internal/exec,pkg}/**/*.go

📄 CodeRabbit inference engine (CLAUDE.md)

All new configs must support Go templating using FuncMap() from internal/exec/template_funcs.go.

Files:

  • internal/exec/describe_affected_test.go
🧠 Learnings (2)
📚 Learning: 2024-10-20T00:57:53.500Z
Learnt from: haitham911
PR: cloudposse/atmos#731
File: internal/exec/validate_stacks.go:0-0
Timestamp: 2024-10-20T00:57:53.500Z
Learning: In `internal/exec/validate_stacks.go`, when downloading the Atmos JSON Schema file to the temp directory, the temporary file is overwritten each time, so explicit removal is not necessary.

Applied to files:

  • internal/exec/describe_affected_test.go
📚 Learning: 2025-08-16T23:33:07.477Z
Learnt from: aknysh
PR: cloudposse/atmos#1405
File: internal/exec/describe_dependents_test.go:651-652
Timestamp: 2025-08-16T23:33:07.477Z
Learning: In the cloudposse/atmos Go codebase, ExecuteDescribeDependents expects a pointer to AtmosConfiguration (*schema.AtmosConfiguration), so when calling it with a value returned by cfg.InitCliConfig (which returns schema.AtmosConfiguration), the address-of operator (&) is necessary: ExecuteDescribeDependents(&atmosConfig, ...).

Applied to files:

  • internal/exec/describe_affected_test.go
🧬 Code graph analysis (1)
internal/exec/describe_affected_test.go (4)
pkg/schema/schema.go (5)
  • AtmosConfiguration (27-63)
  • Affected (608-627)
  • ConfigAndStacksInfo (457-534)
  • Dependent (658-673)
  • Settings (679-683)
internal/exec/describe_affected.go (1)
  • DescribeAffectedCmdArgs (28-49)
pkg/config/config.go (1)
  • InitCliConfig (25-62)
internal/exec/describe_affected_helpers.go (1)
  • ExecuteDescribeAffectedWithTargetRepoPath (352-412)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (8)
  • GitHub Check: Build (macos-latest, macos)
  • GitHub Check: Build (ubuntu-latest, linux)
  • GitHub Check: Build (windows-latest, windows)
  • GitHub Check: Analyze (go)
  • GitHub Check: Lint (golangci)
  • GitHub Check: Run pre-commit hooks
  • GitHub Check: website-deploy-preview
  • GitHub Check: Summary
🔇 Additional comments (2)
internal/exec/describe_affected_test.go (2)

158-220: LGTM!

The new setupDescribeAffectedTest helper effectively eliminates duplication across test functions and properly uses t.Helper() and t.Cleanup.


222-1091: LGTM!

The new and updated test functions provide comprehensive coverage of the describe affected functionality:

  • Template and function processing (on/off)
  • Locked component exclusion
  • Dependent processing with stack filtering
  • Disabled dependent exclusion

The nil vs empty slice semantics for the Dependents field is correctly implemented per the PR objectives.

@aknysh aknysh merged commit 138ac96 into main Oct 4, 2025
53 checks passed
@aknysh aknysh deleted the update-describe-affected-14 branch October 4, 2025 17:48
@mergify mergify bot removed the needs-cloudposse Needs Cloud Posse assistance label Oct 4, 2025
@github-actions
Copy link

github-actions bot commented Oct 8, 2025

These changes were released in v1.194.0.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

no-release Do not create a new release (wait for additional code changes) size/m Medium size PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants