Commit Graph

180 Commits

Author SHA1 Message Date
Martin Atkins
620b449533 Prepare for upgrade to golangci-lint v1.64.5
In a future commit we will adopt golangci-lint v1.64.5, which now triggers
lint warnings for some code that was previously not detected. This commit
is the smallest change to address those differences.

Unfortunately the "cloud" package and the "remote" backend both rely on
non-idiomatic error message formatting because they emit the returned error
message text directly into the UI, so to avoid changing the UI output but
also avoid significant refactoring this just adds nolint comments to those
for now. A future commit might address this by reworking things so that
the UI takes care of its own presentation concerns instead of relying on
the main implementation to directly generate UI-appropriate error strings.

This also completely disables the exportloopref linter, because that was
for a loop scoping hazard that was already addressed by a language change
in Go 1.22. This linter is therefore completely removed in newer versions
of golangci-lint and would thus generate an error if left enabled after
upgrading.

Signed-off-by: Martin Atkins <mart@degeneration.co.uk>
2025-02-26 11:33:43 -08:00
Mikel Olasagasti Uranga
66765bdab3 Fix: Ensure constant format strings in fmt and printf calls
Go 1.24 introduces stricter checks for format string validation.
This commit fixes instances where non-constant format strings were
used in calls to functions like `fmt.Errorf`, `fmt.Printf`, and similar.

Changes include:
- Replacing dynamically constructed strings passed as format strings
with constant format strings.
- Refactoring `fmt.Sprintf` calls to ensure the format string matches
the number of arguments provided.
- Simplifying redundant formatting and ensuring compliance with Go
1.24's stricter `vet` tool checks.

This update ensures compatibility with Go 1.24 and prevents potential
runtime errors caused by misinterpreted dynamic format strings.

Resolves #2389

Signed-off-by: Mikel Olasagasti Uranga <mikel@olasagasti.info>
Co-authored-by: Martin Atkins <mart@degeneration.co.uk>
Signed-off-by: Martin Atkins <mart@degeneration.co.uk>
2025-02-26 11:33:43 -08:00
Martin Atkins
30fcff72d8 tofu+configload: Test utilities take testing.TB
A lot of our testing utilities were written before the introduction of the
testing.TB interface that represents what *testing.T and *testing.B have
in common, and those that weren't have followed precedent from those that
were in directly expecting *testing.T.

Using testing.TB instead makes these helpers usable from both normal tests
and testing benchmark functions, since they only use methods that are
available in both contexts.

