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

    <tr>
        <th>Summary</th>
        <td>
            Test clang-tools-extra/test/clang-doc/basic-project.test failing when built using non-ninja generator
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    We have an internal job which attempts to build the LLVM tree using the Visual Studio 2019 builder configuration (non-ninja) and it recently started hitting a test failure of clang-tools-extra/test/clang-doc/basic-project.test which I bisected back to when f14ad74478494cbd9d23af841d6f6b2808afda71 (#96358) was committed. The problem is that the change hard-codes how to find the dependent assets as `../share/clang-doc`. This is fine in ninja builds, but fails with the Visual Studio generator because the configuration name is part of the path.

For example, in a ninja build, the value of AssetsPath is (correctly) `C:\Dev\git\merge\build\bin\..\share\clang-doc\index.js`. But when using a Visual Studio generator, the value of AssetsPath is now `C:\Dev\git\merge\build\Debug\bin\..\share\clang-doc\index.js` which refers to a non-existent directory. In this particular case, it requires an extra `..` in the path to find the expected directory.

Lit test output:
```
FAIL: Clang Tools :: clang-doc/basic-project.test (1 of 1)
******************** TEST 'Clang Tools :: clang-doc/basic-project.test' FAILED ********************
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 1
rm -rf C:\Dev\git\merge\build\tools\clang\tools\extra\test\clang-doc\Output\basic-project.test.tmp && mkdir -p C:\Dev\git\merge\build\tools\clang\tools\extra\test\clang-doc\Output\basic-project.test.tmp/docs C:\Dev\git\merge\build\tools\clang\tools\extra\test\clang-doc\Output\basic-project.test.tmp/build
# executed command: rm -rf 'C:\Dev\git\merge\build\tools\clang\tools\extra\test\clang-doc\Output\basic-project.test.tmp'
# executed command: mkdir -p 'C:\Dev\git\merge\build\tools\clang\tools\extra\test\clang-doc\Output\basic-project.test.tmp/docs' 'C:\Dev\git\merge\build\tools\clang\tools\extra\test\clang-doc\Output\basic-project.test.tmp/build'
# RUN: at line 2
sed 's|$test_dir|C:/Dev/git/merge/clang-tools-extra/test/clang-doc|g' C:\Dev\git\merge\clang-tools-extra\test\clang-doc/Inputs/basic-project/database_template.json > C:\Dev\git\merge\build\tools\clang\tools\extra\test\clang-doc\Output\basic-project.test.tmp/build/compile_commands.json
# executed command: sed 's|$test_dir|C:/Dev/git/merge/clang-tools-extra/test/clang-doc|g' 'C:\Dev\git\merge\clang-tools-extra\test\clang-doc/Inputs/basic-project/database_template.json'
# RUN: at line 3
clang-doc --format=html --output=C:\Dev\git\merge\build\tools\clang\tools\extra\test\clang-doc\Output\basic-project.test.tmp/docs --executor=all-TUs C:\Dev\git\merge\build\tools\clang\tools\extra\test\clang-doc\Output\basic-project.test.tmp/build/compile_commands.json
# executed command: clang-doc --format=html '--output=C:\Dev\git\merge\build\tools\clang\tools\extra\test\clang-doc\Output\basic-project.test.tmp/docs' --executor=all-TUs 'C:\Dev\git\merge\build\tools\clang\tools\extra\test\clang-doc\Output\basic-project.test.tmp/build/compile_commands.json'
# .---command stdout------------
# | Emiting docs in html format.
# `-----------------------------
# .---command stderr------------
# | default index.js file missing at C:\Dev\git\merge\build\Debug\bin\..\share\clang-doc\index.js
# |
# `-----------------------------
# error: command failed with exit status: 1
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMWFtv2zgT_TX0y0CCTFmS9eCHVI6BAPku-Jr2eywocWQxlUgtOcrl3y8o2omzbdI2i8JrGC1iUjNnzjnDi4Rzaq8RNyz7wLLtQkzUGbuRj5PeL2ojHzf_R-jEHYLQoDSh1aKHW1PDfaeaDgQRDiM5IAP1pHoJ1CFcX3_-F5BFhMkpvZ9_-6zcJHr4SJNUBniyLMMDaKExulX7yQpSRgPja210pJW-FYyXILQERWCxQU39IzgSllBCp4h8cAGEjqAVqp8sgmmh6YXeR2RM7yJ8ICsY3_k5jO_CkDQN47taONVEozW32FA8BwlFXUGtHDY-SS2ar762-w41tMuVkMVqVaxX5aqpZSl5Ktr1ainzNq_5OlmLVopi6UtgPC3zNFv7Cu6Fg8YMgyJCGcNNhzBaU_c4gHJAnaCZoaYTeu_ZtjJqjEQHnbn3yVulA68SR9QSNYFwDsmBcMDyJI4Z37lOWHxRYZ74XMr5JK3SCErDzGog3jFeQT0F5hzcK-q-I9QeNVpBxkKNjZgcBqgvFNNiQJ9kFJY8_37GKKiLWbJlyUX4d2cs4IMYxh59YqVBnKLxv_nn7kQ_zSJezBX-V1DnQzO-boy12FD_6ClleVKx9IJl1RbvWFbtFbGsGtDukWVViJhVtdIsq-KYZVWgJ6ue6ckqpSU-xLduZurDREHlYFnxGg8_AKrN_U-C22I97X8J5MGeFlu0c8cJ8J2CD8qRN4VUniBjH2O40kDdQRLVTL2w0AgXmPe99MekLDrf1HODHFyUJ16Xo3wvrIcPY-iI5ySn6l4rCm1oJhon8tWH0Tw5fIMJLq6uWXoBlS8QbnyHgp-bXsAPOpPx9dKzvWS8PITm7__CzeXHG2C8-GUgjBfgq7jcwt8BEEq4fFAElZHo8y5P-azMMPiF7z8znb56R9JM5Ks_chtFRyJS-N-nf_sYgqD3nX6IZQeIbAs_YcZ5sTw67-TvsHxm1Vz6S2MGaD7GNyTFNIzAeM54DsNXqSxE43lQML6TpnFnSx6CP8mED9hMvouaoK_X7CCSN-N5QBZv43sS8HwIZw19550RwmGXKl7tOR5GHEoP07GiYnzlA3yRyrKimoHznQfOdx443wXgxz37BweWotp7Ct6o_9sw36mV7670OJH76-rmWRYkauHwiz_T9YIwvnX-QJZenrl_-K4xw6h6_HLwpZuRve3b3y3E2178PVq85b80jDxFhyhqjR0EsXTb0dBDFB035-1Z1-IoCnIZy9Kt6Pvo5tO5F-h3Gex1phkv_iFke6N-l-_zr6SvUH7q8DiKosMohPNPdPJ5nseKCi4HNV8HZ4spDbMQQZb4ZGaeRG99Xs2N1r6eW2Irpp7geFaHVvUIg3LhKkE_4-5fvQ6cAnhPfWitN8TF0dHzNRBluAeiP5g6EjS506Pp8TC_kJtUlmkpFrhZFsuyLLI8LRfdpk7KuiiXOV8v1zJbNQKbNK_zpOAiaUTCF2rDE75KiiRN0iRJy1jW66at67JI21pmTcFWCQ5C9XHf3w2xsfuFcm7CTVlkSbHoRY29m19WcK7xHuZBxjnLtgu78c9E9bR3bJX0ypF7jkKKetzc-KvE-18PeIq8ovM90QtHh9vi0wuL53viYrL9piMaXdhuwl7TTXXcmIHxnUd2-O9k2Z_r8ftBqPduw_8MAAD__0WspBk">