sonarlint-ls: update 3.14.1 -> 3.17.0 and fix test (#390097)

This commit is contained in:
Weijia Wang
2025-03-18 00:26:06 +01:00
committed by GitHub
2 changed files with 44 additions and 73 deletions
+44 -56
View File
@@ -6,34 +6,27 @@
jdk17,
makeWrapper,
writeShellApplication,
runCommand,
sonarlint-ls,
curl,
pcre,
common-updater-scripts,
jq,
gnused,
versionCheckHook,
}:
maven.buildMavenPackage rec {
pname = "sonarlint-ls";
version = "3.14.1.75775";
version = "3.17.0.75948";
src = fetchFromGitHub {
owner = "SonarSource";
repo = "sonarlint-language-server";
rev = version;
hash = "sha256-QXBSdXpkhqcvfjihcWwy4oCjTMmbAJRZG1T66sa8T4U=";
hash = "sha256-9ZZPAkfYnHYaPFGo/WfOhUIZ+Aq7SNsVmyXgDwe68gk=";
};
# Replaces unavailable versions with available ones in maven central. Can be
# removed again if
# https://github.com/SonarSource/sonarlint-language-server/pull/427 is
# merged.
patches = [ ./sonar-analyzers-versions.patch ];
mvnJdk = jdk17;
mvnHash = "sha256-SKkOf3f9Ze3Rm6i2uYbFkvSnnEySARvaoiAS1e2kFi0=";
mvnHash = "sha256-tsYkp6Zr9gCgb0l6vQViSB7zcbf6JX+JwO4ZYqeG52c=";
# Disables failing tests which either need network access or are flaky.
mvnParameters = lib.escapeShellArgs [
@@ -56,7 +49,6 @@ maven.buildMavenPackage rec {
makeWrapper ${jre_headless}/bin/java $out/bin/sonarlint-ls \
--add-flags "-jar $out/share/sonarlint-ls.jar" \
--add-flags "-stdio" \
--add-flags "-analyzers $(ls -1 $out/share/plugins | tr '\n' ' ')"
runHook postInstall
@@ -64,51 +56,47 @@ maven.buildMavenPackage rec {
nativeBuildInputs = [ makeWrapper ];
passthru = {
tests = {
sonarlint-ls-starts-successfully = runCommand "${pname}-test" { } ''
${sonarlint-ls}/bin/sonarlint-ls > $out
cat $out | grep "SonarLint backend started"
nativeInstallCheckInputs = [ versionCheckHook ];
doInstallCheck = true;
preVersionCheck = "export version=${lib.versions.majorMinor version}";
versionCheckProgramArg = "-V";
passthru.updateScript =
let
pkgFile = builtins.toString ./package.nix;
in
lib.getExe (writeShellApplication {
name = "update-${pname}";
runtimeInputs = [
curl
pcre
common-updater-scripts
jq
gnused
];
text = ''
if [ -z "''${GITHUB_TOKEN:-}" ]; then
echo "no GITHUB_TOKEN provided - you could meet API request limiting" >&2
fi
LATEST_TAG=$(curl -H "Accept: application/vnd.github+json" \
''${GITHUB_TOKEN:+-H "Authorization: bearer $GITHUB_TOKEN"} \
-Lsf https://api.github.com/repos/${src.owner}/${src.repo}/tags | \
jq -r '[.[] | select(.name | test("^[0-9]"))] | sort_by(.name | split(".") |
map(tonumber)) | reverse | .[0].name')
update-source-version ${pname} "$LATEST_TAG"
sed -i '0,/mvnHash *= *"[^"]*"/{s/mvnHash = "[^"]*"/mvnHash = ""/}' ${pkgFile}
echo -e "\nFetching all mvn dependencies to calculate the mvnHash. This may take a while ..."
nix-build -A ${pname}.fetchedMavenDeps 2> ${pname}-stderr.log || true
NEW_MVN_HASH=$(grep "got:" ${pname}-stderr.log | awk '{print ''$2}')
rm ${pname}-stderr.log
# escaping double quotes looks ugly but is needed for variable substitution
# use # instead of / as separator because the sha256 might contain the / character
sed -i "0,/mvnHash *= *\"[^\"]*\"/{s#mvnHash = \"[^\"]*\"#mvnHash = \"$NEW_MVN_HASH\"#}" ${pkgFile}
'';
};
updateScript =
let
pkgFile = builtins.toString ./package.nix;
in
lib.getExe (writeShellApplication {
name = "update-${pname}";
runtimeInputs = [
curl
pcre
common-updater-scripts
jq
gnused
];
text = ''
if [ -z "''${GITHUB_TOKEN:-}" ]; then
echo "no GITHUB_TOKEN provided - you could meet API request limiting" >&2
fi
LATEST_TAG=$(curl -H "Accept: application/vnd.github+json" \
''${GITHUB_TOKEN:+-H "Authorization: bearer $GITHUB_TOKEN"} \
-Lsf https://api.github.com/repos/${src.owner}/${src.repo}/tags | \
jq -r '[.[] | select(.name | test("^[0-9]"))] | sort_by(.name | split(".") |
map(tonumber)) | reverse | .[0].name')
update-source-version ${pname} "$LATEST_TAG"
sed -i '0,/mvnHash *= *"[^"]*"/{s/mvnHash = "[^"]*"/mvnHash = ""/}' ${pkgFile}
echo -e "\nFetching all mvn dependencies to calculate the mvnHash. This may take a while ..."
nix-build -A ${pname}.fetchedMavenDeps 2> ${pname}-stderr.log || true
NEW_MVN_HASH=$(grep "got:" ${pname}-stderr.log | awk '{print ''$2}')
rm ${pname}-stderr.log
# escaping double quotes looks ugly but is needed for variable substitution
# use # instead of / as separator because the sha256 might contain the / character
sed -i "0,/mvnHash *= *\"[^\"]*\"/{s#mvnHash = \"[^\"]*\"#mvnHash = \"$NEW_MVN_HASH\"#}" ${pkgFile}
'';
});
};
});
meta = {
description = "Sonarlint language server";
@@ -1,17 +0,0 @@
diff --git a/pom.xml b/pom.xml
index c020fd1..fd4146b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -34,10 +34,10 @@
<sonar.python.version>4.17.0.14845</sonar.python.version>
<sonar.html.version>3.16.0.5274</sonar.html.version>
<sonar.xml.version>2.10.0.4108</sonar.xml.version>
- <sonar.text.version>2.18.0.4812</sonar.text.version>
+ <sonar.text.version>2.18.0.4866</sonar.text.version>
<sonar.go.version>1.15.0.4655</sonar.go.version>
<sonar.iac.version>1.27.0.9518</sonar.iac.version>
- <sonar.csharp.version>10.2.0.103721</sonar.csharp.version>
+ <sonar.csharp.version>10.2.0.105762</sonar.csharp.version>
<sonarlint.omnisharp.version>1.25.0.100242</sonarlint.omnisharp.version>
<gitRepositoryName>sonarlint-language-server</gitRepositoryName>
<!-- Release: enable publication to Bintray -->