# file      : tests/function/process/testscript
# license   : MIT; see accompanying LICENSE file

.include ../../common.testscript

: run
:
{{
  : process
  :
  {
    $* <<EOI >>~/EOO/
      print $process.run($build.path --version)
      EOI
      /build2 .+/
      /.+/*
      EOO
  }

  : bultin
  :
  {
    echo 'abc' >=f

    $* <<EOI >>EOO
      print $process.run(sed -e 's/abc/xyz/' f)
      EOI
      xyz
      EOO
  }

  : escape-bultin
  :
  if ($cxx.target.class == 'linux')
  {
    cat <<EOI >=f
      a


      b
      EOI

    $* <<EOI >>EOO
      print $process.run(^cat --squeeze-blank f)
      EOI
      a

      b
      EOO
  }
}}

: run-regex-match
:
{{
  : process
  :
  {{
    : success
    :
    {
      $* <<EOI >>~/EOO/
        print $process.run_regex($build.path --version, 'build2 .+')
        EOI
        /build2 .+/
        EOO
    }

    : failure
    :
    {
      $* <<EOI 2>>~/EOE/ != 0
        print $process.run_regex($build.path --version, 'build2 (.+')
        EOI
        /error: invalid argument: invalid regex .+/
        /.+
        EOE
    }
  }}

  : builtin
  :
  {{
    : success
    :
    {
      cat <<EOI >=f
        123
        abc
        EOI

      $* <<EOI >>EOO
        print $process.run_regex(cat f, 'a.+')
        EOI
        abc
        EOO
    }

    : failure
    :
    {
      echo 'a' >=f

      $* <<EOI 2>>~/EOE/ != 0
        print $process.run_regex(cat f, 'a(.+')
        EOI
        /error: invalid argument: invalid regex .+/
        /.+
        EOE
    }
  }}
}}

: run-regex-replace
:
{{
  : process
  :
  {
    $* <<EOI >>~/EOO/
      print $process.run_regex($build.path --version, 'build2 ([0-9.]+).*', '\1')
      EOI
      /[0-9]+.[0-9]+.[0-9]+/d
      EOO
  }

  : builtin
  :
  {
    cat <<EOI >=f
      123
      abc
      EOI

    $* <<EOI >>EOO
      print $process.run_regex(cat f, 'a(.+)', 'x\1')
      EOI
      xbc
      EOO
  }
}}

: search
:
{
  ext = ($cxx.target.class == 'windows' ? '\.exe' : '')

  $* <<EOI >>/~"%EOO%"
    print $process.search(diff)
    EOI
    %.+/diff$ext%
    EOO
}
