diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..65c7026 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,31 @@ +name: CI + +on: + push: + branches: ["**"] + pull_request: + +permissions: + contents: read + +jobs: + test: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: "17" + cache: gradle + - name: Cache CRAM reference data + uses: actions/cache@v4 + with: + path: ~/.cache/hts-ref + key: hts-ref + restore-keys: | + hts-ref + - name: Run tests + run: ./gradlew test diff --git a/build.gradle b/build.gradle index 2c20f05..13d119f 100644 --- a/build.gradle +++ b/build.gradle @@ -67,7 +67,7 @@ dependencies { implementation( group: 'com.beust', name: 'jcommander', version: '1.72' ) - implementation( group: 'com.github.samtools', name: 'htsjdk', version: '4.1.0' ) + implementation( group: 'com.github.samtools', name: 'htsjdk', version: '4.3.0' ) implementation( "org.jdom:jdom:2.0.2" ) diff --git a/gradle/wrapper/gradle-wrapper-shared.jar b/gradle/wrapper/gradle-wrapper-shared.jar new file mode 100644 index 0000000..651d485 Binary files /dev/null and b/gradle/wrapper/gradle-wrapper-shared.jar differ diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 87b738c..e644113 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ffed3a2..48c0a02 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew old mode 100644 new mode 100755 index af6708f..b5aac0d --- a/gradlew +++ b/gradlew @@ -64,7 +64,7 @@ case "`uname`" in ;; esac -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar:$APP_HOME/gradle/wrapper/gradle-wrapper-shared.jar # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then diff --git a/gradlew.bat b/gradlew.bat index 0f8d593..06d2132 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -63,7 +63,7 @@ set CMD_LINE_ARGS=%* :execute @rem Setup the command line -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar;%APP_HOME%\gradle\wrapper\gradle-wrapper-shared.jar @rem Execute Gradle "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% diff --git a/src/test/java/uk/ac/ebi/ena/readtools/sam/CramV31Test.java b/src/test/java/uk/ac/ebi/ena/readtools/sam/CramV31Test.java new file mode 100644 index 0000000..5d6fa74 --- /dev/null +++ b/src/test/java/uk/ac/ebi/ena/readtools/sam/CramV31Test.java @@ -0,0 +1,35 @@ +/* + * Copyright 2010-2021 EMBL - European Bioinformatics Institute + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this + * file except in compliance with the License. You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + * CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package uk.ac.ebi.ena.readtools.sam; + +import htsjdk.samtools.SamReader; +import htsjdk.samtools.SamReaderFactory; +import htsjdk.samtools.ValidationStringency; +import htsjdk.samtools.cram.ref.ReferenceSource; +import java.io.File; +import java.nio.file.Paths; +import org.junit.Assert; +import org.junit.Test; + +public class CramV31Test { + @Test + public void cramV31IsReadableWithHtsjdk() throws Exception { + File file = Paths.get("src/test/resources/rawreads/18045_1#93.v3.cram").toFile(); + SamReaderFactory factory = SamReaderFactory.make(); + factory.validationStringency(ValidationStringency.SILENT); + factory.referenceSource(new ReferenceSource((File) null)); + + try (SamReader reader = factory.open(file)) { + Assert.assertNotNull(reader.getFileHeader()); + Assert.assertTrue(reader.iterator().hasNext()); + } + } +} diff --git a/src/test/resources/rawreads/18045_1#93.v3.cram b/src/test/resources/rawreads/18045_1#93.v3.cram new file mode 100644 index 0000000..b2c1a6e Binary files /dev/null and b/src/test/resources/rawreads/18045_1#93.v3.cram differ