Skip to content

Use consistent element order in pretty.write - #293

Merged
Tieske merged 2 commits into
lunarmodules:masterfrom
hth313:master
May 14, 2019
Merged

Tieske merged 2 commits into
lunarmodules:masterfrom
hth313:master

Conversation

@hth313

@hth313 hth313 commented Apr 14, 2019

Copy link
Copy Markdown
Contributor

Having consistent output makes it easier to use it for test purposes,
such as when dumping tables and comparing it to some expected output.

Having consistent output makes it easier to use it for test purposes,
such as when dumping tables and comparing it to some expected output.
@Tieske

Tieske commented May 7, 2019

Copy link
Copy Markdown
Member

@hth313 would you mind fixing the tests?

Previous commit did not emit numeric table entries for tables that had
mixed numeric and non-numeric keys.
@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage increased (+0.2%) to 84.971% when pulling 22a1b4f on hth313:master into f9f06de on stevedonovan:master.

1 similar comment
@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage increased (+0.2%) to 84.971% when pulling 22a1b4f on hth313:master into f9f06de on stevedonovan:master.

@Tieske
Tieske merged commit 9aecd3f into lunarmodules:master May 14, 2019
@Tieske

Tieske commented May 14, 2019

Copy link
Copy Markdown
Member

thank you

@hth313

hth313 commented May 14, 2019

Copy link
Copy Markdown
Contributor Author

No problem, it was a good test and it spotted a problem in my change.

netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Feb 15, 2020
## 1.7.0 (2019-10-14)
### New features

  - `utils.quote_arg` will now optionally take an array of arguments and escape
    them all into a single string.
  - `app.parse_args` now accepts a 3rd parameter with a list of valid flags and aliasses
  - `app.script_name` returns the name of the current script (previously a private function)