Signed-off-by: Martin Atkins <mart@degeneration.co.uk>
2025-02-19 08:15:29 -08:00
Andrei Ciobanu
dfe2876931 Add a new warning when a provider cannot be downloaded and it was requested by an implicit usage (#2479)
Signed-off-by: yottta <andrei.ciobanu@opentofu.org>
Co-authored-by: AbstractionFactory <179820029+abstractionfactory@users.noreply.github.com>
2025-02-12 18:40:54 +02:00
Andrei Ciobanu
22a42d87ab Dereference attributes during filtering to avoid schema cache altering (#2468)
Signed-off-by: yottta <andrei.ciobanu@opentofu.org>
2025-02-04 17:05:08 +02:00
Andrei Ciobanu
ab9a7f4d72 Fix error message when default value of variable is of wrong type (#2444)
Signed-off-by: yottta <andrei.ciobanu@opentofu.org>
2025-01-29 10:50:45 +02:00
Andrei Ciobanu
089687061b Fix: When a RequiredProvider is having syntax errors, return an empty one to allow further validations to generate their diags (#2408)
Signed-off-by: yottta <andrei.ciobanu@opentofu.org>
Co-authored-by: yottta <andpectech@gmail.com>
2025-01-28 15:47:17 +02:00
Christian Mesh
de5f273390 Use import provider instead of guess (#2336)
Signed-off-by: Christian Mesh <christianmesh1@gmail.com>
2025-01-24 17:18:08 -05:00
Marcin Wyszynski
f83849e95a Catch invalid name in provider_meta before it causes a crash (#2347)
Signed-off-by: Marcin Wyszynski <marcin.pixie@gmail.com>
2025-01-09 14:36:56 +00:00
Martin Atkins
ad32bde2ae Temporarily disable the complexity-related lint rules
We're intending to gradually improve all of the existing functions that
fail these checks as a separate project from other work, because fixing
for these particular lint rules tends to be too invasive to be safe or
sensible to combine with other work.

Therefore we'll temporarily disable these lints from the main lint run
and add a separate .golangci-complexity.yml that we can use to track our
progress towards eliminating those lint failures without continuing to
litter the code with nolint comments in the meantime.

This also removes all of the existing nolint comments for these linters so
that we can start fresh and review each one as part of our improvement
project.

We'll re-enable these linters (and remove .golangci-complexity.yml) once
each example has either been rewritten to pass the checks or we've
concluded that further decomposition would hurt readability and so added
"nolint" comments back in so we can review whether our lint rules are too
strict once we've got a bunch of examples to consider together.

Signed-off-by: Martin Atkins <mart@degeneration.co.uk>
2025-01-03 10:41:05 -05:00
Jon Johnson
c280c23b4c configs: Fix quadratic buildChildModules
By building a map from module path to snapshotModule we can avoid repeatedly scanning the set of modules for each call to Open.

Signed-off-by: Jon Johnson <jon.johnson@chainguard.dev>
2025-01-02 13:29:03 -08:00
Martin Atkins
f1358f9fe8 evalchecks: Suggest -exclude as a workaround for unknown count/for_each
Previously we made a very generic suggestion to use -target to split a
change into two parts as a workaround for the fact that count and for_each
must be known during planning. That works, but we didn't have enough
information available to tell the operator exactly what to target and so
anyone who is not an expert on the configuration they're working with tends
to get stuck unable to figure out exactly what they need to do.

The new -exclude option gives us an opportunity to do better here: we tend
to know for which object we're currently evaluating count or for_each, and
so we can mention that object directly in the error message when if we
recommend to use -exclude instead of -target.

Not all objects that support count/for_each will necessarily be directly
targetable, so we can still potentially recommend -target when we're
dealing with one of those objects. For example, as of this commit that
is true for for_each in a provider block, because there is not currently
any syntax for specifying a provider configuration as an addrs.Targetable.
Perhaps we'll introduce such a thing in the future, but that's outside the
scope of this change that's primarily focused on improving the messaging
for resource and module count/for_each.

Signed-off-by: Martin Atkins <mart@degeneration.co.uk>
2025-01-02 13:24:11 -08:00
Christian Mesh
00bc17917a Require static scope stack to have at least one entry
Kind of odd code smell, but the only alternative I could think of was a
panic.  Would rather ensure this requirement at compile time instead.

Signed-off-by: Christian Mesh <christianmesh1@gmail.com>
2024-12-11 10:14:49 -08:00
Martin Atkins
7fdc4909d6 configs: Some basic tests for StaticScope's GetLocalValue
Signed-off-by: Martin Atkins <mart@degeneration.co.uk>
2024-12-11 10:14:49 -08:00
Martin Atkins
083e5f2e1c configs: Early eval must "finalize" input variable values
In the main language runtime input variables have both a "raw" value as
provided by the caller and a "finalized" value that has been
type-converted, default-attributes-inserted, and validated.

Unfortunately the "early eval" codepath is essentially a reimplementation
of the language runtime in terms of data available in the static
configuration, and it previously wasn't properly emulating the finalization
of input variable values and was thus incorrectly exposing the "raw"
values into a module instead of the "finalized" values.

Since we are already in the v1.9 prerelease period significant refactoring
is too risky, and so this just copies the most important transformations
from the language runtime into the early eval runtime. We hope to find a
more sustainable way to implement this in the future, but that will likely
require refactoring of both the early eval codepath _and_ the traditional
language runtime, and so that work needs to begin early in a minor release
period.

Signed-off-by: Martin Atkins <mart@degeneration.co.uk>
2024-12-11 10:14:49 -08:00
Christian Mesh
f6a1d8e2dd Support References in Variable Validation (#2216)
Signed-off-by: Christian Mesh <christianmesh1@gmail.com>
2024-12-04 14:24:44 -05:00
Oleksandr Levchenkov
e5d26f9a71 make tofu test generate dynamic mock values (#2245)
Signed-off-by: ollevche <ollevche@gmail.com>
2024-12-04 16:22:54 +02:00
Christian Mesh
8fb8f066c4 Detect when provider and resource/module have identical for_each (#2186)
Signed-off-by: Christian Mesh <christianmesh1@gmail.com>
Signed-off-by: Martin Atkins <mart@degeneration.co.uk>
Co-authored-by: Martin Atkins <mart@degeneration.co.uk>
2024-12-03 14:02:27 -05:00
Oleksandr Levchenkov
6c8bfa2794 implement override resources for mock providers (#2168)
Signed-off-by: ollevche <ollevche@gmail.com>
2024-12-03 11:24:26 -05:00
Oleksandr Levchenkov
a117f86b98 Fix: Change warning to error when incorrect type is used for mocking a resource (#2220)
Signed-off-by: pooriaghaedi <pooria.ghaedi@aerlingus.com>
Signed-off-by: Pooria Ghaedi <36617391+pooriaghaedi@users.noreply.github.com>
Signed-off-by: ollevche <ollevche@gmail.com>
Co-authored-by: pooriaghaedi <pooria.ghaedi@aerlingus.com>
Co-authored-by: Pooria Ghaedi <36617391+pooriaghaedi@users.noreply.github.com>
2024-11-28 14:22:42 +02:00
Oleksandr Levchenkov
7645992d9b fix mock type conversion in tofu test (#2144)
Signed-off-by: ollevche <ollevche@gmail.com>
2024-11-20 17:47:13 +02:00
Christian Mesh
fd775f0fe3 Implement Provider for_each (#2105)
Signed-off-by: ollevche <ollevche@gmail.com>
Signed-off-by: Christian Mesh <christianmesh1@gmail.com>
Signed-off-by: Ronny Orot <ronny.orot@gmail.com>
Signed-off-by: Martin Atkins <mart@degeneration.co.uk>
Co-authored-by: ollevche <ollevche@gmail.com>
Co-authored-by: Ronny Orot <ronny.orot@gmail.com>
Co-authored-by: Martin Atkins <mart@degeneration.co.uk>
2024-11-05 18:08:23 -05:00
Christian Mesh
e802b23200 Partial revert of #1911, support provider for_each in aliases (#2121)
Signed-off-by: Christian Mesh <christianmesh1@gmail.com>
2024-11-05 06:19:52 -05:00
MS99-9
9c379c0dc0 [REFACTORING] Add description to the schemas used by tofu test #894 (#2029)
Signed-off-by: Ioannis Polyzos <git@ipolyzos.com>
Signed-off-by: Mohamed Medhat Mohamed Ibrahim Shalaby <mohamed.shalaby@tum.de>
Signed-off-by: AbstractionFactory <179820029+abstractionfactory@users.noreply.github.com>
Signed-off-by: Yousif Akbar <11247449+yhakbar@users.noreply.github.com>
Co-authored-by: Ioannis Polyzos <git@ipolyzos.com>
Co-authored-by: AbstractionFactory <179820029+abstractionfactory@users.noreply.github.com>
Co-authored-by: Mohamed Medhat Mohamed Ibrahim Shalaby <mohamed.shalaby@tum.de>
Co-authored-by: Yousif Akbar <11247449+yhakbar@users.noreply.github.com>
2024-10-21 11:00:33 +02:00
Christian Mesh
0d1e6cd5f0 Handle static variable secret flag (#2045)
Signed-off-by: Christian Mesh <christianmesh1@gmail.com>
2024-10-03 10:46:58 -04:00
Christian Mesh
53130fa487 Fix inverted entries in provider error message (#1991)
Signed-off-by: Christian Mesh <christianmesh1@gmail.com>
2024-09-18 11:11:15 -04:00
Viktor Szépe
bb63574f09 Fix typos (#1954)
Signed-off-by: Viktor Szépe <viktor@szepe.net>
2024-09-17 12:04:30 +02:00
dropbigfish
c068a70a9f chore: fix some function names (#1957)
Signed-off-by: dropbigfish <fillfish@foxmail.com>
2024-09-16 13:36:15 -04:00
Nathan Baulch
9b7bec31b4 Another batch of minor typos (#1953)
Signed-off-by: Nathan Baulch <nathan.baulch@gmail.com>
2024-09-09 07:51:39 -04:00
Andy Hayes
389f33fdc5 300/provider foreach (#1911)
Signed-off-by: Andrew Hayes <andrew.hayes@harness.io>
2024-09-06 14:33:05 +01:00
Nathan Baulch
ea558d9d4b Fix typos (#1905)
Signed-off-by: Nathan Baulch <nathan.baulch@gmail.com>
Signed-off-by: Christian Mesh <christianmesh1@gmail.com>
Co-authored-by: Christian Mesh <christianmesh1@gmail.com>
2024-08-29 13:20:33 -04:00
Christian Mesh
6f01428333 Fix missing module source panic (#1888)
Signed-off-by: Christian Mesh <christianmesh1@gmail.com>
2024-08-05 12:12:32 -04:00
Syasusu
1c0cb13bf7 feat: Add support for tofu.workspace which will be resolved in the same way as terraform.workspace (#1305)
Signed-off-by: Syasusu <syasusu@163.com>
2024-08-01 08:14:34 -04:00
Jon Johnson
e23aacb440 Avoid copies on calls to parser.Sources() (#1811)
Signed-off-by: Jon Johnson <jon.johnson@chainguard.dev>
2024-07-29 16:15:51 -04:00
Emre Duzgun
b93acf96a9 Fix more tests on Windows (#1824)
Signed-off-by: eduzgun <emreduz00@gmail.com>
2024-07-17 10:41:12 -04:00
Oleksandr Levchenkov
76e2d7c4fc fix: providers block shouldn't be merged with file mocks in tofu test (#1791)
Signed-off-by: ollevche <ollevche@gmail.com>
Signed-off-by: Oleksandr Levchenkov <ollevche@gmail.com>
Co-authored-by: Arel Rabinowitz <30493345+RLRabinowitz@users.noreply.github.com>
2024-07-10 16:18:09 +03:00
Oleksandr Levchenkov
9d9a7aab06 add mock providers for testing framework (#1772)
Signed-off-by: ollevche <ollevche@gmail.com>
2024-07-09 14:41:52 +03:00
Christian Mesh
2c5c8a5f72 Fix plan static variable injection (#1771)
Signed-off-by: Christian Mesh <christianmesh1@gmail.com>
Signed-off-by: James Humphries <james@james-humphries.co.uk>
Co-authored-by: James Humphries <james@james-humphries.co.uk>
2024-07-09 07:17:45 -04:00
Christian Mesh
edc654c1de Hardcode golangci-lint revision to fix build on main (#1759)
Signed-off-by: Christian Mesh <christianmesh1@gmail.com>
2024-07-01 10:47:26 -04:00
Oleksandr Levchenkov
19b5287b8f allow static evaluations in encryption configuration (#1728)
Signed-off-by: ollevche <ollevche@gmail.com>
Signed-off-by: Christian Mesh <christianmesh1@gmail.com>
Signed-off-by: Oleksandr Levchenkov <ollevche@gmail.com>
Co-authored-by: Christian Mesh <christianmesh1@gmail.com>
2024-06-24 10:18:16 -04:00
Christian Mesh
8f8e0aa4aa Static Evaluation Base, Module Sources, Backend Config (#1718)
Signed-off-by: Christian Mesh <christianmesh1@gmail.com>
Signed-off-by: Christian Mesh <cristianmesh1@gmail.com>
Co-authored-by: James Humphries <James@james-humphries.co.uk>
Co-authored-by: Oleksandr Levchenkov <ollevche@gmail.com>
2024-06-24 09:13:07 -04:00
Ronny Orot
ab289fc07c OpenTofu Specific Code Override: Add support to .tofu files (#1738)
Signed-off-by: Ronny Orot <ronny.orot@gmail.com>
2024-06-24 16:10:35 +03:00
Emre Duzgun
502877dbf7 initwd Windows tests fixes (#1723)
Signed-off-by: eduzgun <emreduz00@gmail.com>
Signed-off-by: Emre Duzgun <100037959+eduzgun@users.noreply.github.com>
2024-06-18 10:49:30 -04:00
Christian Mesh
2d72c90de1 Remove unused config parser (#1732)
Signed-off-by: Christian Mesh <christianmesh1@gmail.com>
2024-06-18 05:49:10 -04:00
Oleksandr Levchenkov
64fb36dc54 add override implementation for testing framework (#1499)
Signed-off-by: ollevche <ollevche@gmail.com>
Signed-off-by: Oleksandr Levchenkov <ollevche@gmail.com>
Co-authored-by: Janos <86970079+janosdebugs@users.noreply.github.com>
Co-authored-by: Ronny Orot <ronny.orot@gmail.com>
2024-06-06 13:20:41 +03:00
Oleksandr Levchenkov
5a161c8bcc add automated copyright header check (#1696)
Signed-off-by: ollevche <ollevche@gmail.com>
Signed-off-by: Oleksandr Levchenkov <ollevche@gmail.com>
2024-06-03 16:49:36 +03:00
Ronny Orot
cc8d6e07f4 Fix bug in import 'to' parsing in json configurations (#1665)
Signed-off-by: Ronny Orot <ronny.orot@gmail.com>
2024-05-27 11:49:30 +03:00
Siddhartha Sonker
de30707b6b Fix for tofu init failure when test have spaces in their name (#1489)
Signed-off-by: siddharthasonker95 <158144589+siddharthasonker95@users.noreply.github.com>
Signed-off-by: Christian Mesh <christianmesh1@gmail.com>
Co-authored-by: Christian Mesh <christianmesh1@gmail.com>
2024-04-25 11:11:38 -04:00
Ronny Orot
dcc1fa3b88 Support for_each syntax in import block (#1492)
Signed-off-by: RLRabinowitz <rlrabinowitz2@gmail.com>
Signed-off-by: Ronny Orot <ronny.orot@gmail.com>
Co-authored-by: RLRabinowitz <rlrabinowitz2@gmail.com>
2024-04-17 17:12:10 +03:00
Arel Rabinowitz
63c88507a8 Make import block's to possibly more dynamic (#1270)
Signed-off-by: RLRabinowitz <rlrabinowitz2@gmail.com>
Signed-off-by: Ronny Orot <ronny.orot@gmail.com>
Co-authored-by: Ronny Orot <ronny.orot@gmail.com>
2024-04-15 13:06:35 +03:00