Skip to content

Commit

Permalink
fix: drop support for named pipes on Windows (actions#962)
Browse files Browse the repository at this point in the history
Seems that folk are having issues with uploading 0-byte files from
Windows agents. This effectively removes the support for Windows for
uploading from named files that, due to `isFIFO` returning `false` on
Windows for named pipes created using MSYS2's `mkfifo` command, resorted
to checking if the file size is 0 - a common trait of named pipes.

See actions/upload-artifact#281
  • Loading branch information
zregvart committed Dec 14, 2021
1 parent bd99a7d commit 56a58d3
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 7 deletions.
6 changes: 4 additions & 2 deletions __tests__/test-artifact-file.sh
Expand Up @@ -18,8 +18,10 @@ if [ ! -f "$path" ]; then
exit 1
fi

actualContent=$(cat $path)
if [ "$actualContent" != "$expectedContent" ];then
actualContent=$(cat "$path")
if [ "$expectedContent" == "_EMPTY_" ] && [ ! -s "$path" ]; then
exit 0
elif [ "$actualContent" != "$expectedContent" ]; then
echo "File contents are not correct, expected $expectedContent, received $actualContent"
exit 1
fi
5 changes: 4 additions & 1 deletion __tests__/upload.test.ts
Expand Up @@ -181,7 +181,10 @@ describe('Upload Tests', () => {
function hasMkfifo(): boolean {
try {
// make sure we drain the stdout
return execSync('which mkfifo').toString().length > 0
return (
process.platform !== 'win32' &&
execSync('which mkfifo').toString().length > 0
)
} catch (e) {
return false
}
Expand Down
5 changes: 1 addition & 4 deletions src/internal/upload-http-client.ts
Expand Up @@ -221,10 +221,7 @@ export class UploadHttpClient {
): Promise<UploadFileResult> {
const fileStat: fs.Stats = await stat(parameters.file)
const totalFileSize = fileStat.size
// on Windows with mkfifo from MSYS2 stats.isFIFO returns false, so we check if running on Windows node and
// if the file has size of 0 to compensate
const isFIFO =
fileStat.isFIFO() || (process.platform === 'win32' && totalFileSize === 0)
const isFIFO = fileStat.isFIFO()
let offset = 0
let isUploadSuccessful = true
let failedChunkSizes = 0
Expand Down

0 comments on commit 56a58d3

Please sign in to comment.