diff options
| author | ruki <[email protected]> | 2022-01-25 00:24:28 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2022-01-24 20:31:42 +0800 |
| commit | a1ecc4de70ff0e108bcf89fbccfd25189239071c (patch) | |
| tree | 08427c2894ba9c7fc11eabdb3f961b31b55e3cf6 | |
| parent | 335c29ab1f40b8db81dce90388d846bdb0682e10 (diff) | |
fix path
| -rw-r--r-- | CHANGELOG.md | 8 | ||||
| -rw-r--r-- | tests/modules/path/test.lua | 10 | ||||
| -rw-r--r-- | xmake/core/base/path.lua | 8 |
3 files changed, 23 insertions, 3 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 094ae16b8..95e10a350 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## master (unreleased) +### Bugs fixed + +* [#2005](https://github.com/xmake-io/xmake/issues/2005): Fix path.extension + ## v2.6.3 ### New features @@ -1191,6 +1195,10 @@ ## master (开发中) +### Bugs 修复 + +* [#2005](https://github.com/xmake-io/xmake/issues/2005): Fix path.extension + ## v2.6.3 ### 新特性 diff --git a/tests/modules/path/test.lua b/tests/modules/path/test.lua index 4217dec16..80e87c5aa 100644 --- a/tests/modules/path/test.lua +++ b/tests/modules/path/test.lua @@ -24,4 +24,12 @@ function test_splitenv_unix(t) t:are_equal(path.splitenv('a%tag:b%tag'), {'a','b'}) t:are_equal(path.splitenv('a%tag:b%%tag%%'), {'a','b'}) t:are_equal(path.splitenv('a%tag:b:%tag:'), {'a','b'}) -end
\ No newline at end of file +end + +function test_extension(t) + t:are_equal(path.extension("1.1/abc"), "") + t:are_equal(path.extension("1.1\\abc"), "") + t:are_equal(path.extension("foo.so"), ".so") + t:are_equal(path.extension("/home/foo.so"), ".so") + t:are_equal(path.extension("\\home\\foo.so"), ".so") +end diff --git a/xmake/core/base/path.lua b/xmake/core/base/path.lua index 18dbc6b01..92b926705 100644 --- a/xmake/core/base/path.lua +++ b/xmake/core/base/path.lua @@ -72,10 +72,14 @@ end function path.extension(p, level) local i = p:lastof(".", true) if i then + local ext = p:sub(i) + if ext:find("[/\\]") then + return "" + end if level and level > 1 then - return path.extension(p:sub(1, i - 1), level - 1) .. p:sub(i) + return path.extension(p:sub(1, i - 1), level - 1) .. ext end - return p:sub(i) + return ext else return "" end |