### Changes

  - Documentation updates
  - `utils.quit`: exit message is no longer required, and closes the Lua state (on 5.2+).
  - `utils.assert_arg` and `utils.assert_string`: now return the validated value
  - `pl.compat`: now exports the `jit` and `jit52` flags
  - `pretty.write`: now sorts the output for easier diffs [#293](lunarmodules/Penlight#293)

### Fixes

  - `utils.raise` changed the global `on_error`-level when passing in bad arguments
  - `utils.writefile` now checks and returns errors when writing
  - `compat.execute` now handles the Windows exitcode -1 properly
  - `types.is_empty` would return true on spaces always, indepedent of the parameter
  - `types.to_bool` will now compare case-insensitive for the extra passed strings
  - `app.require_here` will now properly handle an absolute base path
  - `stringx.split` will no longer append an empty match if the number of requested
    elements has already been reached [#295](lunarmodules/Penlight#295)
  - `path.common_prefix` and `path.relpath` return the result in the original casing
    (only impacted Windows) [#297](lunarmodules/Penlight#297)
  - `dir.copyfile`, `dir.movefile`, and `dir.makepath` create the new file/path with
    the requested casing, and no longer force lowercase (only impacted Windows)
    [#297](lunarmodules/Penlight#297)
  - added a missing assertion on `path.getmtime` [#291](lunarmodules/Penlight#291)
  - `stringx.rpartition` returned bad results on a not-found [#299](lunarmodules/Penlight#299)

## 1.6.0 (2018-11-23)
### New features

  - `pl.compat` now provides `unpack` as `table.unpack` on Lua 5.1

### Changes

  - `utils.unpack` is now documented and respects `.n` field of its argument.
  - `tablex.deepcopy` and `tablex.deepcompare` are now cycle aware (#262)
  - Installing through LuaRocks will now include the full rendered documentation

### Fixes

  - Fixed `seq.last` returning `nil` instead of an empty list when given an empty iterator (#253).
  - `pl.template` now applies `tostring` when substituting values in templates, avoiding errors when they are not strings or numbers (#256).
  - Fixed `pl.import_into` not importing some Penlight modules (#268).
  - Fixed version number stuck at 1.5.2 (#260).
  - Fixed `types.is_empty` returning `true` on tables containing `false` key (#267).
  - Fixed `test.assertraise` throwing an error when passed an array with a function to call plus its arguments (#272).
  - Fixed `test.assertraise` not throwing an error when given function does not error but instead returns a string matching given error pattern.
  - Fixed placeholder expressions being evaluated with wrong precedence of binary and unary negation.
  - Fixed placeholder expressions being evaluated assuming wrong binary operator associativity (e.g. `_1-(_2+_3)` was evaluated as `(_1-_2)+_3`.
  - Fixed placeholder expressions being evaluated as if unary operators take precedence over power operator (e.g. `(-_1)^_2`) was evaluated as `-(_1^2)`).
  - Fixed vulnerable backtracking pattern in `pl.stringx.strip` (#275)
msk pushed a commit to msk/pkgsrc that referenced this pull request May 11, 2026
## 1.7.0 (2019-10-14)
### New features

  - `utils.quote_arg` will now optionally take an array of arguments and escape
    them all into a single string.
  - `app.parse_args` now accepts a 3rd parameter with a list of valid flags and aliasses
  - `app.script_name` returns the name of the current script (previously a private function)

### Changes

  - Documentation updates
  - `utils.quit`: exit message is no longer required, and closes the Lua state (on 5.2+).
  - `utils.assert_arg` and `utils.assert_string`: now return the validated value
  - `pl.compat`: now exports the `jit` and `jit52` flags
  - `pretty.write`: now sorts the output for easier diffs [#293](lunarmodules/Penlight#293)

### Fixes

  - `utils.raise` changed the global `on_error`-level when passing in bad arguments
  - `utils.writefile` now checks and returns errors when writing
  - `compat.execute` now handles the Windows exitcode -1 properly
  - `types.is_empty` would return true on spaces always, indepedent of the parameter
  - `types.to_bool` will now compare case-insensitive for the extra passed strings
  - `app.require_here` will now properly handle an absolute base path
  - `stringx.split` will no longer append an empty match if the number of requested
    elements has already been reached [#295](lunarmodules/Penlight#295)
  - `path.common_prefix` and `path.relpath` return the result in the original casing
    (only impacted Windows) [#297](lunarmodules/Penlight#297)
  - `dir.copyfile`, `dir.movefile`, and `dir.makepath` create the new file/path with
    the requested casing, and no longer force lowercase (only impacted Windows)
    [#297](lunarmodules/Penlight#297)
  - added a missing assertion on `path.getmtime` [#291](lunarmodules/Penlight#291)
  - `stringx.rpartition` returned bad results on a not-found [#299](lunarmodules/Penlight#299)

## 1.6.0 (2018-11-23)
### New features

  - `pl.compat` now provides `unpack` as `table.unpack` on Lua 5.1

### Changes

  - `utils.unpack` is now documented and respects `.n` field of its argument.
  - `tablex.deepcopy` and `tablex.deepcompare` are now cycle aware (#262)
  - Installing through LuaRocks will now include the full rendered documentation

### Fixes

  - Fixed `seq.last` returning `nil` instead of an empty list when given an empty iterator (#253).
  - `pl.template` now applies `tostring` when substituting values in templates, avoiding errors when they are not strings or numbers (#256).
  - Fixed `pl.import_into` not importing some Penlight modules (#268).
  - Fixed version number stuck at 1.5.2 (#260).
  - Fixed `types.is_empty` returning `true` on tables containing `false` key (#267).
  - Fixed `test.assertraise` throwing an error when passed an array with a function to call plus its arguments (#272).
  - Fixed `test.assertraise` not throwing an error when given function does not error but instead returns a string matching given error pattern.
  - Fixed placeholder expressions being evaluated with wrong precedence of binary and unary negation.
  - Fixed placeholder expressions being evaluated assuming wrong binary operator associativity (e.g. `_1-(_2+_3)` was evaluated as `(_1-_2)+_3`.
  - Fixed placeholder expressions being evaluated as if unary operators take precedence over power operator (e.g. `(-_1)^_2`) was evaluated as `-(_1^2)`).
  - Fixed vulnerable backtracking pattern in `pl.stringx.strip` (#275)
jperkin pushed a commit to TritonDataCenter/pkgsrc that referenced this pull request May 14, 2026
## 1.7.0 (2019-10-14)
### New features

  - `utils.quote_arg` will now optionally take an array of arguments and escape
    them all into a single string.
  - `app.parse_args` now accepts a 3rd parameter with a list of valid flags and aliasses
  - `app.script_name` returns the name of the current script (previously a private function)

### Changes

  - Documentation updates
  - `utils.quit`: exit message is no longer required, and closes the Lua state (on 5.2+).
  - `utils.assert_arg` and `utils.assert_string`: now return the validated value
  - `pl.compat`: now exports the `jit` and `jit52` flags
  - `pretty.write`: now sorts the output for easier diffs [#293](lunarmodules/Penlight#293)

### Fixes

  - `utils.raise` changed the global `on_error`-level when passing in bad arguments
  - `utils.writefile` now checks and returns errors when writing
  - `compat.execute` now handles the Windows exitcode -1 properly
  - `types.is_empty` would return true on spaces always, indepedent of the parameter
  - `types.to_bool` will now compare case-insensitive for the extra passed strings
  - `app.require_here` will now properly handle an absolute base path
  - `stringx.split` will no longer append an empty match if the number of requested
    elements has already been reached [#295](lunarmodules/Penlight#295)
  - `path.common_prefix` and `path.relpath` return the result in the original casing
    (only impacted Windows) [#297](lunarmodules/Penlight#297)
  - `dir.copyfile`, `dir.movefile`, and `dir.makepath` create the new file/path with
    the requested casing, and no longer force lowercase (only impacted Windows)
    [#297](lunarmodules/Penlight#297)
  - added a missing assertion on `path.getmtime` [#291](lunarmodules/Penlight#291)
  - `stringx.rpartition` returned bad results on a not-found [#299](lunarmodules/Penlight#299)

## 1.6.0 (2018-11-23)
### New features

  - `pl.compat` now provides `unpack` as `table.unpack` on Lua 5.1

### Changes

  - `utils.unpack` is now documented and respects `.n` field of its argument.
  - `tablex.deepcopy` and `tablex.deepcompare` are now cycle aware (#262)
  - Installing through LuaRocks will now include the full rendered documentation

### Fixes

  - Fixed `seq.last` returning `nil` instead of an empty list when given an empty iterator (#253).
  - `pl.template` now applies `tostring` when substituting values in templates, avoiding errors when they are not strings or numbers (#256).
  - Fixed `pl.import_into` not importing some Penlight modules (#268).
  - Fixed version number stuck at 1.5.2 (#260).
  - Fixed `types.is_empty` returning `true` on tables containing `false` key (#267).
  - Fixed `test.assertraise` throwing an error when passed an array with a function to call plus its arguments (#272).
  - Fixed `test.assertraise` not throwing an error when given function does not error but instead returns a string matching given error pattern.
  - Fixed placeholder expressions being evaluated with wrong precedence of binary and unary negation.
  - Fixed placeholder expressions being evaluated assuming wrong binary operator associativity (e.g. `_1-(_2+_3)` was evaluated as `(_1-_2)+_3`.
  - Fixed placeholder expressions being evaluated as if unary operators take precedence over power operator (e.g. `(-_1)^_2`) was evaluated as `-(_1^2)`).
  - Fixed vulnerable backtracking pattern in `pl.stringx.strip` (#275)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

3 participants