<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/102704>102704</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [llvm-lit] Enable lit internal shell by default
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          connieyzhu
      </td>
    </tr>
</table>

<pre>
    This is a meta-issue that addresses the problem referenced in [[RFC] Enabling the Lit Internal Shell by Default](https://discourse.llvm.org/t/rfc-enabling-the-lit-internal-shell-by-default/80179/18).

**Brief problem summary**: 
Many `RUN` line commands used in `LLVM` tests are written in a way that only works on POSIX-compliant shells, leading to issues on platforms like Windows or non-POSIX systems. To overcome these discrepancies, lit has an internal shell implementation designed to ensure uniform execution of these commands, regardless of the platform. Although the internal shell supports most common commands, it still lacks several capabilities that are necessary for it to become the default shell when running `LLVM` tests.

This meta-issue tracks the following issues:
**Subproject Issues**: 

- [ ] **[[llvm][llvm-lit] Enable internal shell for llvm test suite](https://github.com/llvm/llvm-project/issues/102697)**

> Missing Capabilities Blocking Enablement:
> - [ ] [cat -v](https://github.com/llvm/llvm-project/issues/102374) 
> - [ ] [env subcommand](https://github.com/llvm/llvm-project/issues/102383)
> - [ ] [Environment variable](https://github.com/llvm/llvm-project/issues/102395)

- [ ] **[[clang][llvm-lit] Enable internal shell for clang test suite](https://github.com/llvm/llvm-project/issues/102699)**

> Missing Capabilities Blocking Enablement:
> - [ ] [Environment variable](https://github.com/llvm/llvm-project/issues/102395) 
> - [ ] [Command substitution](https://github.com/llvm/llvm-project/issues/102384)
> - [ ] [Unhashable Type](https://github.com/llvm/llvm-project/issues/102389) 
> - [ ] [Expected string not found in input](https://github.com/llvm/llvm-project/issues/102695)

- [ ] **[[lld][llvm-lit] Enable internal shell for lld test suite](https://github.com/llvm/llvm-project/issues/102700)**

> Missing Capabilities Blocking Enablement:
> - [ ] [Environment variable](https://github.com/llvm/llvm-project/issues/102395) 
> - [ ] [Curly brace](https://github.com/llvm/llvm-project/issues/102382)

- [ ] **[[lldb][llvm-lit] Enable internal shell for lldb test suite](https://github.com/llvm/llvm-project/issues/102698)**

> Missing Capabilities Blocking Enablement:
> - [ ] [cat -e](https://github.com/llvm/llvm-project/issues/102377)
> - [ ] [No such file or directory](https://github.com/llvm/llvm-project/issues/102696)

- [ ] **[[BOLT][llvm-lit] Enable internal shell for BOLT test suite](https://github.com/llvm/llvm-project/issues/102701)**

> Missing Capabilities Blocking Enablement:
> - [ ] [|& syntax change](https://github.com/llvm/llvm-project/issues/102388)
> - [ ] [Parentheses](https://github.com/llvm/llvm-project/issues/102401)
> - [ ] [TypeError: String argument expected](https://github.com/llvm/llvm-project/issues/102693)
> - [ ] [Attributeerror](https://github.com/llvm/llvm-project/issues/102399) 

- [ ] **[[compiler-rt][llvm-lit] Enable internal shell for compiler-rt test suite](https://github.com/llvm/llvm-project/issues/102702)**

> Missing Capabilities Blocking Enablement:
> - [ ] [Environment variable](https://github.com/llvm/llvm-project/issues/102395) 
> - [ ] [Ulimit](https://github.com/llvm/llvm-project/issues/102398)
> - [ ] [Unset](https://github.com/llvm/llvm-project/issues/102397)
> - [ ] [Expected string not found in input](https://github.com/llvm/llvm-project/issues/102695)
> - [ ] [InternalShellError](https://github.com/llvm/llvm-project/issues/102386)
> - [ ] [Attribute Error](https://github.com/llvm/llvm-project/issues/102399)
> - [ ] [Unhashable Type](https://github.com/llvm/llvm-project/issues/102389)
> - [ ] [For loop](https://github.com/llvm/llvm-project/issues/102380)
> - [ ] [Unsupported redirect](https://github.com/llvm/llvm-project/issues/102385)
> - [ ] [Command substitution](https://github.com/llvm/llvm-project/issues/102384)
> - [ ] [Parentheses](https://github.com/llvm/llvm-project/issues/102401)
> - [ ] [No such file or directory](https://github.com/llvm/llvm-project/issues/102696)

This is a comprehensive list of all the features to be implemented.
**Feature List:**

- [ ] [cat -v](https://github.com/llvm/llvm-project/issues/102374) 
- [ ] [env subcommand](https://github.com/llvm/llvm-project/issues/102383)
- [ ] [Environment variable](https://github.com/llvm/llvm-project/issues/102395)
- [ ] [Command substitution](https://github.com/llvm/llvm-project/issues/102384)
- [ ] [Unhashable Type](https://github.com/llvm/llvm-project/issues/102389) 
- [ ] [Expected string not found in input](https://github.com/llvm/llvm-project/issues/102695)
- [ ] [Curly brace](https://github.com/llvm/llvm-project/issues/102382)
- [ ] [cat -e](https://github.com/llvm/llvm-project/issues/102377)
- [ ] [No such file or directory](https://github.com/llvm/llvm-project/issues/102696)
- [ ] [Ulimit](https://github.com/llvm/llvm-project/issues/102398)
- [ ] [Unset](https://github.com/llvm/llvm-project/issues/102397)
- [ ] [|& syntax change](https://github.com/llvm/llvm-project/issues/102388)
- [ ] [Parentheses](https://github.com/llvm/llvm-project/issues/102401)
- [ ] [TypeError: String argument expected](https://github.com/llvm/llvm-project/issues/102693)
- [ ] [Attribute Error](https://github.com/llvm/llvm-project/issues/102399)
- [ ] [InternalShellError](https://github.com/llvm/llvm-project/issues/102386)
- [ ] [For loop](https://github.com/llvm/llvm-project/issues/102380)
- [ ] [Unsupported redirect](https://github.com/llvm/llvm-project/issues/102385)

This issue will help track the progress of enabling the lit internal shell across all LLVM subprojects.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcWVtP474S_zTpyyhV6vSWhz5wq7QS7K4W2HNenWTS-ODYkccpm_Pp_7IToMtCBfqHIK2EStU4c_3N1ZxI7BTiJlicBovzCW9sqc0m00oJbP9fNpNU5-3mphQEgoBDhZaHgqhBsCW3wPPcIBES2BKhNjqVWIHBAg2qDHMQCjzt0x_bs2BxDheKp1KonT9_KSx8URaN4hKuS5QS0hbOseCNtMHiPGDr0tqagvgkYNuAbXNBmW4M4VTKfTXVZhewrQ3Y1hRZiD3p0JYYSmFD0ZMOyZEO0zbMe9Jsu45mqyRg29k6YMk0iM6D6KT_ZO7v1AgsHhWipqq4abtHQXwC3dErrloIltGP26_BMgIpFEKmq4qrnKChXv1ldHn588odsEiWgBuEeyOsReWec7jnbWdNrWQL99rcEWgF379df_lvmOmqloIrC14LCtgZSOS5t6EG7wt_vJbcFtpUBFLcIfxHqFzfE2gDSqvQEwNqyWJFU7jRoPdoMl05RyIhONMarLnKBHZMhIWSE3AnZe8jLwKIqpZYobLcCq0gRw-i3ImDihqD0CjhRAH8hVnjD-mi5_NgH8fC4I6bXCJR__xRiSmcSFvqZlf6n58JQE1da2MJKk3WU9TqN8LCAlkhJUie3REQ7tFwCRmveSqksMID1uHXICjMkIibFgpt3KtWQ4oPpoEeMz3r-xIVmEYpZ__nrv0NRz5oDuPFeFkcyUJLqe8dhc59Dt8H2Ltu0tro_2Fm4Uv3_Bnuus_QRRa4oOqf-zhzgeFCp_vm4uAx7P6wo9PXnfLSAzXC4ktRtxO2bNJppquAbT397l_YSxmwba8H284itkxWAUt6mQ4DK76AK0Hk9D479MSp1Nmd-7WT0iHrySLxBRwoujjNuIVwP4CY8WoesAReYYNqD9SkPaiGYLeOnVVe5nah9sJo5TSHPTfCmWEInsniiecRzGSSq917QONfGBo1yQei5kMN_BqGzjrwOByRFdYnwkGQNH8dSbeq5FR6v9209SA6rpMjOl78qjGzmANZ45yhtIVCN8qXPqHq5sU6_m5svA3HUubvS335sBheRdFfh-HGyBZSw7NhsMTe6sj0nZ5Mh05H648uYoMYdLV6PRd81UBNVkIhJLo-MBcGM6tNO4h9lm_y5Om3y5v3eNKdHzooZx_oyWB1FrAlUKss_wVZydVumEBZv-7X79yg8t00DcBq3tnnZVauhlwYo41rPq-7FM_NrvFJCPvcPwicjnRHJ9YakTYW0UsyRMo7LGnHGiNd1UKiCY19V3v09NrQWGZ_W4G5laISQzQJcXIkZG4V4TBMjuTb8Xuh5xI8LFP8LuViqGhZL98QmzAYu24QGLe9fYXd1vUWWteD8ImOwrNbaWAOBrs6PQjPI1j5jOlkxMo1bvPztCF1ud9giYrEHkEKsqAL4FJ2mx_ktjFI3Y7paZOG-fRwA7TtjsGlIJ-v_0j4I6xExluHjL0KGTsMxhzQP7cgjTQ6fvws9Smp5OP7og_vicaejUaqLp8-E43Yc43bUI7Rbo3eah22BNQg3AspoURZd5dAD3elO9PffOHhpagU9vlMyTOjiXwTcXn588rVql4Kmk7yTZwnccInuJmtWMzmy9k8mpSbZcSKJI4X-XKWRyxJeB7PijWyYhHP0kUym4gNcyhfRwmLWRJF0yKfZ0k-n8dROsuSPAvmEVZcyMfL1olXZ-MH0flE8hQlPVwdm423TtrsKJhHru-hp_essNJfMr8wP7-gb9o-3LpNGiM3_3Jknk_2G_ZPAAAA___aXIJg">