From bbb8d3c3572e385037f4fcbea3a35d11450b0a7c Mon Sep 17 00:00:00 2001 From: Tom Most Date: Tue, 14 Sep 2021 10:17:05 -0700 Subject: [PATCH] fix(package): Ignore setup.cfg attr: and file: (#3054) The setup.cfg version key allows "attr:" and "file:" directives to load the actual value from elsewhere [1]. Treat these as if no version was found, since the text of the directive isn't the version number we're after. [1]: https://setuptools.readthedocs.io/en/latest/userguide/declarative_config.html#specifying-values --- src/modules/package.rs | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/src/modules/package.rs b/src/modules/package.rs index f6ff410f5..885a38066 100644 --- a/src/modules/package.rs +++ b/src/modules/package.rs @@ -84,7 +84,11 @@ fn get_setup_cfg_version(context: &Context, config: &PackageConfig) -> Option Option { @@ -613,6 +617,34 @@ license = "MIT" project_dir.close() } + #[test] + fn test_extract_setup_cfg_version_attr() -> io::Result<()> { + let config_name = "setup.cfg"; + let config_content = String::from( + "[metadata] + version = attr: mymod.__version__", + ); + + let project_dir = create_project_dir()?; + fill_config(&project_dir, config_name, Some(&config_content))?; + expect_output(&project_dir, None, None); + project_dir.close() + } + + #[test] + fn test_extract_setup_cfg_version_file() -> io::Result<()> { + let config_name = "setup.cfg"; + let config_content = String::from( + "[metadata] + version = file: version.txt", + ); + + let project_dir = create_project_dir()?; + fill_config(&project_dir, config_name, Some(&config_content))?; + expect_output(&project_dir, None, None); + project_dir.close() + } + #[test] fn test_extract_gradle_version_single_quote() -> io::Result<()> { let config_name = "build.gradle";