2016-10-10 4 views
1

Ich versuche Grunzen-exec zu verwenden, um einen Javascript-Test-Runner mit einem entfalteten Link-Variable übergeben laufen.Set Umgebungsvariablen Grunzen oder Grunzen-exec

Ich versuche, so zu tun, indem eine Umgebungsvariable grunt.option('link') mit exec:setLink. In meiner test_runner.js greife ich die Variable mit process.env.TEST_LINK. Leider scheint es, dass grunt-exec bash-Befehle wie export (?) Nicht ausführt.

Wirklich, ist mir egal, wie die Variable zu meinem test_runner.js wird, so dass alle anderen Ideen willkommen wären.

exec: { 

    // DOESN'T WORK: Sets env variable with link for selenium tests 
    setLink: { 
    cmd: function() { 
     return "export TEST_LINK=" + "'" + grunt.option('link') + "'"; 
    } 
    }, 
    // Integration tests, needs TEST_LINK 
    selenium: { 
    cmd: function() { 
     return "node test/runner/jasmine_runner.js"; 
    } 
    } 

Antwort

2

Mit grunt-exec, Umgebungsvariablen für das Kind können in den env option angegeben werden:

exec: { 
    selenium: { 
    cmd: function() { 
     return "node test/runner/jasmine_runner.js"; 
    }, 
    options: { 
     env: { 
     'TEST_LINK': grunt.option('link') 
     } 
    } 
    } 
} 

Eine Sache im Auge zu behalten ist, dass, wenn nur TEST_LINK in der env Option angegeben, dass Wille ist die einzige Umgebungsvariable für den untergeordneten Prozess. Wenn Sie den aktuellen Prozess der Umgebungsvariablen wollen weitergegeben werden, auch, können Sie etwas tun:

exec: { 
    selenium: { 
    cmd: function() { 
     return "node test/runner/jasmine_runner.js"; 
    }, 
    options: { 
     env: Object.assign({}, process.env, { 'TEST_LINK': grunt.option('link') }) 
    } 
    } 
} 
+0

Haben Sie tatsächlich versucht Dies? Es funktionierte nicht wirklich für mich. – Tyler

+0

Nicht kürzlich und nicht mit Ihrer Konfig, aber ich habe es schon einmal benutzt. Es übergibt die Option 'env' direkt an den Aufruf 'exec' des untergeordneten Prozesses. Wie auch immer, ich sehe, dass Sie Ihr Problem gelöst haben, indem Sie die Variable setting in die Umgebung von grunt process setzen. – cartant

1

ich nur Knoten process.env['TEST_LINK'] = grunt.option('link'); Dann mit process.env['TEST_LINK']; in mein Javascript abgerufen am Ende mit