authorgravatar for ryanleeschneider@gmail.comRyan Schneider <ryanleeschneider@gmail.com> 2022-11-02 17:11:02-07:00
committergravatar for ryanleeschneider@gmail.comRyan Schneider <ryanleeschneider@gmail.com> 2022-11-04 08:00:50-07:00
log64b3ffd8ffb970ca881827a21ef6546f7ad6de99
tree45af51b5606311d3cbf533b28a325bd09b3e246f
parent8c4faa5f3f63cfbcfdc12cda7c37be1da642d2f6

std.os: Add IGN coverage to sigaction tests

* Should start failing on aarch64 and other word-aligned CPUs.

1 files changed, 13 insertions(+), 4 deletions(-)

lib/std/os/test.zig+13-4
...@@ -739,7 +739,7 @@ test "shutdown socket" {...@@ -739,7 +739,7 @@ test "shutdown socket" {
739 os.closeSocket(sock);739 os.closeSocket(sock);
740}740}
741741
742var signal_test_failed = true;742var signal_test_handler_called_count: u32 = 0;
743743
744test "sigaction" {744test "sigaction" {
745 if (native_os == .wasi or native_os == .windows)745 if (native_os == .wasi or native_os == .windows)
...@@ -756,11 +756,11 @@ test "sigaction" {...@@ -756,11 +756,11 @@ test "sigaction" {
756 switch (native_os) {756 switch (native_os) {
757 .netbsd => {757 .netbsd => {
758 if (sig == os.SIG.USR1 and sig == info.info.signo)758 if (sig == os.SIG.USR1 and sig == info.info.signo)
759 signal_test_failed = false;759 signal_test_handler_called_count += 1;
760 },760 },
761 else => {761 else => {
762 if (sig == os.SIG.USR1 and sig == info.signo)762 if (sig == os.SIG.USR1 and sig == info.signo)
763 signal_test_failed = false;763 signal_test_handler_called_count += 1;
764 },764 },
765 }765 }
766 }766 }
...@@ -782,10 +782,19 @@ test "sigaction" {...@@ -782,10 +782,19 @@ test "sigaction" {
782 try testing.expect((old_sa.flags & os.SA.SIGINFO) != 0);782 try testing.expect((old_sa.flags & os.SA.SIGINFO) != 0);
783 // Invoke the handler.783 // Invoke the handler.
784 try os.raise(os.SIG.USR1);784 try os.raise(os.SIG.USR1);
785 try testing.expect(signal_test_failed == false);785 try testing.expect(signal_test_handler_called_count == 1);
786 // Check if the handler has been correctly reset to SIG_DFL786 // Check if the handler has been correctly reset to SIG_DFL
787 try os.sigaction(os.SIG.USR1, null, &old_sa);787 try os.sigaction(os.SIG.USR1, null, &old_sa);
788 try testing.expectEqual(os.SIG.DFL, old_sa.handler.handler);788 try testing.expectEqual(os.SIG.DFL, old_sa.handler.handler);
789 // ensure we can ignore a signal
790 sa.handler = .{ .handler = os.SIG.IGN };
791 try os.sigaction(os.SIG.USR1, &sa, null);
792 // and ensure it is now ignored
793 try os.raise(os.SIG.USR1);
794 try testing.expect(signal_test_handler_called_count == 1);
795 // and that ignored state is returned when querying
796 try os.sigaction(os.SIG.USR1, null, &old_sa);
797 try testing.expectEqual(os.SIG.IGN, old_sa.handler.handler.?);
789}798}
790799
791test "dup & dup2" {800test "dup & dup2" {