diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..71f576a --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,23 @@ +name: Test Plugin + +on: + pull_request: + push: + branches: [main] + +permissions: + contents: read + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 + with: + persist-credentials: false + - uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6 + with: + go-version: '1.24.0' + cache: false + - name: Test Java version resolution with vfox's Lua interpreter + run: go run github.com/yuin/gopher-lua/cmd/glua@v1.1.1 tests/pre_use_test.lua diff --git a/hooks/pre_use.lua b/hooks/pre_use.lua index 71f6bad..e6f3644 100644 --- a/hooks/pre_use.lua +++ b/hooks/pre_use.lua @@ -15,10 +15,11 @@ function PLUGIN:PreUse(ctx) if distribution_version and distribution_version.distribution.short_name ~= "open" then return { version = distribution_version.version .. "-" .. distribution_version.distribution.short_name + .. (distribution_version.javafx_bundled and "-fx" or "") } else return { version = input_version, } end -end \ No newline at end of file +end diff --git a/tests/pre_use_test.lua b/tests/pre_use_test.lua new file mode 100644 index 0000000..b513cac --- /dev/null +++ b/tests/pre_use_test.lua @@ -0,0 +1,34 @@ +package.path = './lib/?.lua;' .. package.path +package.preload['vfox.strings'] = function() + return { split = function(value, separator) + local result = {} + local start = 1 + while true do + local position = value:find(separator, start, true) + if not position then + table.insert(result, value:sub(start)) + return result + end + table.insert(result, value:sub(start, position - 1)) + start = position + #separator + end + end } +end +PLUGIN = {} +dofile('hooks/pre_use.lua') +local cases = { + {'8.0.482+8-zulu-fx', '8.0.482+8-zulu-fx'}, + {'zulu-8.0.482+8-fx', '8.0.482+8-zulu-fx'}, + {'17.0.17-liberica-fx', '17.0.17-librca-fx'}, + {'8.0.482+8-zulu', '8.0.482+8-zulu'}, + {'temurin-21.0.1', '21.0.1-tem'}, + {'21.0.1-fx', '21.0.1-fx'}, + {'21.0.1', '21.0.1'}, + {'21', ''}, +} +for _, case in ipairs(cases) do + local result = PLUGIN:PreUse({version = case[1]}) + local version = type(result) == 'table' and result.version or result + assert(version == case[2], case[1] .. ': expected ' .. case[2] .. ', got ' .. tostring(version)) +end +print('PASS: ' .. #cases .. ' PreUse regression cases')