fix tests for absolute paths

This commit is contained in:
dkanada 2020-01-13 15:25:54 +09:00
parent c3efcbf77e
commit a8cd963d46
2 changed files with 18 additions and 19 deletions

View file

@ -112,7 +112,7 @@ jobs:
- job: main_test - job: main_test
displayName: Main Test displayName: Main Test
pool: pool:
vmImage: windows-latest vmImage: ubuntu-latest
steps: steps:
- checkout: self - checkout: self
clean: true clean: true

View file

@ -3,8 +3,8 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Globalization;
using System.Diagnostics; using System.Diagnostics;
using System.Globalization;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
@ -17,7 +17,7 @@ using OperatingSystem = MediaBrowser.Common.System.OperatingSystem;
namespace Emby.Server.Implementations.IO namespace Emby.Server.Implementations.IO
{ {
/// <summary> /// <summary>
/// Class ManagedFileSystem /// Class ManagedFileSystem.
/// </summary> /// </summary>
public class ManagedFileSystem : IFileSystem public class ManagedFileSystem : IFileSystem
{ {
@ -80,20 +80,20 @@ namespace Emby.Server.Implementations.IO
public virtual string MakeAbsolutePath(string folderPath, string filePath) public virtual string MakeAbsolutePath(string folderPath, string filePath)
{ {
if (string.IsNullOrWhiteSpace(filePath) // path is actually a stream
// stream if (string.IsNullOrWhiteSpace(filePath) || filePath.Contains("://", StringComparison.InvariantCulture))
|| filePath.Contains("://"))
{ {
return filePath; return filePath;
} }
if (filePath.Length > 3 && filePath[1] == ':' && filePath[2] == '/') if (filePath.Length > 3 && filePath[1] == ':' && filePath[2] == '/')
{ {
return filePath; // absolute local path // absolute local path
return filePath;
} }
// unc path // unc path
if (filePath.StartsWith("\\\\")) if (filePath.StartsWith("\\\\", StringComparison.InvariantCulture))
{ {
return filePath; return filePath;
} }
@ -101,13 +101,16 @@ namespace Emby.Server.Implementations.IO
var firstChar = filePath[0]; var firstChar = filePath[0];
if (firstChar == '/') if (firstChar == '/')
{ {
// For this we don't really know. // for this we don't really know
return filePath; return filePath;
} }
if (firstChar == '\\') //relative path
// relative path
if (firstChar == '\\')
{ {
filePath = filePath.Substring(1); filePath = filePath.Substring(1);
} }
try try
{ {
return Path.GetFullPath(Path.Combine(folderPath, filePath)); return Path.GetFullPath(Path.Combine(folderPath, filePath));
@ -131,11 +134,7 @@ namespace Emby.Server.Implementations.IO
/// </summary> /// </summary>
/// <param name="shortcutPath">The shortcut path.</param> /// <param name="shortcutPath">The shortcut path.</param>
/// <param name="target">The target.</param> /// <param name="target">The target.</param>
/// <exception cref="ArgumentNullException"> /// <exception cref="ArgumentNullException">The shortcutPath or target is null.</exception>
/// shortcutPath
/// or
/// target
/// </exception>
public virtual void CreateShortcut(string shortcutPath, string target) public virtual void CreateShortcut(string shortcutPath, string target)
{ {
if (string.IsNullOrEmpty(shortcutPath)) if (string.IsNullOrEmpty(shortcutPath))
@ -281,11 +280,11 @@ namespace Emby.Server.Implementations.IO
} }
/// <summary> /// <summary>
/// Takes a filename and removes invalid characters /// Takes a filename and removes invalid characters.
/// </summary> /// </summary>
/// <param name="filename">The filename.</param> /// <param name="filename">The filename.</param>
/// <returns>System.String.</returns> /// <returns>System.String.</returns>
/// <exception cref="ArgumentNullException">filename</exception> /// <exception cref="ArgumentNullException">The filename is null.</exception>
public virtual string GetValidFilename(string filename) public virtual string GetValidFilename(string filename)
{ {
var builder = new StringBuilder(filename); var builder = new StringBuilder(filename);
@ -473,7 +472,7 @@ namespace Emby.Server.Implementations.IO
public virtual void SetReadOnly(string path, bool isReadOnly) public virtual void SetReadOnly(string path, bool isReadOnly)
{ {
if (OperatingSystem.Id != MediaBrowser.Model.System.OperatingSystemId.Windows) if (OperatingSystem.Id != OperatingSystemId.Windows)
{ {
return; return;
} }
@ -497,7 +496,7 @@ namespace Emby.Server.Implementations.IO
public virtual void SetAttributes(string path, bool isHidden, bool isReadOnly) public virtual void SetAttributes(string path, bool isHidden, bool isReadOnly)
{ {
if (OperatingSystem.Id != MediaBrowser.Model.System.OperatingSystemId.Windows) if (OperatingSystem.Id != OperatingSystemId.Windows)
{ {
return; return;
} }