From b89533c9e4a6b4a04e710a388cc85509a10f7cf0 Mon Sep 17 00:00:00 2001 From: Peter Vandenberk Date: Sun, 12 Jan 2025 09:47:08 +0000 Subject: [PATCH] win32_system_dir comparison script & GitHub action --- .github/workflows/win32_system_dir.yml | 33 ++++++ win32_system_dir.bat | 154 +++++++++++++++++++++++++ 2 files changed, 187 insertions(+) create mode 100644 .github/workflows/win32_system_dir.yml create mode 100644 win32_system_dir.bat diff --git a/.github/workflows/win32_system_dir.yml b/.github/workflows/win32_system_dir.yml new file mode 100644 index 000000000..d34ded926 --- /dev/null +++ b/.github/workflows/win32_system_dir.yml @@ -0,0 +1,33 @@ +name: win32 + +on: [push, pull_request] + +permissions: # added using https://github.com/step-security/secure-workflows + contents: read + +jobs: + ruby-versions: + uses: ruby/actions/.github/workflows/ruby_versions.yml@master + with: + min_version: 2.3 + engine: cruby-jruby + versions: '["truffleruby"]' + + win32-system-dir: + needs: ruby-versions + runs-on: windows-latest + strategy: + matrix: + ruby: ${{ fromJson(needs.ruby-versions.outputs.versions) }} + exclude: + - ruby: truffleruby + - ruby: jruby-head + - ruby: jruby + steps: + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0 + with: + ruby-version: ${{ matrix.ruby }} + - name: Run "win32_system_dir" comparison + run: .\win32_system_dir.bat + shell: cmd diff --git a/win32_system_dir.bat b/win32_system_dir.bat new file mode 100644 index 000000000..41927bfc8 --- /dev/null +++ b/win32_system_dir.bat @@ -0,0 +1,154 @@ +@ECHO OFF + +ECHO --------------------------------------------------------------- +ruby -I lib -r rake -e "print ' platform: ' + (Rake::Win32.windows? ? 'Windows' : 'Unix')" +ruby -e "puts ' / branch: ' + %%x{git symbolic-ref --quiet --short HEAD}.chomp" +ECHO: + +GOTO :main + +:echoWindowsEnv +ECHO [Windows] %%HOME%%=%HOME% +ECHO [Windows] %%HOMEDRIVE%%=%HOMEDRIVE% +ECHO [Windows] %%HOMEPATH%%=%HOMEPATH% +ECHO [Windows] %%APPDATA%%=%APPDATA% +ECHO [Windows] %%USERPROFILE%%=%USERPROFILE% +ECHO: +GOTO :eof + +:putsRubyEnv +ruby -e 'puts "[Ruby] ENV[\"HOME\"] = " + ENV.fetch("HOME", "nil")' +ruby -e 'puts "[Ruby] ENV[\"HOMEDRIVE\"] = " + ENV.fetch("HOMEDRIVE", "nil")' +ruby -e 'puts "[Ruby] ENV[\"HOMEPATH\"] = " + ENV.fetch("HOMEPATH", "nil")' +ruby -e 'puts "[Ruby] ENV[\"APPDATA\"] = " + ENV.fetch("APPDATA", "nil")' +ruby -e 'puts "[Ruby] ENV[\"USERPROFILE\"] = " + ENV.fetch("USERPROFILE", "nil")' +ECHO: +GOTO :eof + +:returnRubyDirHome +for /f "delims=" %%i in ('ruby -e "puts File.join(Dir.home, \"Rake\")"') do set RUBY_DIR=%%i +GOTO :eof + +:returnRakeWin32SystemDir +for /f "delims=" %%i in ('ruby -I lib -r rake -e "puts Rake::Win32::win32_system_dir"') do set RAKE_DIR=%%i +GOTO :eof + +:compareValues +CALL :returnRubyDirHome +CALL :returnRakeWin32SystemDir +ECHO [Ruby] File.join^(Dir.home, "Rake"^) =^> %RUBY_DIR% +ECHO [Rake] Rake::Win32::win32_system_dir =^> %RAKE_DIR% +if "%RUBY_DIR%"=="%RAKE_DIR%" ( + ECHO ✅ PASS: Values match +) else ( + ECHO ❌ FAIL: Values do not match + set /a FAILURE_COUNT+=1 +) +GOTO :eof + +:main + +SET FAILURE_COUNT=0 + +ECHO --------------------------------------------------------------- +ECHO 1/5 - %%HOME%% set in Windows env +ECHO --------------------------------------------------------------- + +SET HOME=C:\HP +SET HOMEDRIVE= +SET HOMEPATH= +SET APPDATA= +SET USERPROFILE= + +CALL :echoWindowsEnv +CALL :putsRubyEnv + +CALL :compareValues + +ECHO: + +ECHO --------------------------------------------------------------- +ECHO 2/5 - %%HOMEDRIVE%% and %%HOMEPATH%% set in Windows env +ECHO --------------------------------------------------------------- + +SET HOME= +SET HOMEDRIVE=C: +SET HOMEPATH=\HP +SET APPDATA= +SET USERPROFILE= + +CALL :echoWindowsEnv +CALL :putsRubyEnv + +CALL :compareValues + +ECHO: + +ECHO --------------------------------------------------------------- +ECHO 3/5 - %%APPDATA%% set in Windows env +ECHO --------------------------------------------------------------- + +SET HOME= +SET HOMEDRIVE= +SET HOMEPATH= +SET APPDATA=C:\Documents and Settings\HP\Application Data +SET USERPROFILE= + +CALL :echoWindowsEnv +CALL :putsRubyEnv + +CALL :compareValues + +ECHO: + +ECHO --------------------------------------------------------------- +ECHO 4/5 - %%USERPROFILE%% set in Windows env +ECHO --------------------------------------------------------------- + +SET HOME= +SET HOMEDRIVE= +SET HOMEPATH= +SET APPDATA= +SET USERPROFILE=C:\Documents and Settings\HP + +CALL :echoWindowsEnv +CALL :putsRubyEnv + +CALL :compareValues + +ECHO: + +ECHO --------------------------------------------------------------- +ECHO 5/5 - nothing set in Windows env +ECHO --------------------------------------------------------------- +ECHO Ruby *always* sets HOME [and USER for that matter] +ECHO in *its* environment, even if these are not set in +ECHO the Windows environment. +ECHO: +ECHO https://github.com/ruby/ruby/commit/c41cefd492 +ECHO --------------------------------------------------------------- + +SET HOME= +SET HOMEDRIVE= +SET HOMEPATH= +SET APPDATA= +SET USERPROFILE= + +CALL :echoWindowsEnv +CALL :putsRubyEnv + +CALL :compareValues + +ECHO: + +ECHO ---------------------------------- +ECHO: + +if %FAILURE_COUNT% GTR 0 ( + ECHO ❌ OVERALL RESULT: %FAILURE_COUNT% test^(s^) failed + exit /b 1 +) else ( + ECHO ✅ OVERALL RESULT: All tests passed + exit /b 0 +) +