# Copyright 2024 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Generated by //build/rust/tests/create_rustdoc_tests.py
# Test explanation: check that the constant appears in the docs

import unittest  # noqa
from sys import argv
from unittest import TestCase
from zipfile import Path

_doc_zip = argv.pop()


class Test(TestCase):
    _path: Path

    @classmethod
    def setUpClass(cls) -> None:
        cls._path = Path(_doc_zip)

    def testFileExists3(self) -> None:
        self.assertTrue(
            (self._path / "charlie/constant.CHARLIE.html").is_file(),
            msg=f"expected `charlie/constant.CHARLIE.html` to be a file in {repr(self._path)}",
        )
