#! /usr/bin/env python

import subprocess
import sys
import os

if len(sys.argv)!=2:
  print('usage: sub_test COMPILER')
  sys.exit(0)

# Find the base installation
compiler=sys.argv[1]
if not os.access(compiler,os.R_OK|os.X_OK):
  Fatal('Cannot execute compiler \''+compiler+'\'')

exe_name = "test_main_return"

p = subprocess.Popen([compiler, "-o", exe_name, "main_return.chpl"], 
    stdout=subprocess.PIPE)
myoutput = p.communicate()[0].decode()
sys.stdout.write(myoutput)
if p.returncode != 0:
  sys.stdout.write("[Error (sub_test): the compile did not exit cleanly]\n")
  sys.exit(1)
else:
  sys.stdout.write("[Success compiling main_return.chpl]\n")


if not os.access(exe_name,os.R_OK|os.X_OK):
  Fatal('Cannot execute %s' % exe_name)

numlocales = os.environ['NUMLOCALES']

if numlocales == "0":
  p = subprocess.Popen(["./%s" % exe_name], stdout=subprocess.PIPE)
else:
  p = subprocess.Popen(["./%s" % exe_name, "-nl%s" % numlocales],
      stdout=subprocess.PIPE)

myoutput = p.communicate()[0].decode()
sys.stdout.write(myoutput)
if p.returncode != 0:
  sys.stdout.write("[Error (sub_test): exe did not exit with 0]\n" % ENV_VAR)
else:
  sys.stdout.write("[Success matching 0 exit value]\n")

if numlocales == "0":
  p = subprocess.Popen(["./%s" % exe_name, "--ret_val=42"],
                       stdout=subprocess.PIPE)
else:
  p = subprocess.Popen(["./%s" % exe_name,"-nl%s" % numlocales,"--ret_val=42"],
                        stdout=subprocess.PIPE)

myoutput = p.communicate()[0].decode()
sys.stdout.write(myoutput)
if p.returncode != 42:
  sys.stdout.write("[Error (sub_test): exe did not exit with 42]\n" % ENV_VAR)
else:
  sys.stdout.write("[Success matching 42 exit value]\n")

os.remove(exe_name)
if os.access(exe_name + "_real", os.F_OK):
  os.remove(exe_name + "_real")

