From 11f41825ca231d3c6ce402e5c0b3326632115ef7 Mon Sep 17 00:00:00 2001
From: Sergei Zharinov <zharinov@users.noreply.github.com>
Date: Wed, 29 Jun 2022 10:57:44 +0300
Subject: [PATCH] fix(fs): Windows CI tests (#16318)

---
 lib/util/fs/index.spec.ts | 31 ++++++++++++++++++-------------
 1 file changed, 18 insertions(+), 13 deletions(-)

diff --git a/lib/util/fs/index.spec.ts b/lib/util/fs/index.spec.ts
index 31c2dc4ecf..1829545a73 100644
--- a/lib/util/fs/index.spec.ts
+++ b/lib/util/fs/index.spec.ts
@@ -243,36 +243,41 @@ describe('util/fs/index', () => {
     });
   });
 
-  describe('chmodLocalFile', () => {
+  describe('statLocalFile', () => {
     it('works', async () => {
       await withDir(
         async (tmpDir) => {
           GlobalConfig.set({ localDir: tmpDir.path });
+
+          expect(await statLocalFile('foo')).toBeNull();
+
           await writeLocalFile('foo', 'bar');
-          await chmodLocalFile('foo', 0o000);
-          expect(await readLocalFile('foo')).toBeNull();
-          await chmodLocalFile('foo', 0o444);
-          expect((await readLocalFile('foo'))!.toString()).toBe('bar');
+          const stat = await statLocalFile('foo');
+          expect(stat).toBeDefined();
+          expect(stat!.isFile()).toBeTrue();
         },
         { unsafeCleanup: true }
       );
     });
   });
 
-  describe('statLocalFile', () => {
+  describe('chmodLocalFile', () => {
     it('works', async () => {
       await withDir(
         async (tmpDir) => {
           GlobalConfig.set({ localDir: tmpDir.path });
-
-          expect(await statLocalFile('foo')).toBeNull();
-
           await writeLocalFile('foo', 'bar');
-          await chmodLocalFile('foo', 0o123);
+          let stat = await statLocalFile('foo');
+          const oldMode = stat!.mode & 0o777;
+          const newMode = oldMode & 0o555; // Remove `write` attributes (Windows-compatible)
+
+          await chmodLocalFile('foo', newMode);
+          stat = await statLocalFile('foo');
+          expect(stat!.mode & 0o777).toBe(newMode);
 
-          const res = await statLocalFile('foo');
-          expect(res!.isFile()).toBeTrue();
-          expect(res!.mode & 0o777).toBe(0o123);
+          await chmodLocalFile('foo', oldMode);
+          stat = await statLocalFile('foo');
+          expect(stat!.mode & 0o777).toBe(oldMode);
         },
         { unsafeCleanup: true }
       );
-- 
GitLab