mirror of https://github.com/Radarr/Radarr
New: .NET 5 support for FreeBSD 11+
This commit is contained in:
parent
0fcad533eb
commit
108609d064
|
@ -79,7 +79,18 @@ stages:
|
||||||
displayName: 'Install .net core'
|
displayName: 'Install .net core'
|
||||||
inputs:
|
inputs:
|
||||||
version: $(dotnetVersion)
|
version: $(dotnetVersion)
|
||||||
- bash: ./build.sh --backend
|
- bash: |
|
||||||
|
BUNDLEDVERSIONS=${AGENT_TOOLSDIRECTORY}/dotnet/sdk/${DOTNETVERSION}/Microsoft.NETCoreSdk.BundledVersions.props
|
||||||
|
echo $BUNDLEDVERSIONS
|
||||||
|
grep osx-x64 $BUNDLEDVERSIONS
|
||||||
|
if grep -q freebsd-x64 $BUNDLEDVERSIONS; then
|
||||||
|
echo "BSD already enabled"
|
||||||
|
else
|
||||||
|
echo "Enabling BSD support"
|
||||||
|
sed -i.ORI 's/osx-x64/osx-x64;freebsd-x64/' $BUNDLEDVERSIONS
|
||||||
|
fi
|
||||||
|
displayName: Enable FreeBSD Support
|
||||||
|
- bash: ./build.sh --backend --enable-bsd
|
||||||
displayName: Build Radarr Backend
|
displayName: Build Radarr Backend
|
||||||
- bash: |
|
- bash: |
|
||||||
find ${OUTPUTFOLDER} -type f ! -path "*/publish/*" -exec rm -rf {} \;
|
find ${OUTPUTFOLDER} -type f ! -path "*/publish/*" -exec rm -rf {} \;
|
||||||
|
@ -108,6 +119,10 @@ stages:
|
||||||
artifact: LinuxMuslCoreTests
|
artifact: LinuxMuslCoreTests
|
||||||
displayName: Publish Linux Musl Test Package
|
displayName: Publish Linux Musl Test Package
|
||||||
condition: and(succeeded(), eq(variables['osName'], 'Windows'))
|
condition: and(succeeded(), eq(variables['osName'], 'Windows'))
|
||||||
|
- publish: '$(testsFolder)/net5.0/freebsd-x64/publish'
|
||||||
|
artifact: FreebsdCoreTests
|
||||||
|
displayName: Publish FreeBSD Test Package
|
||||||
|
condition: and(succeeded(), eq(variables['osName'], 'Windows'))
|
||||||
- publish: '$(testsFolder)/net5.0/osx-x64/publish'
|
- publish: '$(testsFolder)/net5.0/osx-x64/publish'
|
||||||
artifact: MacCoreTests
|
artifact: MacCoreTests
|
||||||
displayName: Publish MacOS Test Package
|
displayName: Publish MacOS Test Package
|
||||||
|
@ -219,7 +234,7 @@ stages:
|
||||||
artifactName: WindowsFrontend
|
artifactName: WindowsFrontend
|
||||||
targetPath: _output
|
targetPath: _output
|
||||||
displayName: Fetch Frontend
|
displayName: Fetch Frontend
|
||||||
- bash: ./build.sh --packages
|
- bash: ./build.sh --packages --enable-bsd
|
||||||
displayName: Create Packages
|
displayName: Create Packages
|
||||||
- bash: |
|
- bash: |
|
||||||
find . -name "Radarr" -exec chmod a+x {} \;
|
find . -name "Radarr" -exec chmod a+x {} \;
|
||||||
|
@ -302,6 +317,14 @@ stages:
|
||||||
tarCompression: 'gz'
|
tarCompression: 'gz'
|
||||||
includeRootFolder: false
|
includeRootFolder: false
|
||||||
rootFolderOrFile: $(artifactsFolder)/linux-musl-arm64/net5.0
|
rootFolderOrFile: $(artifactsFolder)/linux-musl-arm64/net5.0
|
||||||
|
- task: ArchiveFiles@2
|
||||||
|
displayName: Create FreeBSD Core Core tar
|
||||||
|
inputs:
|
||||||
|
archiveFile: '$(Build.ArtifactStagingDirectory)/Radarr.$(buildName).freebsd-core-x64.tar.gz'
|
||||||
|
archiveType: 'tar'
|
||||||
|
tarCompression: 'gz'
|
||||||
|
includeRootFolder: false
|
||||||
|
rootFolderOrFile: $(artifactsFolder)/freebsd-x64/net5.0
|
||||||
- publish: $(Build.ArtifactStagingDirectory)
|
- publish: $(Build.ArtifactStagingDirectory)
|
||||||
artifact: 'Packages'
|
artifact: 'Packages'
|
||||||
displayName: Publish Packages
|
displayName: Publish Packages
|
||||||
|
@ -355,24 +378,34 @@ stages:
|
||||||
displayName: Unit Native
|
displayName: Unit Native
|
||||||
dependsOn: Prepare
|
dependsOn: Prepare
|
||||||
condition: and(succeeded(), eq(dependencies.Prepare.outputs['setVar.backendNotUpdated'], '0'))
|
condition: and(succeeded(), eq(dependencies.Prepare.outputs['setVar.backendNotUpdated'], '0'))
|
||||||
|
workspace:
|
||||||
|
clean: all
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
MacCore:
|
MacCore:
|
||||||
osName: 'Mac'
|
osName: 'Mac'
|
||||||
testName: 'MacCore'
|
testName: 'MacCore'
|
||||||
|
poolName: 'Azure Pipelines'
|
||||||
imageName: 'macos-10.14'
|
imageName: 'macos-10.14'
|
||||||
WindowsCore:
|
WindowsCore:
|
||||||
osName: 'Windows'
|
osName: 'Windows'
|
||||||
testName: 'WindowsCore'
|
testName: 'WindowsCore'
|
||||||
|
poolName: 'Azure Pipelines'
|
||||||
imageName: 'windows-2019'
|
imageName: 'windows-2019'
|
||||||
LinuxCore:
|
LinuxCore:
|
||||||
osName: 'Linux'
|
osName: 'Linux'
|
||||||
testName: 'LinuxCore'
|
testName: 'LinuxCore'
|
||||||
|
poolName: 'Azure Pipelines'
|
||||||
imageName: 'ubuntu-18.04'
|
imageName: 'ubuntu-18.04'
|
||||||
pattern: 'Radarr.**.linux-core-x64.tar.gz'
|
FreebsdCore:
|
||||||
|
osName: 'Linux'
|
||||||
|
testName: 'FreebsdCore'
|
||||||
|
poolName: 'FreeBSD'
|
||||||
|
imageName:
|
||||||
|
|
||||||
pool:
|
pool:
|
||||||
|
name: $(poolName)
|
||||||
vmImage: $(imageName)
|
vmImage: $(imageName)
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
@ -381,6 +414,7 @@ stages:
|
||||||
displayName: 'Install .net core'
|
displayName: 'Install .net core'
|
||||||
inputs:
|
inputs:
|
||||||
version: $(dotnetVersion)
|
version: $(dotnetVersion)
|
||||||
|
condition: ne(variables['poolName'], 'FreeBSD')
|
||||||
- task: DownloadPipelineArtifact@2
|
- task: DownloadPipelineArtifact@2
|
||||||
displayName: Download Test Artifact
|
displayName: Download Test Artifact
|
||||||
inputs:
|
inputs:
|
||||||
|
@ -393,7 +427,7 @@ stages:
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install -y --allow-unauthenticated libmediainfo-dev libmediainfo0v5 mediainfo
|
sudo apt-get install -y --allow-unauthenticated libmediainfo-dev libmediainfo0v5 mediainfo
|
||||||
displayName: Install mediainfo
|
displayName: Install mediainfo
|
||||||
condition: and(succeeded(), eq(variables['osName'], 'Linux'))
|
condition: and(succeeded(), eq(variables['testName'], 'LinuxCore'))
|
||||||
- powershell: Set-Service SCardSvr -StartupType Manual
|
- powershell: Set-Service SCardSvr -StartupType Manual
|
||||||
displayName: Enable Windows Test Service
|
displayName: Enable Windows Test Service
|
||||||
condition: and(succeeded(), eq(variables['osName'], 'Windows'))
|
condition: and(succeeded(), eq(variables['osName'], 'Windows'))
|
||||||
|
@ -508,17 +542,17 @@ stages:
|
||||||
osName: 'Mac'
|
osName: 'Mac'
|
||||||
testName: 'MacCore'
|
testName: 'MacCore'
|
||||||
imageName: 'macos-10.14'
|
imageName: 'macos-10.14'
|
||||||
pattern: 'Radarr.**.osx-core-x64.tar.gz'
|
pattern: 'Radarr.*.osx-core-x64.tar.gz'
|
||||||
WindowsCore:
|
WindowsCore:
|
||||||
osName: 'Windows'
|
osName: 'Windows'
|
||||||
testName: 'WindowsCore'
|
testName: 'WindowsCore'
|
||||||
imageName: 'windows-2019'
|
imageName: 'windows-2019'
|
||||||
pattern: 'Radarr.**.windows-core-x64.zip'
|
pattern: 'Radarr.*.windows-core-x64.zip'
|
||||||
LinuxCore:
|
LinuxCore:
|
||||||
osName: 'Linux'
|
osName: 'Linux'
|
||||||
testName: 'LinuxCore'
|
testName: 'LinuxCore'
|
||||||
imageName: 'ubuntu-18.04'
|
imageName: 'ubuntu-18.04'
|
||||||
pattern: 'Radarr.**.linux-core-x64.tar.gz'
|
pattern: 'Radarr.*.linux-core-x64.tar.gz'
|
||||||
|
|
||||||
pool:
|
pool:
|
||||||
vmImage: $(imageName)
|
vmImage: $(imageName)
|
||||||
|
@ -571,6 +605,52 @@ stages:
|
||||||
failTaskOnFailedTests: true
|
failTaskOnFailedTests: true
|
||||||
displayName: Publish Test Results
|
displayName: Publish Test Results
|
||||||
|
|
||||||
|
- job: Integration_FreeBSD
|
||||||
|
displayName: Integration Native FreeBSD
|
||||||
|
dependsOn: Prepare
|
||||||
|
condition: and(succeeded(), eq(dependencies.Prepare.outputs['setVar.backendNotUpdated'], '0'))
|
||||||
|
workspace:
|
||||||
|
clean: all
|
||||||
|
variables:
|
||||||
|
pattern: 'Radarr.*.freebsd-core-x64.tar.gz'
|
||||||
|
pool:
|
||||||
|
name: 'FreeBSD'
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- checkout: none
|
||||||
|
- task: DownloadPipelineArtifact@2
|
||||||
|
displayName: Download Test Artifact
|
||||||
|
inputs:
|
||||||
|
buildType: 'current'
|
||||||
|
artifactName: 'FreebsdCoreTests'
|
||||||
|
targetPath: $(testsFolder)
|
||||||
|
- task: DownloadPipelineArtifact@2
|
||||||
|
displayName: Download Build Artifact
|
||||||
|
inputs:
|
||||||
|
buildType: 'current'
|
||||||
|
artifactName: Packages
|
||||||
|
itemPattern: '/$(pattern)'
|
||||||
|
targetPath: $(Build.ArtifactStagingDirectory)
|
||||||
|
- bash: |
|
||||||
|
mkdir -p ${BUILD_ARTIFACTSTAGINGDIRECTORY}/bin
|
||||||
|
tar xf ${BUILD_ARTIFACTSTAGINGDIRECTORY}/$(pattern) -C ${BUILD_ARTIFACTSTAGINGDIRECTORY}/bin
|
||||||
|
displayName: Extract Package
|
||||||
|
- bash: |
|
||||||
|
mkdir -p ./bin/
|
||||||
|
cp -r -v ${BUILD_ARTIFACTSTAGINGDIRECTORY}/bin/Radarr/. ./bin/
|
||||||
|
displayName: Move Package Contents
|
||||||
|
- bash: |
|
||||||
|
chmod a+x ${TESTSFOLDER}/test.sh
|
||||||
|
${TESTSFOLDER}/test.sh Linux Integration Test
|
||||||
|
displayName: Run Integration Tests
|
||||||
|
- task: PublishTestResults@2
|
||||||
|
inputs:
|
||||||
|
testResultsFormat: 'NUnit'
|
||||||
|
testResultsFiles: '**/TestResult.xml'
|
||||||
|
testRunTitle: 'FreeBSD Integration Tests'
|
||||||
|
failTaskOnFailedTests: true
|
||||||
|
displayName: Publish Test Results
|
||||||
|
|
||||||
- job: Integration_Docker
|
- job: Integration_Docker
|
||||||
displayName: Integration Docker
|
displayName: Integration Docker
|
||||||
dependsOn: Prepare
|
dependsOn: Prepare
|
||||||
|
@ -581,22 +661,22 @@ stages:
|
||||||
testName: 'Mono 5.20'
|
testName: 'Mono 5.20'
|
||||||
artifactName: LinuxTests
|
artifactName: LinuxTests
|
||||||
containerImage: ghcr.io/servarr/testimages:mono-5.20
|
containerImage: ghcr.io/servarr/testimages:mono-5.20
|
||||||
pattern: 'Radarr.**.linux.tar.gz'
|
pattern: 'Radarr.*.linux.tar.gz'
|
||||||
mono610:
|
mono610:
|
||||||
testName: 'Mono 6.10'
|
testName: 'Mono 6.10'
|
||||||
artifactName: LinuxTests
|
artifactName: LinuxTests
|
||||||
containerImage: ghcr.io/servarr/testimages:mono-6.10
|
containerImage: ghcr.io/servarr/testimages:mono-6.10
|
||||||
pattern: 'Radarr.**.linux.tar.gz'
|
pattern: 'Radarr.*.linux.tar.gz'
|
||||||
mono612:
|
mono612:
|
||||||
testName: 'Mono 6.12'
|
testName: 'Mono 6.12'
|
||||||
artifactName: LinuxTests
|
artifactName: LinuxTests
|
||||||
containerImage: ghcr.io/servarr/testimages:mono-6.12
|
containerImage: ghcr.io/servarr/testimages:mono-6.12
|
||||||
pattern: 'Radarr.**.linux.tar.gz'
|
pattern: 'Radarr.*.linux.tar.gz'
|
||||||
alpine:
|
alpine:
|
||||||
testName: 'Musl Net Core'
|
testName: 'Musl Net Core'
|
||||||
artifactName: LinuxMuslCoreTests
|
artifactName: LinuxMuslCoreTests
|
||||||
containerImage: ghcr.io/servarr/testimages:alpine
|
containerImage: ghcr.io/servarr/testimages:alpine
|
||||||
pattern: 'Radarr.**.linux-musl-core-x64.tar.gz'
|
pattern: 'Radarr.*.linux-musl-core-x64.tar.gz'
|
||||||
pool:
|
pool:
|
||||||
vmImage: 'ubuntu-18.04'
|
vmImage: 'ubuntu-18.04'
|
||||||
|
|
||||||
|
@ -655,17 +735,17 @@ stages:
|
||||||
Linux:
|
Linux:
|
||||||
osName: 'Linux'
|
osName: 'Linux'
|
||||||
imageName: 'ubuntu-18.04'
|
imageName: 'ubuntu-18.04'
|
||||||
pattern: 'Radarr.**.linux-core-x64.tar.gz'
|
pattern: 'Radarr.*.linux-core-x64.tar.gz'
|
||||||
failBuild: true
|
failBuild: true
|
||||||
Mac:
|
Mac:
|
||||||
osName: 'Mac'
|
osName: 'Mac'
|
||||||
imageName: 'macos-10.14'
|
imageName: 'macos-10.14'
|
||||||
pattern: 'Radarr.**.osx-core-x64.tar.gz'
|
pattern: 'Radarr.*.osx-core-x64.tar.gz'
|
||||||
failBuild: true
|
failBuild: true
|
||||||
Windows:
|
Windows:
|
||||||
osName: 'Windows'
|
osName: 'Windows'
|
||||||
imageName: 'windows-2019'
|
imageName: 'windows-2019'
|
||||||
pattern: 'Radarr.**.windows-core-x64.zip'
|
pattern: 'Radarr.*.windows-core-x64.zip'
|
||||||
failBuild: true
|
failBuild: true
|
||||||
|
|
||||||
pool:
|
pool:
|
||||||
|
|
33
build.sh
33
build.sh
|
@ -1,4 +1,4 @@
|
||||||
#! /bin/bash
|
#! /usr/bin/env bash
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
outputFolder='_output'
|
outputFolder='_output'
|
||||||
|
@ -25,6 +25,18 @@ UpdateVersionNumber()
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EnableBsdSupport()
|
||||||
|
{
|
||||||
|
#todo enable sdk with
|
||||||
|
#SDK_PATH=$(dotnet --list-sdks | grep -P '5\.\d\.\d+' | head -1 | sed 's/\(5\.[0-9]*\.[0-9]*\).*\[\(.*\)\]/\2\/\1/g')
|
||||||
|
# BUNDLED_VERSIONS="${SDK_PATH}/Microsoft.NETCoreSdk.BundledVersions.props"
|
||||||
|
|
||||||
|
if grep -qv freebsd-x64 src/Directory.Build.props; then
|
||||||
|
sed -i'' -e "s^<RuntimeIdentifiers>\(.*\)</RuntimeIdentifiers>^<RuntimeIdentifiers>\1;freebsd-x64</RuntimeIdentifiers>^g" src/Directory.Build.props
|
||||||
|
sed -i'' -e "s^<ExcludedRuntimeFrameworkPairs>\(.*\)</ExcludedRuntimeFrameworkPairs>^<ExcludedRuntimeFrameworkPairs>\1;freebsd-x64:net472</ExcludedRuntimeFrameworkPairs>^g" src/Directory.Build.props
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
LintUI()
|
LintUI()
|
||||||
{
|
{
|
||||||
ProgressStart 'ESLint'
|
ProgressStart 'ESLint'
|
||||||
|
@ -212,7 +224,7 @@ Package()
|
||||||
IFS='-' read -ra SPLIT <<< "$runtime"
|
IFS='-' read -ra SPLIT <<< "$runtime"
|
||||||
|
|
||||||
case "${SPLIT[0]}" in
|
case "${SPLIT[0]}" in
|
||||||
linux)
|
linux|freebsd*)
|
||||||
PackageLinux "$framework" "$runtime"
|
PackageLinux "$framework" "$runtime"
|
||||||
;;
|
;;
|
||||||
win)
|
win)
|
||||||
|
@ -257,6 +269,7 @@ if [ $# -eq 0 ]; then
|
||||||
FRONTEND=YES
|
FRONTEND=YES
|
||||||
PACKAGES=YES
|
PACKAGES=YES
|
||||||
LINT=YES
|
LINT=YES
|
||||||
|
ENABLE_BSD=NO
|
||||||
fi
|
fi
|
||||||
|
|
||||||
while [[ $# -gt 0 ]]
|
while [[ $# -gt 0 ]]
|
||||||
|
@ -268,6 +281,10 @@ case $key in
|
||||||
BACKEND=YES
|
BACKEND=YES
|
||||||
shift # past argument
|
shift # past argument
|
||||||
;;
|
;;
|
||||||
|
--enable-bsd)
|
||||||
|
ENABLE_BSD=YES
|
||||||
|
shift # past argument
|
||||||
|
;;
|
||||||
-r|--runtime)
|
-r|--runtime)
|
||||||
RID="$2"
|
RID="$2"
|
||||||
shift # past argument
|
shift # past argument
|
||||||
|
@ -308,6 +325,10 @@ set -- "${POSITIONAL[@]}" # restore positional parameters
|
||||||
if [ "$BACKEND" = "YES" ];
|
if [ "$BACKEND" = "YES" ];
|
||||||
then
|
then
|
||||||
UpdateVersionNumber
|
UpdateVersionNumber
|
||||||
|
if [ "$ENABLE_BSD" = "YES" ];
|
||||||
|
then
|
||||||
|
EnableBsdSupport
|
||||||
|
fi
|
||||||
Build
|
Build
|
||||||
if [[ -z "$RID" || -z "$FRAMEWORK" ]];
|
if [[ -z "$RID" || -z "$FRAMEWORK" ]];
|
||||||
then
|
then
|
||||||
|
@ -317,6 +338,10 @@ then
|
||||||
PackageTests "net5.0" "linux-musl-x64"
|
PackageTests "net5.0" "linux-musl-x64"
|
||||||
PackageTests "net5.0" "osx-x64"
|
PackageTests "net5.0" "osx-x64"
|
||||||
PackageTests "net472" "linux-x64"
|
PackageTests "net472" "linux-x64"
|
||||||
|
if [ "$ENABLE_BSD" = "YES" ];
|
||||||
|
then
|
||||||
|
PackageTests "net5.0" "freebsd-x64"
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
PackageTests "$FRAMEWORK" "$RID"
|
PackageTests "$FRAMEWORK" "$RID"
|
||||||
fi
|
fi
|
||||||
|
@ -353,6 +378,10 @@ then
|
||||||
Package "net5.0" "linux-arm"
|
Package "net5.0" "linux-arm"
|
||||||
Package "net5.0" "osx-x64"
|
Package "net5.0" "osx-x64"
|
||||||
Package "net472" "linux-x64"
|
Package "net472" "linux-x64"
|
||||||
|
if [ "$ENABLE_BSD" = "YES" ];
|
||||||
|
then
|
||||||
|
Package "net5.0" "freebsd-x64"
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
Package "$FRAMEWORK" "$RID"
|
Package "$FRAMEWORK" "$RID"
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<configuration>
|
<configuration>
|
||||||
<packageSources>
|
<packageSources>
|
||||||
|
<clear />
|
||||||
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
|
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
|
||||||
<add key="MyFeed" value="https://pkgs.dev.azure.com/Servarr/Servarr/_packaging/SQLite/nuget/v3/index.json" />
|
<add key="dotnet-bsd-crossbuild" value="https://pkgs.dev.azure.com/Servarr/Servarr/_packaging/dotnet-bsd-crossbuild/nuget/v3/index.json" />
|
||||||
|
<add key="Mono.Posix.NETStandard" value="https://pkgs.dev.azure.com/Servarr/Servarr/_packaging/Mono.Posix.NETStandard/nuget/v3/index.json" />
|
||||||
|
<add key="SQLite" value="https://pkgs.dev.azure.com/Servarr/Servarr/_packaging/SQLite/nuget/v3/index.json" />
|
||||||
<add key="FluentMigrator" value="https://www.myget.org/F/fluent-migrator/api/v3/index.json" />
|
<add key="FluentMigrator" value="https://www.myget.org/F/fluent-migrator/api/v3/index.json" />
|
||||||
<add key="NUnit" value="https://www.myget.org/F/nunit/api/v3/index.json" />
|
|
||||||
</packageSources>
|
</packageSources>
|
||||||
</configuration>
|
</configuration>
|
||||||
|
|
|
@ -25,11 +25,11 @@ namespace NzbDrone.Core.Test.UpdateTests
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
[Platform(Exclude = "NetCore")]
|
|
||||||
public void finds_update_when_version_lower()
|
public void finds_update_when_version_lower()
|
||||||
{
|
{
|
||||||
|
NotBsd();
|
||||||
UseRealHttp();
|
UseRealHttp();
|
||||||
Subject.GetLatestUpdate("develop", new Version(0, 2)).Should().NotBeNull();
|
Subject.GetLatestUpdate("develop", new Version(3, 0)).Should().NotBeNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
|
@ -43,9 +43,11 @@ namespace NzbDrone.Core.Test.UpdateTests
|
||||||
[Test]
|
[Test]
|
||||||
public void should_get_recent_updates()
|
public void should_get_recent_updates()
|
||||||
{
|
{
|
||||||
|
NotBsd();
|
||||||
|
|
||||||
const string branch = "nightly";
|
const string branch = "nightly";
|
||||||
UseRealHttp();
|
UseRealHttp();
|
||||||
var recent = Subject.GetRecentUpdates(branch, new Version(2, 0), null);
|
var recent = Subject.GetRecentUpdates(branch, new Version(3, 0), null);
|
||||||
var recentWithChanges = recent.Where(c => c.Changes != null);
|
var recentWithChanges = recent.Where(c => c.Changes != null);
|
||||||
|
|
||||||
recent.Should().NotBeEmpty();
|
recent.Should().NotBeEmpty();
|
||||||
|
|
|
@ -8,6 +8,7 @@ using Mono.Unix.Native;
|
||||||
using Moq;
|
using Moq;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using NzbDrone.Common.Disk;
|
using NzbDrone.Common.Disk;
|
||||||
|
using NzbDrone.Common.EnvironmentInfo;
|
||||||
using NzbDrone.Common.Test.DiskTests;
|
using NzbDrone.Common.Test.DiskTests;
|
||||||
using NzbDrone.Mono.Disk;
|
using NzbDrone.Mono.Disk;
|
||||||
|
|
||||||
|
@ -80,7 +81,11 @@ namespace NzbDrone.Mono.Test.DiskProviderTests
|
||||||
|
|
||||||
if (stat.st_mode != mode)
|
if (stat.st_mode != mode)
|
||||||
{
|
{
|
||||||
Syscall.chmod(path, mode);
|
if (Syscall.chmod(path, mode) < 0)
|
||||||
|
{
|
||||||
|
var error = Stdlib.GetLastError();
|
||||||
|
throw new LinuxPermissionsException("Error setting group: " + error);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -221,10 +226,14 @@ namespace NzbDrone.Mono.Test.DiskProviderTests
|
||||||
Syscall.stat(tempFile, out fileStat);
|
Syscall.stat(tempFile, out fileStat);
|
||||||
NativeConvert.ToOctalPermissionString(fileStat.st_mode).Should().Be("0644");
|
NativeConvert.ToOctalPermissionString(fileStat.st_mode).Should().Be("0644");
|
||||||
|
|
||||||
|
if (OsInfo.Os != Os.Bsd)
|
||||||
|
{
|
||||||
|
// This is not allowed on BSD
|
||||||
Subject.SetPermissions(tempFile, "1775", null);
|
Subject.SetPermissions(tempFile, "1775", null);
|
||||||
Syscall.stat(tempFile, out fileStat);
|
Syscall.stat(tempFile, out fileStat);
|
||||||
NativeConvert.ToOctalPermissionString(fileStat.st_mode).Should().Be("1664");
|
NativeConvert.ToOctalPermissionString(fileStat.st_mode).Should().Be("1664");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_set_folder_permissions()
|
public void should_set_folder_permissions()
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
using FluentAssertions;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using NzbDrone.Common.EnvironmentInfo;
|
||||||
|
using NzbDrone.Common.Processes;
|
||||||
|
using NzbDrone.Mono.EnvironmentInfo.VersionAdapters;
|
||||||
|
using NzbDrone.Test.Common;
|
||||||
|
|
||||||
|
namespace NzbDrone.Mono.Test.EnvironmentInfo
|
||||||
|
{
|
||||||
|
[TestFixture]
|
||||||
|
[Platform("Linux")]
|
||||||
|
public class FreebsdVersionAdapterFixture : TestBase<FreebsdVersionAdapter>
|
||||||
|
{
|
||||||
|
[SetUp]
|
||||||
|
public void Setup()
|
||||||
|
{
|
||||||
|
if (OsInfo.Os != Os.Bsd)
|
||||||
|
{
|
||||||
|
throw new IgnoreException("BSD Only");
|
||||||
|
}
|
||||||
|
|
||||||
|
Mocker.SetConstant<IProcessProvider>(Mocker.Resolve<ProcessProvider>());
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_get_version_info()
|
||||||
|
{
|
||||||
|
var info = Subject.Read();
|
||||||
|
info.FullName.Should().NotBeNullOrWhiteSpace();
|
||||||
|
info.Name.Should().NotBeNullOrWhiteSpace();
|
||||||
|
info.Version.Should().NotBeNullOrWhiteSpace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -14,6 +14,8 @@ namespace NzbDrone.Mono.Test.EnvironmentInfo
|
||||||
[SetUp]
|
[SetUp]
|
||||||
public void Setup()
|
public void Setup()
|
||||||
{
|
{
|
||||||
|
NotBsd();
|
||||||
|
|
||||||
Mocker.SetConstant<IDiskProvider>(Mocker.Resolve<DiskProvider>());
|
Mocker.SetConstant<IDiskProvider>(Mocker.Resolve<DiskProvider>());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,8 @@ namespace NzbDrone.Mono.Test.EnvironmentInfo.VersionAdapters
|
||||||
[Platform("Linux")]
|
[Platform("Linux")]
|
||||||
public void should_get_version_info_from_actual_linux()
|
public void should_get_version_info_from_actual_linux()
|
||||||
{
|
{
|
||||||
|
NotBsd();
|
||||||
|
|
||||||
Mocker.SetConstant<IDiskProvider>(Mocker.Resolve<DiskProvider>());
|
Mocker.SetConstant<IDiskProvider>(Mocker.Resolve<DiskProvider>());
|
||||||
var info = Subject.Read();
|
var info = Subject.Read();
|
||||||
info.FullName.Should().NotBeNullOrWhiteSpace();
|
info.FullName.Should().NotBeNullOrWhiteSpace();
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
See https://github.com/xamarin/XamarinComponents/issues/282
|
See https://github.com/xamarin/XamarinComponents/issues/282
|
||||||
-->
|
-->
|
||||||
<ItemGroup Condition="'$(TargetFramework)' == 'net5.0'">
|
<ItemGroup Condition="'$(TargetFramework)' == 'net5.0'">
|
||||||
<PackageReference Include="Mono.Posix.NETStandard" Version="5.20.1-preview" />
|
<PackageReference Include="Mono.Posix.NETStandard" Version="5.20.1-servarr1" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\NzbDrone.Common.Test\Radarr.Common.Test.csproj" />
|
<ProjectReference Include="..\NzbDrone.Common.Test\Radarr.Common.Test.csproj" />
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
using System.Linq;
|
||||||
|
using NzbDrone.Common.EnvironmentInfo;
|
||||||
|
using NzbDrone.Common.Processes;
|
||||||
|
|
||||||
|
namespace NzbDrone.Mono.EnvironmentInfo.VersionAdapters
|
||||||
|
{
|
||||||
|
public class FreebsdVersionAdapter : IOsVersionAdapter
|
||||||
|
{
|
||||||
|
private readonly IProcessProvider _processProvider;
|
||||||
|
|
||||||
|
public FreebsdVersionAdapter(IProcessProvider processProvider)
|
||||||
|
{
|
||||||
|
_processProvider = processProvider;
|
||||||
|
}
|
||||||
|
|
||||||
|
public OsVersionModel Read()
|
||||||
|
{
|
||||||
|
var output = _processProvider.StartAndCapture("freebsd-version");
|
||||||
|
|
||||||
|
var version = output.Standard.First().Content;
|
||||||
|
|
||||||
|
return new OsVersionModel("FreeBSD", version, $"FreeBSD {version}");
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Enabled => OsInfo.Os == Os.Bsd;
|
||||||
|
}
|
||||||
|
}
|
|
@ -10,7 +10,7 @@
|
||||||
See https://github.com/xamarin/XamarinComponents/issues/282
|
See https://github.com/xamarin/XamarinComponents/issues/282
|
||||||
-->
|
-->
|
||||||
<ItemGroup Condition="'$(TargetFramework)' == 'net5.0'">
|
<ItemGroup Condition="'$(TargetFramework)' == 'net5.0'">
|
||||||
<PackageReference Include="Mono.Posix.NETStandard" Version="5.20.1-preview" />
|
<PackageReference Include="Mono.Posix.NETStandard" Version="5.20.1-servarr1" />
|
||||||
<PackageReference Include="System.IO.FileSystem.AccessControl" Version="5.0.0" />
|
<PackageReference Include="System.IO.FileSystem.AccessControl" Version="5.0.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
@ -174,6 +174,14 @@ namespace NzbDrone.Test.Common
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void NotBsd()
|
||||||
|
{
|
||||||
|
if (OsInfo.Os == Os.Bsd)
|
||||||
|
{
|
||||||
|
throw new IgnoreException("Ignored on BSD");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected void WithTempAsAppPath()
|
protected void WithTempAsAppPath()
|
||||||
{
|
{
|
||||||
Mocker.GetMock<IAppFolderInfo>()
|
Mocker.GetMock<IAppFolderInfo>()
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<configuration>
|
|
||||||
<dllmap os="osx" dll="mediainfo" target="libmediainfo.dylib"/>
|
|
||||||
<dllmap os="linux" dll="mediainfo" target="libmediainfo.so.0" />
|
|
||||||
<dllmap os="freebsd" dll="mediainfo" target="libmediainfo.so.0" />
|
|
||||||
<dllmap os="solaris" dll="mediainfo" target="libmediainfo.so.0.0.0" />
|
|
||||||
</configuration>
|
|
|
@ -1,7 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<configuration>
|
|
||||||
<dllmap os="osx" dll="mediainfo" target="libmediainfo.dylib"/>
|
|
||||||
<dllmap os="linux" dll="mediainfo" target="libmediainfo.so.0" />
|
|
||||||
<dllmap os="freebsd" dll="mediainfo" target="libmediainfo.so.0" />
|
|
||||||
<dllmap os="solaris" dll="mediainfo" target="libmediainfo.so.0.0.0" />
|
|
||||||
</configuration>
|
|
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue