PDA

View Full Version : Unexpanded macro value


raistlin
11-13-2014, 06:04 AM
I am trying to unexpand the macro value. A macro with this value is parsed and i want to retain its value.

"BUILD_URL=http://jenkins/job/Test%20New%20NUnit%20Test%20Script/lastBuild"


To use the value above, i need to convert % to %% so VBP will not treat %20New% as an expandable macro, i think.

I tried to do it this way without avail.
Option Explicit

Dim build_url

build_url = "%BUILD_URL%"

If Len(build_url) > 0 Then

build_url = Replace( build_url, "%%", "%%%%" )
SetTemporaryMacroValue "BUILD_URL", build_url <--- this is a subfunction i use in the script

End If

What can i do to use a macro with %20xxx%20 in it without expansion? Thanks.

What i need is the opposite of http://www.kinook.com/Forum/showthread.php?t=1233

kinook
11-13-2014, 07:23 AM
What do you mean by 'a macro with this value is parsed'? How was the BUILD_URL macro initialized? Literal % characters in the macro value should be escaped when creating the macro. The vbld_EscapeString system script function can be used for this.
http://www.kinook.com/VisBuildPro/Manual/sysscriptmisc.htm

To assign a macro value to another macro value, just copy the raw value without expanding. See the attached sample.

raistlin
11-13-2014, 08:02 AM
The value is parsed as an environment variable when initiated by a jenkins job.

See https://wiki.jenkins-ci.org/display/JENKINS/Building+a+software+project#Buildingasoftwareproje ct-JenkinsSetEnvironmentVariables

The job build command:
VisBuildcmd.exe "BUILD_URL=%BUILD_URL%" /mta /b NUnitTest.bld

When expanded to on the test machine, it becomes:
VisBuildcmd.exe "BUILD_URL=http://jenkins/job/Test%20New%20NUnit%20Test%20Script/lastBuild" /mta /b NUnitTest.bld

Some of the jobs name have spaces, so these spaces are escaped to become %20 in the BUILD_URL env var.
Eg: http://jenkins/job/TestNewNUnitTestScript/ - OK
Eg: http://jenkins/job/Test New NUnit Test Script/ - Still OK, but will be escaped to:
http://jenkins/job/Test%20New%20NUnit%20Test%20Script/ - Not OK

I do not want to replace spaces with underscores in the job name. Hence the problem.

raistlin
11-13-2014, 08:11 AM
Thanks for the codes, however it still fails with these error:

Error in Run Script (VBScript) script code at Line 11, Column 1 (http://jenkins/job/Test<Undefined macro 20New>20NUnit<Undefined macro 20Test>20Script/lastBuild)
13-11-2014 14:07:27: Step '4 - use' failed
13-11-2014 14:07:27: Build ended (elapsed = 00:00:00).

You can create a macro with this value to reproduce this problem:
http://jenkins/job/Test%20New%20NUnit%20Test%20Script/lastBuild

My real challenge is trying to use the macro out of the script, here:
1158

kinook
11-13-2014, 08:16 AM
Add a step at the beginning of the project to escape the BUILD_URL macro value that was passed in (see attached).
http://www.kinook.com/VisBuildPro/Manual/specialchars.htm

raistlin
11-13-2014, 08:27 AM
Epic. Thanks alot for this!

teognost
02-07-2022, 07:24 PM
Is there any way to copy the escaped macro value BUILD_URL to another project macro BUILD_URL3(not a temp macro)?
In the sample attached I tried to do it with a Set macro step but it did not work -the macro BUILD_URL3 has the unescaped value(The next step log macro fails)

kinook
02-07-2022, 11:53 PM
In a Set Macro action, check the 'Don't expand macros and script' option.

https://kinook.com/VisBuildPro/Manual/setmacroaction.htm

teognost
02-08-2022, 04:41 AM
Thanks!And if in the Value field there is the macro I do not want expanded and another macro which I want to have it expanded?

kinook
02-08-2022, 11:21 AM
You can't expand partially. It's all or nothing. Escape (double) something that should not be evaluated as a macro.

teognost
02-08-2022, 03:17 PM
Thanks.I found another way-I set in the Value field of Set Macro:
[vbld_EscapeString("%BUILD_URL%")]