Search code examples
azure-devopspostmannewmanpostman-collection-runner

Setting output variable using newman / postman is getting cut off


I have an output variable siteToDeploy and siteToStop. I am using postman to run a test script against the IIS Administration API. In the test portion of one of the requests I am trying to set the azure devops output variable. Its sort of working, but the variable value is getting cut off for some reason.

Here is the test script in postman: console.log(pm.globals.get("siteName"))

var response = pm.response.json();

var startedSite = _.find(response.websites, function(o) { return o.name.indexOf(pm.globals.get("siteName")) > -1 && pm.globals.get("siteName") &&  o.status == 'started'});
var stoppedSite = _.find(response.websites, function(o) { return o.name.indexOf(pm.globals.get("siteName"))  > -1 &&  o.status == 'stopped'});

if(stoppedSite && startedSite){

    console.log('sites found');

    console.log(stoppedSite.id)
    console.log('##vso[task.setvariable variable=siteToDeploy;]' + stoppedSite.id);
    console.log('##vso[task.setvariable variable=siteToStop;]' + startedSite.id);
}

Here is the output form Newman: Newman

Here is the output from a command line task echoing the $(siteToDeploy) variable. It's getting set, but not the entire value. enter image description here

I've tried escaping it, but that had no effect. I also created a static command line echo where the variable is set and that worked fine. So I am not sure if it is a Newman issue or Azure having trouble picking up the varaible.


Solution

  • The issue turned our to be how Azure is trying to parse the Newman console log output. I had to add an extra Powershell task to replace the ' coming back from the Newman output.

    This is what is looks like:

    ##This task is only here because of how Newman is writing out the console.log 
    Param(
    [string]$_siteToDeploy = (("$(siteToDeploy)") -replace "'",""),
    [string]$_siteToStop = (("$(siteToStop)") -replace "'","")
    )
    Write-Host ("##vso[task.setvariable variable=siteToDeploy;]{0}" -f  ($_siteToDeploy))
    Write-Host ("##vso[task.setvariable variable=siteToStop;]{0}" -f ($_siteToStop))