UweKeim / ZetaLongPaths

A .NET library to access files and directories with more than 260 characters length.

Home Page:https://nuget.org/packages/ZetaLongPaths

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GetFileNameWithoutExtension return empty string on filename with no extension

mircoboschi opened this issue · comments

When calling ZlpPathHelper.GetFileNameWithoutExtension with a filename without extension,
the function is returning an empty string.

The correct return value should be the whole filename, as it doesn't contain extension.

@mircoboschi I've just added a bunch of unit tests. I cannot confirm your experience.

Can you give me an example on how I can see the misbehaviour, too?

Here are my additional tests:

s1 = @"c:\folder1\folder2\folder3\file1.txt";

s3 = ZlpPathHelper.GetFileNameFromFilePath(s1);
s4 = Path.GetFileName(s1);

Assert.AreEqual(s3, s4);

// --

s1 = @"c:\folder1\folder2\folder3\file1";

s3 = ZlpPathHelper.GetFileNameFromFilePath(s1);
s4 = Path.GetFileName(s1);

Assert.AreEqual(s3, s4);

// --

s1 = @"c:\folder1\folder2\folder3\file1.";

s3 = ZlpPathHelper.GetFileNameFromFilePath(s1);
s4 = Path.GetFileName(s1);

Assert.AreEqual(s3, s4);

// --

s1 = @"file1.txt";

s3 = ZlpPathHelper.GetFileNameFromFilePath(s1);
s4 = Path.GetFileName(s1);

Assert.AreEqual(s3, s4);

// --

s1 = @"file1";

s3 = ZlpPathHelper.GetFileNameFromFilePath(s1);
s4 = Path.GetFileName(s1);

Assert.AreEqual(s3, s4);

// --

s1 = @"file1.";

s3 = ZlpPathHelper.GetFileNameFromFilePath(s1);
s4 = Path.GetFileName(s1);

Assert.AreEqual(s3, s4);

// --

s1 = @"c:\folder1\folder2\folder3\file1.txt";

s3 = ZlpPathHelper.GetFileNameWithoutExtension(s1);
s4 = Path.GetFileNameWithoutExtension(s1);

Assert.AreEqual(s3, s4);

// --

s1 = @"c:\folder1\folder2\folder3\file1";

s3 = ZlpPathHelper.GetFileNameWithoutExtension(s1);
s4 = Path.GetFileNameWithoutExtension(s1);

Assert.AreEqual(s3, s4);

// --

s1 = @"c:\folder1\folder2\folder3\file1.";

s3 = ZlpPathHelper.GetFileNameWithoutExtension(s1);
s4 = Path.GetFileNameWithoutExtension(s1);

Assert.AreEqual(s3, s4);

// --

s1 = @"file1.txt";

s3 = ZlpPathHelper.GetFileNameWithoutExtension(s1);
s4 = Path.GetFileNameWithoutExtension(s1);

Assert.AreEqual(s3, s4);

// --

s1 = @"file1";

s3 = ZlpPathHelper.GetFileNameWithoutExtension(s1);
s4 = Path.GetFileNameWithoutExtension(s1);

Assert.AreEqual(s3, s4);

// --

s1 = @"file1.";

s3 = ZlpPathHelper.GetFileNameWithoutExtension(s1);
s4 = Path.GetFileNameWithoutExtension(s1);

Assert.AreEqual(s3, s4);

Here is an example call:

GetFileNameWithoutExtension(@"\\?\C:\Simulazioni\Albero\scratch_file");

This call returns an empty string.

Sorry, I've tried again and still cannot confirm.

These three tests succeed:

var r = ZlpPathHelper.GetFileNameWithoutExtension(@"\\?\C:\Simulazioni\Albero\scratch_file.txt");
Assert.AreEqual(r, @"scratch_file");

r = ZlpPathHelper.GetFileNameWithoutExtension(@"\\?\C:\Simulazioni\Albero\scratch_file.");
Assert.AreEqual(r, @"scratch_file");

r = ZlpPathHelper.GetFileNameWithoutExtension(@"\\?\C:\Simulazioni\Albero\scratch_file");
Assert.AreEqual(r, @"scratch_file");

I've found that i was running 1.0.0.6 version, that seems to expose this behaviour.
Updating the library to 1.0.0.8 seems to fix the issue.