<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Jorn,<br>
    <br>
    Yes, short term, I would recommend option 2 as the way to go. There
    should be examples to copy, and if you want to get cute and avoid
    another source file, your test could have a main program that checks
    if TZ is set, and if so, it re-execs itself without TZ.<br>
    <br>
    Long term, I think the right way to handle this would be either as
    an option or an argument on the "@run main" and "@run shell" action
    tags.<br>
    <br>
    Neither are great, syntax-wise, but either would be good enough for
    your specific case:<br>
    <br>
    For example,<br>
    <br>
    main[/fail][/manual][/othervm][/policy=<var><file></var>][/secure=<var><class></var>]
    [/timeout=<var><seconds></var>]<font color="#3333ff"><tt>[/e:NAME=VALUE]*</tt></font>
    <var><vm-opt>*</var>
    <var><class></var> <var><arg>*</var><br>
    <br>
    main[/fail][/manual][/othervm][/policy=<var><file></var>][/secure=<var><class></var>]
    [/timeout=<var><seconds></var>] <font color="#3333ff"><tt>[NAME=VALUE]*</tt></font>
    <var><vm-opt>*</var>
    <var><class></var> <var><arg>*</var><br>
    <br>
    I'll file an RFE for jtreg.<br>
    <br>
    -- Jon<br>
    <br>
    <div class="moz-cite-prefix">On 09/21/2018 04:18 PM, Jorn Vernee
      wrote:<br>
    </div>
    <blockquote cite="mid:1bb49bb555e050b6ce75f3b13e99c767@xs4all.nl"
      type="cite">Hey Jon,
      <br>
      <br>
      Thanks for the suggestions (and thank you Michel for forwarding!).
      <br>
      <br>
      I will go with option 2 I think. I'm running the tests through
      `make test`, so I'm not sure how I would use the command-line
      flag, but setting a flag all the time is just what I'm trying to
      avoid any ways :) It doesn't look like there is a way to pass
      jtreg options from the test file itself? (maybe something like
      `@params "-eTZ="`).
      <br>
      <br>
      The test is calling a C standard library function, so that is to
      blame for the environment variable dependency.
      <br>
      <br>
      Thanks,
      <br>
      Jorn
      <br>
      <br>
      Jonathan Gibbons schreef op 2018-09-21 23:29:
      <br>
      <blockquote type="cite">Jorn,
        <br>
        <br>
        There is only limited amount of support for setting env
        variables in
        <br>
        jtreg tests, because at least in the
        <br>
        early releases of JDK, the use of environment variables was
        discouraged.
        <br>
        <br>
        Using `@run shell unsettz.sh` will not have the desired effect
        because
        <br>
        it will only affect the shell
        <br>
        that is created to run your shell script, and will not have a
        <br>
        persistent environment on any other
        <br>
        process.
        <br>
        <br>
        If you don't mind always setting a command-line option, you
        might try
        <br>
        using `-eTZ=` on the jtreg
        <br>
        command-line, which will unset TZ for all tests, although it
        would be
        <br>
        more accurate to say that
        <br>
        it will not set it for any tests.
        <br>
        <br>
        The only way to change the setting of TZ for any specific test
        will be
        <br>
        to do one of the
        <br>
        following:
        <br>
        <br>
        1. Write the test as a shell script that unsets TZ and then runs
        any
        <br>
        Java code, using various
        <br>
            shell environment variables that will be available; these
        <br>
        generally begin with "TEST".
        <br>
        <br>
        2. Write the test as a Java program that execs a child process
        to run
        <br>
        Java, with the exact set
        <br>
            of environment variables you want to pass in. There are
        system
        <br>
        properties that identify
        <br>
            the test JDK, test class path and so on; these generally
        begin with "test.".
        <br>
        <br>
        These days, writing shell tests is generally discouraged,
        because it
        <br>
        is notoriously difficult to get it
        <br>
        right on all relevant platforms, and because these days, it is
        <br>
        reasonably easy to use either
        <br>
        the Java SE Process[Builder] API or test library API to invoke
        java.
        <br>
        <br>
        Hope that helps; if you have follow-up questions, please cc: me
        <br>
        directly or use one of the jtreg-* aliases,
        <br>
        since I am not on the panama-dev list.
        <br>
        <br>
        -- Jon
        <br>
        <br>
        On 09/21/2018 02:12 PM, Michel Trudeau wrote:
        <br>
        <blockquote type="cite">[adding jtreg mailing list to seek out
          answer about jtreg and TZ on Windows]
          <br>
          <br>
          On Sep 21, 2018, at 12:44 PM, Jorn Vernee
          <a class="moz-txt-link-rfc2396E" href="mailto:jbvernee@xs4all.nl"><jbvernee@xs4all.nl></a> wrote:
          <br>
          <br>
          Hello guys,
          <br>
          <br>
          I was running into a problem with the test_time test in
          StdLibTest. The generator for test values was apparently
          generating invalid values. After fixing that, all the test
          iterations were failing because the hours were off by one (the
          output of LocalDateTime.getHours() is being compared to the
          output of localtime().hour()). Good thing somebody else on the
          internet seems to have had the same problem [1]. TL;DR when
          using the MSVC version of localtime, and when running in
          cygwin, the function tries to interpret the TZ environment
          variable, but since that has a unix format (courtesy of
          cygwin), the interpretation fails and defaults to GMT. When TZ
          is not set, it defaults to the system default timezone, which
          is also what's being tested against.
          <br>
          <br>
          I can get the tests to pass by using `unset TZ` in the cygwin
          terminal before running them, but I'd have to do that every
          time I reboot it. I was trying to unset TZ automatically by
          using jtreq `@run shell unsettz.sh` where unsettz.sh is a file
          containing just the command `unset TZ`. It seems to be running
          successfully according to the test output:
          <br>
          <br>
          ACTION: shell -- Passed. Execution successful
          <br>
          REASON: User specified action: run shell unsettz.sh
          <br>
          TIME:   0.126 seconds
          <br>
          messages:
          <br>
          command: shell unsettz.sh
          <br>
          reason: User specified action: run shell unsettz.sh
          <br>
          elapsed time (seconds): 0.126
          <br>
          STDOUT:
          <br>
          STDERR:
          <br>
          <br>
          But it doesn't seem to affect the tests itself, and they still
          fail (still off by 1 hour).
          <br>
          <br>
          I was wondering if there is a way to let jtreg control
          environment variables? Or maybe you can suggest a different
          solution?
          <br>
          <br>
          The jtreg guide [2] mentions that TZ will be propagated from
          Windows 'if set', but I need it to be not set, or
          automatically set to the system's default time zone (by
          default it's blank).
          <br>
          <br>
          (other than that, tests are looking good: `passed: 24; failed:
          4; error: 1`. I just need to fix structs by value, which on
          Windows cheats and just passes a pointer. 2 failing tests are
          from jextract missing)
          <br>
          <br>
          Thanks,
          <br>
          Jorn
          <br>
          <br>
          [1] : <a class="moz-txt-link-freetext" href="https://stackoverflow.com/q/11655003">https://stackoverflow.com/q/11655003</a>
          <br>
          [2] : <a class="moz-txt-link-freetext" href="http://openjdk.java.net/jtreg/tag-spec.html">http://openjdk.java.net/jtreg/tag-spec.html</a>
          <br>
          <br>
        </blockquote>
      </blockquote>
    </blockquote>
    <br>
  </body>
</html>