fn default_lib_name_windows()

in include/pyo3/pyo3-build-config/src/impl_.rs [2488:2671]


    fn default_lib_name_windows() {
        use PythonImplementation::*;
        assert_eq!(
            super::default_lib_name_windows(
                PythonVersion { major: 3, minor: 9 },
                CPython,
                false,
                false,
                false,
                false,
            )
            .unwrap(),
            "python39",
        );
        assert!(super::default_lib_name_windows(
            PythonVersion { major: 3, minor: 9 },
            CPython,
            false,
            false,
            false,
            true,
        )
        .is_err());
        assert_eq!(
            super::default_lib_name_windows(
                PythonVersion { major: 3, minor: 9 },
                CPython,
                true,
                false,
                false,
                false,
            )
            .unwrap(),
            "python3",
        );
        assert_eq!(
            super::default_lib_name_windows(
                PythonVersion { major: 3, minor: 9 },
                CPython,
                false,
                true,
                false,
                false,
            )
            .unwrap(),
            "python3.9",
        );
        assert_eq!(
            super::default_lib_name_windows(
                PythonVersion { major: 3, minor: 9 },
                CPython,
                true,
                true,
                false,
                false,
            )
            .unwrap(),
            "python3",
        );
        assert_eq!(
            super::default_lib_name_windows(
                PythonVersion { major: 3, minor: 9 },
                PyPy,
                true,
                false,
                false,
                false,
            )
            .unwrap(),
            "python39",
        );
        assert_eq!(
            super::default_lib_name_windows(
                PythonVersion { major: 3, minor: 9 },
                CPython,
                false,
                false,
                true,
                false,
            )
            .unwrap(),
            "python39_d",
        );
        // abi3 debug builds on windows use version-specific lib on 3.9 and older
        // to workaround https://github.com/python/cpython/issues/101614
        assert_eq!(
            super::default_lib_name_windows(
                PythonVersion { major: 3, minor: 9 },
                CPython,
                true,
                false,
                true,
                false,
            )
            .unwrap(),
            "python39_d",
        );
        assert_eq!(
            super::default_lib_name_windows(
                PythonVersion {
                    major: 3,
                    minor: 10
                },
                CPython,
                true,
                false,
                true,
                false,
            )
            .unwrap(),
            "python3_d",
        );
        // Python versions older than 3.13 don't support gil_disabled
        assert!(super::default_lib_name_windows(
            PythonVersion {
                major: 3,
                minor: 12,
            },
            CPython,
            false,
            false,
            false,
            true,
        )
        .is_err());
        // mingw and free-threading are incompatible (until someone adds support)
        assert!(super::default_lib_name_windows(
            PythonVersion {
                major: 3,
                minor: 12,
            },
            CPython,
            false,
            true,
            false,
            true,
        )
        .is_err());
        assert_eq!(
            super::default_lib_name_windows(
                PythonVersion {
                    major: 3,
                    minor: 13
                },
                CPython,
                false,
                false,
                false,
                true,
            )
            .unwrap(),
            "python313t",
        );
        assert_eq!(
            super::default_lib_name_windows(
                PythonVersion {
                    major: 3,
                    minor: 13
                },
                CPython,
                true, // abi3 true should not affect the free-threaded lib name
                false,
                false,
                true,
            )
            .unwrap(),
            "python313t",
        );
        assert_eq!(
            super::default_lib_name_windows(
                PythonVersion {
                    major: 3,
                    minor: 13
                },
                CPython,
                false,
                false,
                true,
                true,
            )
            .unwrap(),
            "python313t_d",
        );
    }