From aa845c31004ea41d2205dbc5c2954437d374d9d2 Mon Sep 17 00:00:00 2001 From: Scott Worley Date: Sun, 30 May 2021 20:49:25 -0700 Subject: [PATCH 1/4] nixos/tests/wine: Init --- nixos/tests/wine.nix | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 nixos/tests/wine.nix diff --git a/nixos/tests/wine.nix b/nixos/tests/wine.nix new file mode 100644 index 000000000000..29b8c4828083 --- /dev/null +++ b/nixos/tests/wine.nix @@ -0,0 +1,14 @@ +import ./make-test-python.nix ({ pkgs, ... }: { + name = "wine"; + meta = with pkgs.lib.maintainers; { maintainers = [ chkno ]; }; + + machine = { pkgs, ... }: { environment.systemPackages = [ pkgs.wine ]; }; + + testScript = '' + machine.wait_for_unit("multi-user.target") + greeting = machine.succeed( + 'wine ${pkgs.pkgsCross.mingw32.hello}/bin/hello.exe' + ) + assert 'Hello, world!' in greeting + ''; +}) From 2690ab613b6226bdbb97503cc5754af213114ca5 Mon Sep 17 00:00:00 2001 From: Scott Worley Date: Sun, 30 May 2021 22:00:17 -0700 Subject: [PATCH 2/4] nixos/tests/wine: Test all five wine variants --- nixos/tests/wine.nix | 37 +++++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/nixos/tests/wine.nix b/nixos/tests/wine.nix index 29b8c4828083..49ee19fe6aff 100644 --- a/nixos/tests/wine.nix +++ b/nixos/tests/wine.nix @@ -1,14 +1,27 @@ -import ./make-test-python.nix ({ pkgs, ... }: { - name = "wine"; - meta = with pkgs.lib.maintainers; { maintainers = [ chkno ]; }; +{ system ? builtins.currentSystem, pkgs ? import ../.. { + inherit system; + config = { }; +}, }: - machine = { pkgs, ... }: { environment.systemPackages = [ pkgs.wine ]; }; +let + inherit (import ../lib/testing-python.nix { inherit system pkgs; }) makeTest; - testScript = '' - machine.wait_for_unit("multi-user.target") - greeting = machine.succeed( - 'wine ${pkgs.pkgsCross.mingw32.hello}/bin/hello.exe' - ) - assert 'Hello, world!' in greeting - ''; -}) + makeWineTest = variant: + makeTest { + name = "wine-${variant}"; + meta = with pkgs.lib.maintainers; { maintainers = [ chkno ]; }; + + machine = { pkgs, ... }: { + environment.systemPackages = [ pkgs.winePackages."${variant}" ]; + }; + + testScript = '' + machine.wait_for_unit("multi-user.target") + greeting = machine.succeed( + 'wine ${pkgs.pkgsCross.mingw32.hello}/bin/hello.exe' + ) + assert 'Hello, world!' in greeting + ''; + }; +in pkgs.lib.genAttrs [ "base" "full" "minimal" "staging" "unstable" ] +makeWineTest From a9eecaff54b506ae37207c2dbb46da4dfc68bfd1 Mon Sep 17 00:00:00 2001 From: Scott Worley Date: Sun, 30 May 2021 23:52:14 -0700 Subject: [PATCH 3/4] nixos/tests/wine: Test 32 and 64 bit --- nixos/tests/wine.nix | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/nixos/tests/wine.nix b/nixos/tests/wine.nix index 49ee19fe6aff..566b9baa67bf 100644 --- a/nixos/tests/wine.nix +++ b/nixos/tests/wine.nix @@ -4,24 +4,36 @@ }, }: let + inherit (pkgs.lib) concatMapStrings listToAttrs; inherit (import ../lib/testing-python.nix { inherit system pkgs; }) makeTest; - makeWineTest = variant: - makeTest { - name = "wine-${variant}"; + hello32 = "${pkgs.pkgsCross.mingw32.hello}/bin/hello.exe"; + hello64 = "${pkgs.pkgsCross.mingwW64.hello}/bin/hello.exe"; + + makeWineTest = packageSet: exes: variant: rec { + name = "${packageSet}-${variant}"; + value = makeTest { + inherit name; meta = with pkgs.lib.maintainers; { maintainers = [ chkno ]; }; machine = { pkgs, ... }: { - environment.systemPackages = [ pkgs.winePackages."${variant}" ]; + environment.systemPackages = [ pkgs."${packageSet}"."${variant}" ]; + virtualisation.diskSize = "800"; }; testScript = '' machine.wait_for_unit("multi-user.target") - greeting = machine.succeed( - 'wine ${pkgs.pkgsCross.mingw32.hello}/bin/hello.exe' - ) - assert 'Hello, world!' in greeting + ${concatMapStrings (exe: '' + greeting = machine.succeed( + 'wine ${exe}' + ) + assert 'Hello, world!' in greeting + '') exes} ''; }; -in pkgs.lib.genAttrs [ "base" "full" "minimal" "staging" "unstable" ] -makeWineTest + }; + + variants = [ "base" "full" "minimal" "staging" "unstable" ]; + +in listToAttrs (map (makeWineTest "winePackages" [ hello32 ]) variants + ++ map (makeWineTest "wineWowPackages" [ hello32 hello64 ]) variants) From e83531aa220c5343f5c3e909a79d5fb9a5d881e0 Mon Sep 17 00:00:00 2001 From: Scott Worley Date: Mon, 31 May 2021 08:17:08 -0700 Subject: [PATCH 4/4] wine: gecko 2.47.1 -> 2.47.2 Wine uses gecko 2.47.2 since wine commit 70567d9f2d32fa3f052609051e9913344f24c42a, which is wine versions 6.0 up through current (6.9) Add a test verifying that the "Can't find Gecko" error message does not appear. A positive test of HTML rendering would be better (eg: would be robust against changes in the error message string), but this test is easy to set up & much better than nothing. --- nixos/tests/wine.nix | 5 ++++- pkgs/misc/emulators/wine/sources.nix | 8 ++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/nixos/tests/wine.nix b/nixos/tests/wine.nix index 566b9baa67bf..30d417ce9faa 100644 --- a/nixos/tests/wine.nix +++ b/nixos/tests/wine.nix @@ -25,9 +25,12 @@ let machine.wait_for_unit("multi-user.target") ${concatMapStrings (exe: '' greeting = machine.succeed( - 'wine ${exe}' + "bash -c 'wine ${exe} 2> >(tee wine-stderr >&2)'" ) assert 'Hello, world!' in greeting + machine.fail( + "fgrep 'Could not find Wine Gecko. HTML rendering will be disabled.' wine-stderr" + ) '') exes} ''; }; diff --git a/pkgs/misc/emulators/wine/sources.nix b/pkgs/misc/emulators/wine/sources.nix index 6103472a7cc1..abaa16d2d13e 100644 --- a/pkgs/misc/emulators/wine/sources.nix +++ b/pkgs/misc/emulators/wine/sources.nix @@ -19,14 +19,14 @@ in rec { ## see http://wiki.winehq.org/Gecko gecko32 = fetchurl rec { - version = "2.47.1"; + version = "2.47.2"; url = "https://dl.winehq.org/wine/wine-gecko/${version}/wine-gecko-${version}-x86.msi"; - sha256 = "0ld03pjm65xkpgqkvfsmk6h9krjsqbgxw4b8rvl2fj20j8l0w2zh"; + sha256 = "07d6nrk2g0614kvwdjym1wq21d2bwy3pscwikk80qhnd6rrww875"; }; gecko64 = fetchurl rec { - version = "2.47.1"; + version = "2.47.2"; url = "https://dl.winehq.org/wine/wine-gecko/${version}/wine-gecko-${version}-x86_64.msi"; - sha256 = "0jj7azmpy07319238g52a8m4nkdwj9g010i355ykxnl8m5wjwcb9"; + sha256 = "0iffhvdawc499nbn4k99k33cr7g8sdfcvq8k3z1g6gw24h87d5h5"; }; ## see http://wiki.winehq.org/Mono