mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 08:58:11 +00:00
LibCore: Restore support for multiple symbolic classes
Reverts recent change introduced to support implicit symbolic permission which broke the parser when multiple classes are specified. The state machine must assume it's dealing with classes until an operation character is consumed.
This commit is contained in:
parent
c839ff574a
commit
30f58de800
2 changed files with 44 additions and 34 deletions
|
@ -44,6 +44,13 @@ TEST_CASE(file_permission_mask_from_symbolic_notation)
|
|||
EXPECT_EQ(mask.value().apply(0), 0555);
|
||||
EXPECT_EQ(mask.value().apply(0664), 0555);
|
||||
|
||||
mask = Core::FilePermissionsMask::from_symbolic_notation("ugo=rx"sv);
|
||||
EXPECT(!mask.is_error());
|
||||
EXPECT_EQ(mask.value().clear_mask(), 0777);
|
||||
EXPECT_EQ(mask.value().write_mask(), 0555);
|
||||
EXPECT_EQ(mask.value().apply(0), 0555);
|
||||
EXPECT_EQ(mask.value().apply(0664), 0555);
|
||||
|
||||
mask = Core::FilePermissionsMask::from_symbolic_notation("u+rw,g=rx,o-rwx"sv);
|
||||
EXPECT(!mask.is_error());
|
||||
EXPECT_EQ(mask.value().clear_mask(), 0077);
|
||||
|
@ -51,6 +58,20 @@ TEST_CASE(file_permission_mask_from_symbolic_notation)
|
|||
EXPECT_EQ(mask.value().apply(0), 0650);
|
||||
EXPECT_EQ(mask.value().apply(0177), 0750);
|
||||
|
||||
mask = Core::FilePermissionsMask::from_symbolic_notation("+r"sv);
|
||||
EXPECT(!mask.is_error());
|
||||
EXPECT_EQ(mask.value().clear_mask(), 0);
|
||||
EXPECT_EQ(mask.value().write_mask(), 0444);
|
||||
EXPECT_EQ(mask.value().apply(0), 0444);
|
||||
EXPECT_EQ(mask.value().apply(0123), 0567);
|
||||
|
||||
mask = Core::FilePermissionsMask::from_symbolic_notation("=rx"sv);
|
||||
EXPECT(!mask.is_error());
|
||||
EXPECT_EQ(mask.value().clear_mask(), 0777);
|
||||
EXPECT_EQ(mask.value().write_mask(), 0555);
|
||||
EXPECT_EQ(mask.value().apply(0), 0555);
|
||||
EXPECT_EQ(mask.value().apply(0664), 0555);
|
||||
|
||||
mask = Core::FilePermissionsMask::from_symbolic_notation("z+rw"sv);
|
||||
EXPECT(mask.is_error());
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue