Skip to content
  • Michał Kępień's avatar
    Only use LC_ALL=C where intended · 2ee7ff23
    Michał Kępień authored
    The LC_ALL=C assignments in the "idna" system test, which were only
    meant to affect a certain subset of checks, in fact persist throughout
    all the subsequent checks in that system test.  That affects the test's
    behavior and is misleading.
    
    When the "VARIABLE=value command ..." syntax is used in a shell script,
    in order for the variable assignment to only apply to "command", the
    latter must be an external binary; otherwise, the VARIABLE=value
    assignment persists for all subsequent commands in a script:
    
        $ cat foo.sh
        #!/bin/sh
    
        foo() {
            /bin/sh bar.sh
        }
    
        BAR="baz0"
        BAR="baz1" /bin/sh bar.sh
        echo "foo: BAR=${BAR}"
        BAR="baz2" foo
        echo "foo: BAR=${BAR}"
    
        $ cat bar.sh
        #!/bin/sh
    
        echo "bar: BAR=${BAR}"
    
        $ /bin/sh foo.sh
        bar: BAR=baz1
        foo: BAR=baz0
        bar: BAR=baz2
        foo: BAR=baz2
        $
    
    Fix by saving the value of LC_ALL before the relevant set of checks in
    the "idna" system test, restoring it afterwards, and dropping the
    "LC_ALL=C command ..." syntax.
    2ee7ff23