ovh / venom

🐍 Manage and run your integration tests with efficiency - Venom run executors (script, HTTP Request, web, imap, etc... ) and assertions
Apache License 2.0
1.06k stars 144 forks source link

(suggestion) replace "{{ }}" with "$( )", "${ }" or any yaml-friendly marker #769

Closed cdevienne closed 3 months ago

cdevienne commented 9 months ago

Using {{ and }} for variable substitution makes it cumbersome to generate venom scripts with yaml library, when we need to make data substitutions (as opposed to string substitutions).

The following script is a valid venom script but cannot be written or parsed by a standard yaml library:

vars:
  credentials:
    username: xxx
    password: yyy
testcases:
- name: login
  steps:
    - type: myexecutor
      credentials: {{ .credentials }}

In this particular case, the variable cannot be enclosed in " because the executor needs a map, not a string.

Using an alternative marker, in addition to {{}} (if not in replacement of) would make things a lots smoother for programs that manipulates venom scripts.

yesnault commented 3 months ago

(nothing planned about that replacement for now)

cdevienne commented 3 months ago

How about an alternative markup in addition to {{}} that would not break any existing script but would still solve my main issue? I can provide a patch.

yesnault commented 3 months ago

For now, the basecode is linked to the CDS SDK Interpolate func (github.com/ovh/cds/sdk/interpolate), not sure that it's possible to add an alternative markup easily.

In the next major release, we will move to ${{..}} and remove the CDS Interpolate usage. --> https://github.com/ovh/venom/issues/804

cdevienne commented 3 months ago

this is excellent news, thanks!