Commit graph

7089 commits

Author SHA1 Message Date
Travis Plunk
e10603c4f0
Make sure non-Windows CI fails when a test fails (#9303)
Make sure non-Windows CI fails when a test fails

## PR Context

We discovered that some tests were failing after a PR and the CI was not failing
2019-04-05 15:49:30 -07:00
Ilya
6118c37ce3 Fix stylecop hungarian (#9281)
Add very popular "is" and "_is" prefixes.
2019-04-05 10:56:21 -07:00
Ilya
b927c46eb4
Add QuoteFields parameter to ConvertTo-Csv and Export-Csv (#9132) 2019-04-05 22:19:01 +05:00
Steve Lee
fbe581134f Add more users to failures detection and fix alias for static analysis (#9292) 2019-04-05 10:01:06 -07:00
Steve Lee
b8317de469 Update tests to account for when $PSHOME is readonly (#9279)
Co-Authored-By: SteveL-MSFT <slee@microsoft.com>


Co-authored-by: Travis Plunk <travis.plunk@microsoft.com>
2019-04-04 23:01:01 -07:00
Staffan Gustafsson
4ec36a0d4a Fixing progress for Get-ComputerInfo (#9236) 2019-04-04 16:15:43 -07:00
Aditya Patwardhan
074b344133
Remove duplicate Policheck task and pin to specific version (#9297) 2019-04-04 16:14:57 -07:00
Joel Sallow (/u/ta11ow)
3f52adb0ae Add Binary Parsing Support & Refactor TryGetNumberValue & ScanNumberHelper (#7993)
Fixes #7557 

* Adds support for binary parsing in format echoing hex: `0b11010110`
  * Works with all existing type suffixes and multipliers.
  * Supports arbitrary length parsing with `n` suffix using BigInteger; details below.
* Adds `NumberFormat` enum to specify hex/binary/base 10 for the tokenizer, replacing old `bool hex`.
* Adds `n` suffix for all numeric literals to support returning value as a `BigInteger` if requested. This bypasses the issue of large literals losing accuracy when they cast through `double`.
* Adds tests for all new behaviours.

---

### Binary / Hex Parsing Implementation

* Mimics old sign bit behaviour for int and long types. Sign bits accepted for 8 or 16-bit Hex parsing, and 8, 16, 32, 64 for binary.
  * i.e., `0xFFFFFFFF -eq ([int]-1)` and `0xFFFFFFFFFFFFFFFF -eq ([long]-1)`, but suffixing `u` creates `int.MaxValue` and `long.MaxValue`, respectively, instead.
* Sign bits higher than this are accepted for bigint-suffixed numerals:
    * Hex: Bigint-suffixed hex treats the high bit of any literal with a length multiple of 8 as the sign bit
    * Binary: Bigint-suffixed binary accepts sign bits at 96 and 128 chars, and from there on every 8 characters.
    * Prefixing the literal with a 0 will bypass this and be treated as unsigned, e.g. `0b011111111`
* Specifying an `u`nsigned suffix (or combination suffix that includes `u`) ignores sign bits, similar to how parsing a hex string using `[Convert]::ToUint32()` would do so.
* Supports negating literals using `-` prefix. This can result in positive numbers due to sign bits being permitted, just like hex literals.

---

### Refactored numeric tokenizer parsing

**New flow:**

1. Check for `real` (`.01`, `0.0`, or `0e0` syntaxes)
    1. If the decimal suffix is present, TryParse directly into decimal. If the TryParse fails, TryGetNumberValue returns `false`.
    2. TryParse as `Double`, and apply multiplier to value. If the TryParse fails, TryGetNumberValue returns `false`.
        1. Check type suffixes and attempt to cast into appropriate type. This will return `false` if the value exceeds the specified type's bounds.
        2. Default to parsing as `double` where no suffix has been applied.
2. Check number format.
    * If binary, manually parse into BigInteger using optimized helper function to directly construct the BigInteger bytes from the string.
    * If hex, TryParse into `BigInteger` using some special casing to retain original behaviours in int/long ranges.
    * If neither binary nor hex, TryParse normally as a `BigInteger`.
3. Apply multiplier value before attempting any casts to ensure type bounds can be appropriately checked without overflows.
4. Check type suffixes.
    * If a specific type suffix is used, check type bounds and attempt to parse into that type.
      * If the value exceeds the type's available values, the parse fails. Otherwise, a straight cast is performed.
5. If no suffix is used, the following types are bounds-checked, in order, resulting in the first successful test determining the type of the number. 
    * `int`
    * `long`
    * `decimal` (base-10 literals only)
    * `double` (base-10 literals only)
    * ~~`BigInteger` for binary or hex literals.~~ If the value is outside `long` range (for hex and binary) or `double` range (for base 10), the parse will fail; higher values must be explicitly requested using the `n`/`N` BigInteger suffix.

---

*This is a breaking change* as binary literals are now read as numbers instead of generic tokens which could potentially have been used as function / cmdlet names or file names.

Notes:
* Binary literal support was approved by the committee in #7557 
* ~~The same issue is still under further discussion for underscore support in numeric literals and whether BigInteger parsing ought to be exposed to the user at all.~~
    * ~~Supporting underscore literals is a further breaking change causing some generic tokens like `1_000_000` to be read as numerals instead.~~ Per @SteveL-MSFT's [comment](https://github.com/PowerShell/PowerShell/pull/7993#issuecomment-442651543) this proposal was rejected.
    * ~~Removing underscore support or preventing standard parsing from accepting BigInteger ranges is a relatively trivial matter. It is my personal opinion that there is no particular reason *not* to hand the user a BigInteger when they enter a sufficiently large literal, but I will defer to the PowerShell Committee's judgement on this.~~
2019-04-03 15:10:02 -07:00
Aditya Patwardhan
4bd41e836c
Publish windows daily build to MyGet (#9288) 2019-04-03 13:22:51 -07:00
Dongbo Wang
74b71f2f39 Style: Update StyleCop rules (#8500) 2019-04-03 10:09:56 +05:00
dependabot[bot]
2b4fe626b7 Build(deps): Bump Microsoft.CodeAnalysis.CSharp from 2.10.0 to 3.0.0 (#9277) 2019-04-02 16:50:14 -07:00
Aditya Patwardhan
28ec8ac831 Fix build order in windows-daily build (#9275)
The windows-daily build had a bug which caused the packaging builds to be kicked off before tests. This PR fixes the build order.

## PR Context

Fix for failing daily build.
2019-04-02 14:25:36 -07:00
Aditya Patwardhan
4b5fe2e72b
Fix variable name in windows-daily.yml (#9274) 2019-04-02 12:45:01 -07:00
Aditya Patwardhan
10fa1fc1dd
Move artifacts to artifact staging directory before uploading (#9273) 2019-04-02 11:56:48 -07:00
Travis Plunk
5e4b4d1351 Make command searcher not use wildcard search for execution (#9202) 2019-04-02 11:54:11 -07:00
Travis Plunk
b7c7aa176e
Make install-powershell.ps1 work on Windows Server 2012 R2 (#9271) 2019-04-02 10:39:09 -07:00
Rene Hernandez
75da390d1e Add ItemSeparator and AltItemSeparator properties in ProviderInfo (#8587)
Add two properties in `ProviderInfo` class: `ItemSeparator` and `AltItemSeparator`.
On windows, the default values for those two properties are `ItemSeparator = '\'` and `AltItemSeparator = '/'`.
On unix, the default values for those two properties are `ItemSeparator = '/'` and `AltItemSeparator = '\'`.

Registry provider is the only exception, both properties for it have the value `\`.
2019-04-02 09:59:36 -07:00
Aditya Patwardhan
34fa5e472d
Fix publishing daily nupkg to MyGet (#9269) 2019-04-01 16:58:43 -07:00
James Truher [MSFT]
2f0d127ef8 Check to be sure that the test result file has actual results before uploading (#9253)
VSTS produces a warning if the result set is 0, we will skip uploading this to avoid the warning and better support automation scenarios.

## PR Context

We have automation which checks our test results and if the result set is 0 for that file, a warning is produced. This PR will avoid uploading that file into the test results (which is valid, as there are no run tests). We will still add the file to our artifact list for completeness.
2019-04-01 16:47:55 -07:00
Steve Lee
8a0ecaf620 Add timestamp to pshost trace listener (#9230)
Static analysis CI was executed separately.
2019-04-01 13:27:41 -07:00
dependabot[bot]
4005f50faa Build(deps): Bump NJsonSchema from 9.13.27 to 9.13.28 (#9265)
Bumps [NJsonSchema](https://github.com/rsuter/NJsonSchema) from 9.13.27 to 9.13.28.
- [Release notes](https://github.com/rsuter/NJsonSchema/releases)
- [Commits](https://github.com/rsuter/NJsonSchema/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-04-01 22:26:16 +05:00
Travis Plunk
f649751ed2
Update release process template to clarify that most tasks are coordinated by the release pipeline (#9238)
Co-authored-by: Reece Dunham <me@rdil.rocks>
2019-03-30 16:09:54 -07:00
Travis Plunk
14980aa943
Add secret scanning to CI (#9249)
Add secret scanning to CI

## PR Context

This should prevent us from having any secrets in our history
2019-03-30 10:17:25 -07:00
ThreeFive-O
665cd26ab0 Fix several problems in WritingPesterTests guideline (#9078) 2019-03-29 15:29:41 -07:00
pougetat
0ee5278b40 Fix Get-Module -FullyQualifiedName option to work with paths (#9101) 2019-03-29 15:27:09 -07:00
Travis Plunk
17f5a5ccbe
Add component detection to all jobs (#8964)
Add component detection to all jobs.
2019-03-29 15:18:55 -07:00
Aditya Patwardhan
8beacd1f7f Update ChangeLog for 6.2.0 (#9245)
Update the change log for 6.2.0 in master
2019-03-28 13:54:55 -07:00
Aditya Patwardhan
df513bf7d8 Update docs for v6.2.0 (#9229) 2019-03-28 12:02:14 -07:00
Reece Dunham
12276147e6 Remove code from CI.psm1 to optionally run Feature tests (#9212) 2019-03-27 13:29:15 -07:00
Steve Lee
539c4a26de Enable PoshChan for getting and automatic retrieval of test failures for a PR (#9232)
Enable new capability to ask for test failures and have PoshChan automatically get (up to 10) test failures for a PullRequest if CI fails.
2019-03-27 09:51:02 -07:00
Ilya
7dc17a35a9 Enhance the P/Invoke code for LookupAccountSid in Process.cs (#9197) 2019-03-26 21:11:25 -07:00
pougetat
0f429f2553 Fix coding style for NewModuleManifestCommand (#9134) 2019-03-26 16:55:55 +05:00
pougetat
e553aef0fb Implement Get-Random -Count without specifying an InputObject list (#9111) 2019-03-26 16:50:20 +05:00
Ilya
49c38684a3 Remove unused method CredUIPromptForCredential from HostUtilities.cs (#9220) 2019-03-25 17:02:33 -07:00
Reece Dunham
5a53ea0a32 Clean up static analysis config (#9113) 2019-03-25 16:17:36 -07:00
ThreeFive-O
487f11adf5 Remove non-existent paths from .csproj files (#9214) 2019-03-25 09:58:12 -07:00
Paul Higinbotham
9ea60587fc Add psremoting enable/disable cmdlet warning messages (#9203)
Adds warning messages to the Enable-PSRemoting and Disable-PSRemoting cmdlets that informs the user that the cmdlets only affect PSCore6 remoting endpoint configurations and not Windows PowerShell configurations.

PR Context
As documented, Enable-PSRemoting and Disable-PSRemoting affects all PowerShell remoting on a Windows system, and Windows users will likely expect the cmdlets to continue working this way in PSCore6. However, these cmdlets currently affect only PSCore6 remoting endpoints when run in PSCore6 and have no effect on Windows remoting endpoints.
2019-03-25 09:39:15 -07:00
Tyler James Leonhardt
cd7d7797e4 Typo in new parameter set (#9205) 2019-03-25 08:17:18 +05:00
Reece Dunham
df37094092 Minor FileSystemProvider cleanup (#9182) 2019-03-24 22:07:25 +05:00
Travis Plunk
5aed18dc93
Make Linux CI parallel (#9209)
Make the Linux CI build once and then run the tests on 4 different machines, by tag.

## PR Context

Running in parallel allows us to run all tests in about the same amount of clock time
2019-03-23 18:23:07 -07:00
Reece Dunham
c0cce1030c Fix capitalization cases for PoshChan (#9188)
The jobs name is fully lowercase
2019-03-23 13:31:50 -07:00
Steve Lee
3255d84627 Enable SecureString cmdlets for non-Windows (#9199)
On Unix systems, fallback to plaintext manipulation instead of using the DPAPI which is not available.

## PR Context

Currently, existing scripts that use SecureString cmdlets fail with an error complaining about crypt32.dll not being available.  This change allows these cmdlets to be used, but there is no encryption of the string.
.Net already [states](https://docs.microsoft.com/en-us/dotnet/api/system.security.securestring?view=netcore-2.1#remarks) that the contents of a SecureString are not encrypted on .Net Core.

Fix https://github.com/PowerShell/PowerShell/issues/1654

Co-authored-by: Travis Plunk <travis.plunk@microsoft.com>
2019-03-23 10:11:05 -07:00
Ilya
cc6540b614
Cleanup style issues in CoreAdapter and MshObject (#9190) 2019-03-23 09:52:30 +05:00
Ilya
a47c1b3113
Minor cleanups in Process.cs (#9195)
* Use string.Join
* Use char const
2019-03-23 09:46:33 +05:00
dependabot[bot]
8f943b9f02 Build(deps): Bump Microsoft.PowerShell.Native from 6.2.0-rc.1 to 6.2.0 (#9200) 2019-03-22 13:33:00 -07:00
Travis Plunk
94616f1789
Add Obsolete message to Send-MailMessage (#9178)
Add Obsolete message to Send-MailMessage

## PR Context

See https://github.com/PowerShell/PowerShell-RFC/pull/160

Co-authored-by: Steve Lee <slee@microsoft.com>
Co-authored-by: Ilya <darpa@yandex.ru>
2019-03-22 12:52:41 -07:00
Michael Klement
f81f778308 Update feature-request issue template to move instructions into comments. (#9187)
Moved instructions into comments.

## PR Context

While users should _see_ instructions, they shouldn't be _included_ when the issue is created.
2019-03-22 12:23:26 -07:00
Steve Lee
c94f8c02f4 Update to new format for PoshChan settings and allow all users access to reminders (#9198)
PoshChan has been updated to use a new settings format so that authorized users are per action vs being global. 

## PR Context

Since reminders don't incur much of a resource hit for PoshChan, there's no reason not to allow everyone to use it.  See https://github.com/SteveL-MSFT/PoshChan-Bot for use instructions.
2019-03-22 10:45:51 -07:00
Ilya
bc95a8e088 Refactor ReadConsole P/Invoke in ConsoleHost (#9165)
Replace `StringBuilder` with stack allocated `Span<char>` to avoid extra allocation/copies during P/Invoke
2019-03-22 09:51:13 -07:00
dependabot[bot]
43b84519a7 Build(deps): Bump NJsonSchema from 9.13.26 to 9.13.27 (#9196)
Bumps [NJsonSchema](https://github.com/rsuter/NJsonSchema) from 9.13.26 to 9.13.27.
- [Release notes](https://github.com/rsuter/NJsonSchema/releases)
- [Commits](https://github.com/rsuter/NJsonSchema/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-03-22 18:41:48 +05:00