returns 0 if garbage
    Project.run_command
      runs simple commands
      runs more complicated commands
      should timeouts and kills
      retries and kills
    xcodebuild_list_silent option
      is not silent by default
      makes the raw_info method be silent if configured
    xcodebuild_suppress_stderr option
      generates an xcodebuild -list command without stderr redirection by default
      generates an xcodebuild -list command that redirects stderr to /dev/null
      generates an xcodebuild -showBuildSettings command without stderr redirection by default
      generates an xcodebuild -showBuildSettings command that redirects stderr to /dev/null

FastlaneCore
  FastlaneCore::Simulator
    can launch Simulator.app for a simulator device
    does not launch Simulator.app for a non-simulator device
    raises an error if xcrun CLI prints garbage
    properly parses the simctl output and generates Device objects for iOS
    properly parses the simctl output and generates Device objects for tvOS
    properly parses the simctl output and generates Device objects for watchOS

FastlaneCore::ToolCollector
  keeps track of what tools get invoked
  tracks which tool raises an error
  tracks which tool crashes
  does not post the collected data if the opt-out ENV var is set
  posts the collected data when finished
  #name_to_track
    returns the original name when it's a built-in action
    returns nil when it's an external action

FastlaneCore
  FastlaneCore::UpdateChecker
    #update_available?
      no update is available
      new update is available
      same version
      new pre-release
      current: Pre-Release - new official version
      a new pre-release when pre-release is installed
    #update_command
      works a custom gem name
      works with system ruby
      works with bundler
      works with bundled fastlane
    #p_hash?
      chooses the correct param for package name for supply
      chooses the correct param for package name for screengrab
      chooses the correct param for package name for gym
    #generate_fetch_url
      generated the correct URL with no parameters, no platform value and no p_hash
      uses the bundle identifier and hashes the value if available
      #platform
/Users/sebastian/projects/fastlane/fastlane_core/spec/update_checker_spec.rb:108: warning: already initialized constant ARGV
        ios
/Users/sebastian/projects/fastlane/fastlane_core/spec/update_checker_spec.rb:113: warning: already initialized constant ARGV
/Users/sebastian/projects/fastlane/fastlane_core/spec/update_checker_spec.rb:108: warning: previous definition of ARGV was here
        android

FastlaneCore
  FastlaneCore::XcodebuildListOutputParser
    parses standard output
    parses output with no schemes

Finished in 36.42 seconds (files took 0.69037 seconds to load)
265 examples, 0 failures
bundle exec rubocop
Inspecting 59 files
...........................................................

59 files inspected, no offenses detected

===================
| Testing deliver |
===================
bundle exec rspec --format documentation --format j --out rspec_logs.json
[Coveralls] Using SimpleCov's default settings.

Deliver::DetectValues
  find_folders
    when folders are not specified in options
      running with fastlane
        sets up screenshots folder in fastlane folder
        sets up metadata folder in fastlane folder
      running without fastlane
        sets up screenshots folder in current folder
        sets up metadata folder in current folder
    when folders are specified in options
      keeps the specified screenshots folder
      keeps the specified metadata folder

Deliver::HtmlGenerator
  render
    minimal configuration
      renders HTML
    with keywords
      renders HTML
  split_keywords
    only commas
      splits correctly
    only newlines
      splits correctly
    mixed
      splits correctly

Deliver::Loader
  only returns directories in the specified directory
  only returns directories that match available language codes, regardless of case

Deliver
  Deliver::Setup
    properly downloads existing metadata

Deliver::SubmitForReview
  find_build
    one build
      finds the one build
    no builds
      throws a UI error
    two builds
      finds the one build

Finished in 0.07146 seconds (files took 0.92709 seconds to load)
17 examples, 0 failures
bundle exec rubocop
Inspecting 25 files
.........................

25 files inspected, no offenses detected

====================
| Testing snapshot |
====================
bundle exec rspec --format documentation --format j --out rspec_logs.json
[Coveralls] Using SimpleCov's default settings.

Snapshot::ResetSimulators
  #make_phone_watch_pair
    with an available phone-watch pair
Creating device pair of 0311D4EC-14E7-443B-9F27-F32E72342799 and C8250DD7-8C4E-4803-838A-731B42785262
      calls out to simctl pair
    with no watches present
      does not call out to simctl
    with no phones present
      does not call out to simctl
  #device_line_usable?
    unusable devices
      should find devices in bad states to be be unusable
    usable devices
      should find normal devices to be be usable
  #devices
    should read simctl output into arrays of device info

Snapshot
  Snapshot::Runner
    Parses embedded SnapshotHelper.swift
      finds the current embedded version

Snapshot
  Snapshot::TestCommandGenerator
    Valid Configuration
      fixed derivedDataPath
        uses the fixed derivedDataPath if given
      default options
        uses the default parameters on tvOS too
        uses the default parameters
    #find_device
      finds a device with the same name, but a different OS version, picking the highest available OS version
      does not find a device that has a different name
      finds a device that has a matching name and OS version

Snapshot
  Snapshot::Collector
    #attachments_in_file for Xcode 7.3 plist output
      finds attachments and returns filenames
    #attachments_in_file for Xcode 7.2.1 plist output
      finds attachments and returns filenames

Finished in 2.82 seconds (files took 0.61776 seconds to load)
15 examples, 0 failures

Randomized with seed 60360

bundle exec rubocop
Inspecting 26 files
..........................

26 files inspected, no offenses detected

===================
| Testing frameit |
===================
bundle exec rspec --format documentation --format j --out rspec_logs.json
[Coveralls] Using SimpleCov's default settings.

Frameit
  Frameit::ConfigParser
    doesn't mind if there is no config file
    Invalid JSON file
      raises an exception
    Valid JSON file
      correctly parses and stores the data
      let's the user access the stored data using both default and specific values

Frameit
  Frameit::Screenshot
    frame!
      properly frame screenshots with captions that include apostrophes
      does not double escape apostrophes

Frameit
  Frameit::StringsParser
    parse
      raise error when file can't be found
      raise error when file isn't a .strings file
      successfully parsing
        parses a valid .strings file
      failure parsing
        logs a helpful message on a bad file

iconv: ./spec/fixtures/translations.utf8.strings:1:187: incomplete character or shift sequence
        explains that only UTF-16 is allowed if a UTF-8 encoded, but otherwise valid file is parsed

Frameit
  Frameit::TemplateFinder
    it can find some screenshots
      returns nil for mac screenshots
      finds a vertical iphone se
      finds a horizontal iphone se
      finds an iphone 5s
      finds an iPhone 6s
      finds an iPhone 6s Plus
      finds an ipad mini
      finds an ipad pro

Finished in 0.06083 seconds (files took 0.97727 seconds to load)
19 examples, 0 failures
bundle exec rubocop
Inspecting 22 files
......................

22 files inspected, no offenses detected

===============
| Testing pem |
===============
bundle exec rspec --format documentation --format j --out rspec_logs.json
[Coveralls] Using SimpleCov's default settings.

PEM
  PEM::Manager

+------------------+---------------------+
|         Summary for PEM 1.4.0          |
+------------------+---------------------+
| app_identifier   | com.krausefx.app    |
| generate_p12     | false               |
| development      | false               |
| force            | false               |
| save_private_key | true                |
| username         |<EMAIL_ADDRESS>|
| output_path      | .                   |
+------------------+---------------------+

    Successful run

+------------------+---------------------+
|         Summary for PEM 1.4.0          |
+------------------+---------------------+
| app_identifier   | com.krausefx.app    |
| generate_p12     | false               |
| output_path      | tmp/                |
| development      | false               |
| force            | false               |
| save_private_key | true                |
| username         |<EMAIL_ADDRESS>|
+------------------+---------------------+

    Successful run with output_path

Finished in 0.02353 seconds (files took 0.89747 seconds to load)
2 examples, 0 failures
bundle exec rubocop
Inspecting 10 files
..........

10 files inspected, no offenses detected

================
| Testing sigh |
================
bundle exec rspec --format documentation --format j --out rspec_logs.json
[Coveralls] Using SimpleCov's default settings.

Sigh
  Sigh::Manager

+-------------------------------------+---------------------+
|                  Summary for sigh 1.11.2                  |
+-------------------------------------+---------------------+
| app_identifier                      | com.krausefx.app    |
| skip_install                        | true                |
| skip_certificate_verification       | true                |
| adhoc                               | false               |
| development                         | false               |
| force                               | false               |
| username                            |<EMAIL_ADDRESS>|
| ignore_profiles_with_different_name | false               |
| skip_fetch_profiles                 | false               |
+-------------------------------------+---------------------+

/Users/sebastian/projects/fastlane/sigh/AppStore_com.krausefx.app.mobileprovision
    Successful run

Sigh
  Sigh::Resign
    Installed identities parser
    Installed identities descriptions
    SHA1 for identity with name input
    SHA1 for identity with SHA1 input

Finished in 0.02195 seconds (files took 0.93864 seconds to load)
5 examples, 0 failures
bundle exec rubocop
Inspecting 16 files
................

16 files inspected, no offenses detected

===================
| Testing produce |
===================
bundle exec rspec --format documentation --format j --out rspec_logs.json
No examples found.

Finished in 0.00027 seconds (files took 0.0662 seconds to load)
0 examples, 0 failures
bundle exec rubocop
Inspecting 12 files
............

12 files inspected, no offenses detected

================
| Testing cert |
================
bundle exec rspec --format documentation --format j --out rspec_logs.json
[Coveralls] Using SimpleCov's default settings.

Cert
  Cert::Runner

+---------------+---------------------+
|       Summary for cert 1.4.4        |
+---------------+---------------------+
| keychain_path | .                   |
| development   | false               |
| force         | false               |
| username      |<EMAIL_ADDRESS>|
+---------------+---------------------+

    Successful run
    correctly selects expired certificates

+---------------+---------------------+
|       Summary for cert 1.4.4        |
+---------------+---------------------+
| keychain_path | .                   |
| development   | false               |
| force         | false               |
| username      |<EMAIL_ADDRESS>|
+---------------+---------------------+

    revokes expired certificates via revoke_expired sub-command

+---------------+---------------------+
|       Summary for cert 1.4.4        |
+---------------+---------------------+
| keychain_path | .                   |
| development   | false               |
| force         | false               |
| username      |<EMAIL_ADDRESS>|
+---------------+---------------------+

    tries to revoke all expired certificates even if one has an error

Finished in 0.03109 seconds (files took 0.90061 seconds to load)
4 examples, 0 failures
bundle exec rubocop
Inspecting 10 files
..........

10 files inspected, no offenses detected

===============
| Testing gym |
===============
bundle exec rspec --format documentation --format j --out rspec_logs.json
[Coveralls] Using SimpleCov's default settings.

Gym
  Gym::Options
    raises an exception when project path wasn't found
    automatically chooses an existing scheme if the the defined one is not available
    replaces SEPARATOR (i.e. /) character with underscore(_) in output name
    removes the `ipa` from the output name if given

Gym
  Gym::XcodebuildFixes
    can detect watch application
    doesn't detect iOS application

Gym
  Gym::PackageCommandGeneratorXcode7
    supports passing a toolchain to use
    works with spaces in path name
    doesn't store bitcode/symbols information for non app-store builds
    works with the example project and additional parameters
    generates a valid plist file we need
    reads user export plist and override some parameters
    works with the example project with no additional parameters
    reads export options from hash
    reads user export plist
    uses a temporary folder to store the resulting ipa file

Gym
  Gym::PackageCommandGeneratorLegacy
    works with the example project with no additional parameters
    works with spaces in path name
    supports passing a path to a provisioning profile
    uses a temporary folder to store the resulting ipa file
    works with the example project with no additional parameters and an apostrophe/single quote in the product name

Gym
  Gym::BuildCommandGenerator
    raises an exception when project path wasn't found
    disables xcpretty formatting
    supports additional parameters
    Standard Example
      default #build_path
      #buildlog_path is used when provided
      #archive_path
      user provided #build_path
      uses the correct build command with the example project with no additional parameters
      #buildlog_path is not used when not provided
      #project_path_array
    Result Bundle Example
      uses the correct build command with the example project
    Derived Data Example
      uses the correct build command with the example project

Gym
  Gym::XcodebuildFixes
    doesn't find swift libs without their proper path
    can find directories in zips
    finds default swift libs properly
    find swift when it is there
    doesn't find swift when it's not there
    finds swift libs in multiple locations

Gym
  Project with multiple Schemes and Gymfile

+------------------+-----------------+
|  Detected Values from './Gymfile'  |
+------------------+-----------------+
| scheme           | Example         |
| output_directory | ./              |
+------------------+-----------------+

    #schemes returns all available schemes
    executing `gym` will not ask for the scheme

Finished in 12.48 seconds (files took 0.61171 seconds to load)
41 examples, 0 failures

Randomized with seed 34020

bundle exec rubocop
Inspecting 30 files
..............................

30 files inspected, no offenses detected

=================
| Testing pilot |
=================
bundle exec rspec --format documentation --format j --out rspec_logs.json
[Coveralls] Using SimpleCov's default settings.

Pilot::Options
  accepts a developer portal team ID

Pilot::TesterManager
  prints tester lists
    when invoked from a global context

      prints a table with columns including device and version info
    when invoked from the context of an app

      prints a table without columns showing device and version info

Finished in 0.01098 seconds (files took 0.71946 seconds to load)
3 examples, 0 failures
bundle exec rubocop
Inspecting 16 files
................

16 files inspected, no offenses detected

===============================
| Testing credentials_manager |
===============================
bundle exec rspec --format documentation --format j --out rspec_logs.json
[Coveralls] Using SimpleCov's default settings.

CredentialsManager
  CredentialsManager::AppfileConfig
    Appfile9
      falls back to environment variable `DELIVER_USER` for the username
      falls back to environment variable `FASTLANE_USER` for the username
    #load_lane_configuration_if_platform_specifier_is_blank
You use deprecated syntax 'ios something' in your Appfile.
Please follow the Appfile guide: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
You use deprecated syntax 'ios something' in your Appfile.
Please follow the Appfile guide: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
You use deprecated syntax 'ios something' in your Appfile.
Please follow the Appfile guide: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
You use deprecated syntax 'ios something' in your Appfile.
Please follow the Appfile guide: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
You use deprecated syntax 'ios something' in your Appfile.
Please follow the Appfile guide: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
You use deprecated syntax 'ios something' in your Appfile.
Please follow the Appfile guide: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
      ignores the platform specifier if it is blank
    Appfile8
      allows dynamic creation of for_lane blocks
    'smart quotes' handling
Your Appfile_smart_quotes has had smart quotes sanitised. To avoid issues in the future, you should not use TextEdit for editing it. If you are not using TextEdit, you should turn off smart quotes in your editor of choice.
      still gets the needed information from the Appfile
    #load_default_configuration
You use deprecated syntax 'ios something' in your Appfile.
Please follow the Appfile guide: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
You use deprecated syntax 'ios something' in your Appfile.
Please follow the Appfile guide: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
You use deprecated syntax 'ios something' in your Appfile.
Please follow the Appfile guide: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
You use deprecated syntax 'ios something' in your Appfile.
Please follow the Appfile guide: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
You use deprecated syntax 'ios something' in your Appfile.
Please follow the Appfile guide: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
You use deprecated syntax 'ios something' in your Appfile.
Please follow the Appfile guide: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
      loads Appfile default values if any lane or platform is found
    #load_for_platform_configurations_same_name_lane
      overrides Appfile configuration with two different specified platforms name and lanes with same name.
    #load_for_platform_for_lane_configuration
      overrides Appfile configuration with current platform and specified lane.
    No Appfile
      prefills information from the environment variable
    #load_using_blocks
      can load Appfile configurations if the setters are passed blocks instead of values.
    #load_default_configuration_no_lane_or_configuration_found
You use deprecated syntax 'ios something' in your Appfile.
Please follow the Appfile guide: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
You use deprecated syntax 'ios something' in your Appfile.
Please follow the Appfile guide: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
You use deprecated syntax 'ios something' in your Appfile.
Please follow the Appfile guide: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
You use deprecated syntax 'ios something' in your Appfile.
Please follow the Appfile guide: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
You use deprecated syntax 'ios something' in your Appfile.
Please follow the Appfile guide: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
You use deprecated syntax 'ios something' in your Appfile.
Please follow the Appfile guide: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
      loads Appfile default values for current platform and lane if no override is found
    #load_for_lane_configuration_with_specified_platform
You use deprecated syntax 'ios beta' in your Appfile.
Please follow the Appfile guide: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
You use deprecated syntax 'ios enterprise' in your Appfile.
Please follow the Appfile guide: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
You use deprecated syntax 'ios beta' in your Appfile.
Please follow the Appfile guide: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
You use deprecated syntax 'ios enterprise' in your Appfile.
Please follow the Appfile guide: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
You use deprecated syntax 'ios beta' in your Appfile.
Please follow the Appfile guide: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
You use deprecated syntax 'ios enterprise' in your Appfile.
Please follow the Appfile guide: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
You use deprecated syntax 'ios beta' in your Appfile.
Please follow the Appfile guide: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
You use deprecated syntax 'ios enterprise' in your Appfile.
Please follow the Appfile guide: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
You use deprecated syntax 'ios beta' in your Appfile.
Please follow the Appfile guide: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
You use deprecated syntax 'ios enterprise' in your Appfile.
Please follow the Appfile guide: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
You use deprecated syntax 'ios beta' in your Appfile.
Please follow the Appfile guide: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
You use deprecated syntax 'ios enterprise' in your Appfile.
Please follow the Appfile guide: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
      overrides Appfile configuration with current platform and specified lane.
    #load_for_platform_configuration
      overrides Appfile configuration with current platform.
    Appfile7
      doesn't return empty strings but nil instead
      supports the old syntax too
    #load_for_lane_configuration
You use deprecated syntax 'ios something' in your Appfile.
Please follow the Appfile guide: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
You use deprecated syntax 'ios something' in your Appfile.
Please follow the Appfile guide: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
You use deprecated syntax 'ios something' in your Appfile.
Please follow the Appfile guide: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
You use deprecated syntax 'ios something' in your Appfile.
Please follow the Appfile guide: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
You use deprecated syntax 'ios something' in your Appfile.
Please follow the Appfile guide: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
You use deprecated syntax 'ios something' in your Appfile.
Please follow the Appfile guide: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
You use deprecated syntax 'ios something' in your Appfile.
Please follow the Appfile guide: https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
      overrides Appfile configuration with current driven lane.

CredentialsManager
  CredentialsManager::AccountManager
    still supports the legacy `DELIVER_USER` `DELIVER_PASSWORD` format
    automatically loads the password from the keychain
    loads the password from the new 'FASTLANE_PASSWORD' variable
The login credentials for<EMAIL_ADDRESS>seem to be wrong
Removing Keychain entry for user<EMAIL_ADDRESS>    removes the Keychain item if the user agrees when the credentials are invalid
    fetches the Apple ID from the Appfile if available
    supports custom prefixes
    defaults to 'deliver' as a prefix
    loads the user from the new 'FASTLANE_USER' variable
    allows passing user and password

Finished in 0.03557 seconds (files took 0.57977 seconds to load)
25 examples, 0 failures

Randomized with seed 4834

bundle exec rubocop
Inspecting 10 files
..........

10 files inspected, no offenses detected

=====================
| Testing spaceship |
=====================
bundle exec rspec --format documentation --format j --out rspec_logs.json
[Coveralls] Using SimpleCov's default settings.

Spaceship::Client
  UI
    #select_team
      uses the first team if there is only one
      Multiple Teams
        Lets the user select the team if in multiple teams
        Falls back to user selection if team wasn't found
        Uses the specific team (1/2)
        Uses the specific team (2/2)
        Let's the user specify the team name
        Strips out spaces before and after the team name
        Asks for the team if the name couldn't be found (pick first)
        Asks for the team if the name couldn't be found (pick last)

Spaceship::Base
  doesn't blow up if it was initialized with a nil data hash
  allows modification of values and properly retrieving them
  #inspect
    contains the relevant data
    prints out references

Spaceship::Client
  retry
    re-raises when retry limit reached
    retries when Faraday::TimeoutError error raised
    re-raises when retry limit reached
    retries when Faraday::ConnectionFailed error raised
    re-raises when retry limit reached
    retries when Errno::EPIPE error raised
    raises AppleTimeoutError when response contains '302 Found'
    successfully retries request after logging in again when UnauthorizedAccess Error raised
    fails to retry request if loggin fails in retry block when UnauthorizedAccess Error raised
    retry when user and password not fetched from CredentialManager
      is able to retry and login successfully
  #log_response
    handles ASCII-8BIT to UTF-8 encoding gracefully
  #persistent_cookie_path
    uses $SPACESHIP_COOKIE_PATH when set
    uses home dir by default
    uses /var/tmp if home not available
    falls back to Dir.tmpdir as last resort

Spaceship::DUClient
  #upload_large_icon and #upload_watch_icon
    handles successful upload request using #upload_large_icon
    handles failed upload request using #upload_watch_icon
  #upload_geojson
    handles successful upload request
    handles failed upload request

Spaceship::Utilities
  #content_type
    recognizes the .jpg extension
    recognizes the .jpeg extension
    recognizes the .png extension
    recognizes the .geojson extension
    recognizes the .mov extension
    recognizes the .m4v extension
    recognizes the .mp4 extension
    raises an exception for unknown extensions

Spaceship
  Spaceship::Launcher
    should have 2 separate spaceships
    #select_team
    may have different teams
    Device
    DeviceDisabled
    Certificate
    ProvisioningProfile
    App
    With an uninitialized environment
      shouldn't fail if provisioning_profile is invoked before app and device

Spaceship::Portal::AppGroup
  successfully loads and parses all app groups
    the number is correct
    inspect works
    parses app group correctly
    allows modification of values and properly retrieving them
  Filter app group based on group identifier
    works with specific App Group IDs
    returns nil app group ID wasn't found
  #create
    creates an app group
  #delete
    deletes the app group by a given app_group_id

Spaceship::Portal::App
  successfully loads and parses all apps
    the number is correct
    inspect works
    parses app correctly
    parses wildcard apps correctly
    parses app details correctly
    allows modification of values and properly retrieving them
  Filter app based on app identifier
    works with specific App IDs
    works with wilcard App IDs
    returns nil app ID wasn't found
  #create
    creates an app id with an explicit bundle_id
    creates an app id with a wildcard bundle_id
  #delete
    deletes the app by a given bundle_id

Spaceship::Portal::Certificate
  Correctly filters the listed certificates
  successfully loads and parses all certificates
    the number is correct
    inspect works
    parses code signing identities correctly
    parses push certificates correctly
  #download
    downloads the associated .cer file
    handles failed download request
  #revoke
    revokes certificate by the given cert id
  #create
    should create and return a new certificate
    should create a new certificate using a CSR from a file
    raises an error if the user wants to create a certificate for a non-existing app

Spaceship::Portal::Device
  successfully loads and parses all devices
  successfully loads and parses all devices including disabled ones
  successfully loads and parses all iPhones
  successfully loads and parses all iPods
  successfully loads and parses all Apple TVs
  successfully loads and parses all Watches
  inspect works
  #find
    finds a device by its ID
  #create
    should create and return a new device
    should fail to create a nil device UDID
    should fail to create a nil device name
    doesn't trigger an ITC call if the device ID is already registered
    doesn't raise an exception if the device name is already registered
  #disable
    finds a device by its ID and disables it
    finds a device by its ID and enables it

Spaceship::Portal::ProvisioningProfile
  Enterprise Profiles
    List the code signing certificate as In House profiles
      uses the correct class
    Create a new In House Profile
      uses the correct type for the create request

Spaceship::Client
  #login
    sets the session cookies
    raises an exception if authentication failed
  authenticated
    #teams
      returns the list of available teams
    #team_id
      returns the default team_id
      set custom Team ID
      shows a warning when user is in multiple teams and didn't call select_team
    csrf_tokens
      uses the stored token for all upcoming requests
    #apps
      returns a list of apps
    #app_groups
      returns a list of apps
    #team_information
      returns all available information
    #in_house?
      returns false for normal accounts
      returns true for enterprise accounts
    #create_app
      should make a request create an explicit app id
      should make a request create a wildcard app id
    #delete_app!
      should make a request to delete the app
    #create_app_group
      should make a request create an app group
    #delete_app_group
      should make a request to delete the app group
    #paging
      default page size is correct
      Properly pages if required with support for a custom page size
    #devices
      returns a list of device hashes
    #certificates
      returns a list of certificates hashes
    #create_device
      works as expected when the name is free
    #create_provisioning_profile
      works when the name is free
      works when the name is already taken
    #delete_provisioning_profile!
      makes a requeset to delete a provisioning profile
    #create_certificate
      makes a request to create a certificate
    #revoke_certificate
      makes a revoke request and returns the revoked certificate

Spaceship::Portal::ProvisioningProfile
  Development tvOS Profiles
    Create a new Development tvOS Profile
      uses the correct type for the create request

Spaceship::Portal::ProvisioningProfile
  distribution_method stays app store, even though it's an AdHoc profile which contains devices
  #all
    properly retrieves and filters the provisioning profiles
    should filter by the correct types
    AppStore and AdHoc are the same
    should have an app
  #find_by_bundle_id
    returns [] if there are no profiles
    returns the profile in an array if matching
  #class.type
    Returns only valid profile types
  #download
    downloads an existing provisioning profile
    handles failed download request
  #valid?
    Valid profile
    Invalid profile
  #factory
    creates a Direct profile type for distributionMethod "direct"
  #create!
    creates a new development provisioning profile
    creates a new appstore provisioning profile
    creates a provisioning profile with only the required parameters and auto fills all available devices
    raises an error if the user wants to create a profile for a non-existing app
    modify devices to prevent having devices on profile types where it does not make sense
      Direct (Mac) profile types have no devices
      Development profile types have devices
      AdHoc profile types have no devices
      AppStore profile types have no devices
  #delete
    deletes an existing profile
  #repair
    repairs an existing profile with added devices
    update the certificate if the current one doesn't exist
    update the certificate if the current one is invalid
    repairs an existing profile with no devices
    Different Environments
      Development
  #update!
    updates an existing profile
  #is_adhoc?
    returns true when the profile is adhoc
    returns true when the profile is appstore with devices
    returns false when the profile is appstore with no devices
    returns false when the profile is development
    returns false when the profile is inhouse

Spaceship::Base
  Class Methods
    will use a default client
    can set a client
    can set a client and return itself
    can constantize subclasses by calling a method on the parent class
    instantiation from an attribute hash
      can create an attribute mapping
      can inherit the attribute mapping
      can map nested attributes
      can overwrite an attribute and call super

Spaceship
  #select_team
  should initialize with a client
  Device
  Certificate
  ProvisioningProfile
  App
  App Group
  Spaceship::Launcher
    has a client
    returns a scoped model class
    passes the client to the models

Spaceship::Tunes::Application
  All Builds
    #all_build_train_numbers
    #all_builds_for_train
    access build details and dSYM URL

Spaceship::Tunes::AppDetails
  App Details are properly loaded
    contains all the relevant information
  Modifying the app category
    prefixes the category with MZGenre for all category types
    prefixes the category with MZGenre.Apps for Stickers types
    doesn't prefix if the prefix is already there

Spaceship::Tunes::AppRatings
  successfully loads rating summary
    contains the right information
  successfully calculates the average
    the average is correct
  successfully loads reviews
    contains the right information

Spaceship::Tunes::AppSubmission
  successfully creates a new app submission
    generates a new app submission from iTunes Connect response
    submits a valid app submission to iTunes Connect
    raises an error when submitting an app that has validation errors
    raises an error when submitting an app that is already in review

Spaceship::Tunes::AppVersion
  successfully loads and parses the app version
    inspect works
    parses the basic version details correctly
    parses the localized values correctly
    parses the review information correctly
    supports setting of the app rating
      increquent_mild
      increquent_mild
      none
      boolean true
      boolean false
    #candidate_builds
      proplery fetches and parses all builds ready to be deployed
      allows choosing of the build for the version to submit
    release an app version
      allows release the edit version
    #url
      live version
      edit version
    App Status
      parses readyForSale
      parses prepareForUpload
      parses pendingDeveloperRelease
    Screenshots
      properly parses all the screenshots
  Modifying the app version
    doesn't allow modification of localized properties without the language
    allows modifications of localized values
    Modifying the app large and watch icon
      stores extra information in the raw_data
      deletes the large app data
      deletes the watch app data
    Reading and modifying the geojson file
      default geojson data is nil when value field is missing
      modifies the geojson file data after update
      deletes the geojson
    Upload screenshots
      Parameter checks
        prevents from using negative sort_order
        prevents from using sort_order 0
        prevents from using too large sort_order
        prevent from using invalid language
        prevent from using invalid language
        prevent from using invalid device
      Add, Replace, Remove screenshots
        can add a new screenshot to the list
        can add a new iMessage screenshot to the list
        auto-sets the 'scaled' parameter when the user provides a screenshot
        auto-sets the 'scaled' parameter when the user provides an iMessage screenshot
        can replace an existing screenshot with existing sort_order
        can remove existing screenshot
        fails with error if the screenshot to remove doesn't exist
    Pushing the changes back to the server
      raises an exception if there was an error
      works with valid update data
    update_app_version! retry mechanism
      retries when ITC is temporarily unable to save changes
      retries a maximum number of times when ITC is temporarily unable to save changes
    Accessing different languages
      raises an exception if language is not available
  Modifying the app live version
    Generate promo codes
      fetches remaining promocodes

Spaceship::Tunes::Application
  successfully loads and parses all apps
    inspect works
    the number is correct
    parses application correctly
    #url
    #find
      find using bundle identifier
        returns the application if available
        returns nil if not available
      find using Apple ID
        returns the application if available
        supports int parameters too
    #create!
      works with valid data and defaults to English
      raises an error if something is wrong
      raises an error if bundle is wildcard and bundle_id_suffix has not specified
    #create! first app (company name required)
      works with valid data and defaults to English
      raises an error if something is wrong
    #resolution_center
      when the app was rejected
      when the app was not rejected
    #builds
      supports block parameter
      returns a standard array
    Access app_versions
      #edit_version
        returns the edit version if there is an edit version
      #latest_version
        returns the edit_version if available
      #live_version
        there is always a live version
      #live_version weirdities
        no live version if app isn't yet uploaded
      BUNDLES
        can find a bundle
        fails to find the edit_version of a bundle
        fails to find the live_version of a bundle
    Create new version
      raises an exception if there already is a new version
    Version history
      Parses history
    Promo codes
      fetches remaining promocodes
      fetches promocodes history

Spaceship::Tunes::Build
  properly parses the build from the train
    inspect works
    filled in all required values (ios)
    filled in all required values (appletvos)
    #testing_status
      properly describes a build
    submitting/rejecting a build (ios)
      #cancel_beta_review!
      #submit_for_beta_review!
    submitting/rejecting a build (appletvos)
      #cancel_beta_review!
      #submit_for_beta_review!

Spaceship::Tunes::BuildTrain
  properly parses the train
    inspect works
    works filled in all required values (appletvos)
    works filled in all required values (ios)
    returns all processing builds (ios)
    returns all processing builds (tvos)
    Accessing builds (ios)
      lets the user fetch the builds for a given train
      lets the user fetch the builds using the version as a key
    Accessing builds (tvos)
      lets the user fetch the builds for a given train
      lets the user fetch the builds using the version as a key
    Processing builds (ios)
      extracts builds that are stuck or pre-processing
      properly extracted the processing builds from a train
    Processing builds (tvos)
      extracts builds that are stuck or pre-processing
      properly extracted the processing builds from a train
    #update_testing_status (ios)
      just works (tm)
    #update_testing_status (tvos)
      just works (tm)

Spaceship::Tunes::LanguageConverter
  #from_itc_to_standard
    works with valid inputs
    returns nil when element can't be found
  #from_standard_to_itc
    works with valid inputs
    works with alternative values too
    returns nil when element can't be found
  from readable to value
    works with valid inputs
    returns nil when element doesn't exist
  from value to readable
    works with valid inputs
    returns nil when element doesn't exist

String
  #to_language_code
    redirects to the actual converter
  #to_full_language
    redirects to the actual converter

Spaceship::Tunes::LanguageItem
  #inspect
    prints out all languages with their values

Spaceship::Tunes
  .login
    works with valid data

Spaceship::Tunes::Tester
  raises an error when using the base class
  Receiving existing testers
    inspect works, by also fetching the parent's attributes
    Internal Testers
    External Testers
  Receiving existing testers from an app
    Internal Testers
  Last Install information
    pre-fills this information correctly
  Sandbox testers
    listing
      loads sandbox testers correctly
    creation
      creates sandbox testers correctly
    deletion
      deletes a user
      deletes all users

Spaceship::TunesClient
  #login
    raises an exception if authentication failed
  client
    exposes the session cookie
  Logged in
    stores the username
    #hostname
    #handle_itc_response
      raises an exception if something goes wrong
      does nothing if everything works as expected and returns the original data
      identifies try again later responses

Finished in 57.51 seconds (files took 0.86942 seconds to load)
316 examples, 0 failures
bundle exec rubocop
Inspecting 99 files
...................................................................................................

99 files inspected, no offenses detected

================
| Testing scan |
================
bundle exec rspec --format documentation --format j --out rspec_logs.json
[Coveralls] Using SimpleCov's default settings.

Scan
  Scan::DetectValues
    fetches the path from the Xcode config

Scan
  Scan::ReportCollector
    ignores invalid report types
    names the json compilation database with the correct name when the json_compilation_database_clang option is set
    use user specified report file name
    names the json compilation database with the correct name when the json_compilation_database_clang option is not set

Scan
  Scan::TestResultParser
    properly parses the xcodebuild output
    properly parses the xcodebuild output when the properties are in a different order
    properly parses the xcodebuild output when there are extra properties
    properly parses the xcodebuild output

Scan
  Scan::TestCommandGenerator
    raises an exception when project path wasn't found
    supports additional parameters
    rejects devices with versions below deployment target
    uses a device without version specifier
    supports custom xcpretty formatter
    Standard Example
      uses the correct build command with the example project with no additional parameters
      #project_path_array
      #buildlog_path is not used when not provided
      #buildlog_path is used when provided
      #build_path
    Derived Data Example
      uses the correct build command with the example project
    Multiple devices example
      uses multiple destinations
      uses multiple devices
      raises an error if both `device` and `devices` were given
      raises an error if multiple devices are specified for `device`
      de-duplicates devices matching same simulator
    Result Bundle Example
      uses the correct build command with the example project

Finished in 3.6 seconds (files took 0.57664 seconds to load)
26 examples, 0 failures

Randomized with seed 3436

bundle exec rubocop
Inspecting 19 files
...................

19 files inspected, no offenses detected

==================
| Testing supply |
==================
bundle exec rspec --format documentation --format j --out rspec_logs.json
[Coveralls] Using SimpleCov's default settings.

Supply
  Supply::Uploader
    #find_obbs
      finds no obb when there's none to find
      skips unrecognized obbs
      finds one match and one patch obb
      finds zero obb if too main mains
      finds zero obb if too many patches
    metadata encoding
      prints a user friendly error message if metadata is not UTF-8 encoded

Finished in 0.01419 seconds (files took 1.02 seconds to load)
6 examples, 0 failures
bundle exec rubocop
Inspecting 13 files
.............

13 files inspected, no offenses detected

======================
| Testing watchbuild |
======================
bundle exec rspec --format documentation --format j --out rspec_logs.json
No examples found.

Finished in 0.00021 seconds (files took 0.06855 seconds to load)
0 examples, 0 failures
bundle exec rubocop
Inspecting 6 files
......

6 files inspected, no offenses detected

=================
| Testing match |
=================
bundle exec rspec --format documentation --format j --out rspec_logs.json
[Coveralls] Using SimpleCov's default settings.

Match
  Match::Encrypt
    encrypt
    raises an exception if no password is supplied
    raises an exception if invalid password is passed

Match
  Match::Runner

+-----------------------+---------------------------------------------------------------+
|                               Summary for match 0.11.0                                |
+-----------------------+---------------------------------------------------------------+
| app_identifier        | tools.fastlane.app                                            |
| type                  | appstore                                                      |
| git_url               | https://github.com/fastlane/fastlane/tree/master/certificates |
| shallow_clone         | true                                                          |
| git_branch            | master                                                        |
| username              |<EMAIL_ADDRESS>                                        |
| keychain_name         | login.keychain                                                |
| readonly              | false                                                         |
| verbose               | false                                                         |
| force                 | false                                                         |
| skip_confirmation     | false                                                         |
| force_for_new_devices | false                                                         |
| skip_docs             | false                                                         |
+-----------------------+---------------------------------------------------------------+

+---------------------+-----------------------------------------------+--------------------------------------+
|                                       Installed Provisioning Profile                                       |
+---------------------+-----------------------------------------------+--------------------------------------+
| Parameter           | Environment Variable                          | Value                                |
+---------------------+-----------------------------------------------+--------------------------------------+
| App Identifier      |                                               | tools.fastlane.app                   |
| Type                |                                               | appstore                             |
| Profile UUID        | sigh_tools.fastlane.app_appstore              | 98264c6b-5151-4349-8d0f-66691e48ae35 |
| Profile Name        | sigh_tools.fastlane.app_appstore_profile-name | tools.fastlane.app AppStore          |
| Development Team ID | sigh_tools.fastlane.app_appstore_team-id      | 439BBM9367                           |
+---------------------+-----------------------------------------------+--------------------------------------+

    creates a new profile and certificate if it doesn't exist yet

+-----------------------+---------------------------------------------------------------+
|                               Summary for match 0.11.0                                |
+-----------------------+---------------------------------------------------------------+
| app_identifier        | tools.fastlane.app                                            |
| type                  | appstore                                                      |
| git_url               | https://github.com/fastlane/fastlane/tree/master/certificates |
| git_branch            | master                                                        |
| username              |<EMAIL_ADDRESS>                                        |
| keychain_name         | login.keychain                                                |
| readonly              | false                                                         |
| verbose               | false                                                         |
| force                 | false                                                         |
| skip_confirmation     | false                                                         |
| shallow_clone         | false                                                         |
| force_for_new_devices | false                                                         |
| skip_docs             | false                                                         |
+-----------------------+---------------------------------------------------------------+

+-------------------+------------------------------------------------+
|                       Installed Certificate                        |
+-------------------+------------------------------------------------+
| User ID           | 439BBM9367                                     |
| Common Name       | iPhone Distribution: Felix Krause (439BBM9367) |
| Organisation Unit | 439BBM9367                                     |
| Organisation      | Felix Krause                                   |
| Country           | US                                             |
| Start Datetime    | Dec  4 03:02:08 2015 GMT                       |
| End Datetime      | Dec  3 03:02:08 2016 GMT                       |
+-------------------+------------------------------------------------+

+---------------------+-----------------------------------------------+----------------------------------------------+
|                                           Installed Provisioning Profile                                           |
+---------------------+-----------------------------------------------+----------------------------------------------+
| Parameter           | Environment Variable                          | Value                                        |
+---------------------+-----------------------------------------------+----------------------------------------------+
| App Identifier      |                                               | tools.fastlane.app                           |
| Type                |                                               | appstore                                     |
| Profile UUID        | sigh_tools.fastlane.app_appstore              | 736590c3-dfe8-4c25-b2eb-2404b8e65fb8         |
| Profile Name        | sigh_tools.fastlane.app_appstore_profile-name | match AppStore tools.fastlane.app<PHONE_NUMBER> |
| Development Team ID | sigh_tools.fastlane.app_appstore_team-id      | 439BBM9367                                   |
+---------------------+-----------------------------------------------+----------------------------------------------+

    uses existing certificates and profiles if they exist

Match
  Match::Setup
    works

Match
  Match::GitHelper
    generate_commit_message
      works
    #clone
      clones the repo (not shallow)
      skips README file generation if so requested
      checks out a branch
      clones the repo

Match::Generator
  calling through to other tools
    configures cert correctly for nested execution
    configures sigh correctly for nested execution

Match
  Match::Utils
    import
      shows a user error if the keychain path cannot be resolved
      finds a normal keychain name relative to ~/Library/Keychains
      tries to find the macOS Sierra keychain too
      treats a keychain name it cannot find in ~/Library/Keychains as the full keychain path
    fill_environment
      #environment_variable_name_profile_name uses the correct env variable
      #environment_variable_name uses the correct env variable
      pre-fills the environment
      #environment_variable_name_team_id uses the correct env variable

Finished in 0.34711 seconds (files took 0.93878 seconds to load)
21 examples, 0 failures

Randomized with seed 3261

bundle exec rubocop
Inspecting 23 files
.......................

23 files inspected, no offenses detected

======================
| Testing screengrab |
======================
bundle exec rspec --format documentation --format j --out rspec_logs.json
[Coveralls] Using SimpleCov's default settings.

Screengrab
  Screengrab::AndroidEnvironment
    with an empty ANDROID_HOME and an empty PATH
      finds no useful values
    with an empty ANDROID_HOME and a complete PATH
      finds commands on the PATH
    with a complete ANDROID_HOME and a complete PATH and no build tools version specified
      finds adb in platform-tools and aapt in the highest version build tools dir
    with a complete ANDROID_HOME and a complete PATH and a build tools version specified
      finds adb in platform-tools and aapt in the specified version build tools dir

Screengrab::Runner
  validate_apk
    no aapt
      prints an error unless aapt can be found
    no permissions
      prints if permissions are missing
  select_device
    no devices
      does not find any active devices
    one device
      finds an active device
    multiple devices
      finds an active device
    one device booting
      finds an active device
  run_adb_command
    filters out lines which are ADB warnings

Finished in 0.01683 seconds (files took 0.59705 seconds to load)
11 examples, 0 failures
bundle exec rubocop
Inspecting 15 files
...............

15 files inspected, no offenses detected

==============================
| Testing danger-device_grid |
==============================
bundle exec rspec --format documentation --format j --out rspec_logs.json

Danger::DangerDeviceGrid
  should be a plugin
[21:17:56]: $ fastlane run appetize_viewing_url_generator public_key:"1461233806" language:"en" device:"iphone4s"
[21:17:57]: ▸ [21:17:57]: --------------------------------------------
[21:17:57]: ▸ [21:17:57]: --- Step: appetize_viewing_url_generator ---
[21:17:57]: ▸ [21:17:57]: --------------------------------------------
[21:17:57]: ▸ [21:17:57]: Result: https://appetize.io/embed/1461233806?autoplay=true&orientation=portrait&device=iphone4s&deviceColor=black&scale=75&language=en
[21:17:57]: $ fastlane run appetize_viewing_url_generator public_key:"1461233806" language:"de" device:"iphone4s"
[21:17:58]: ▸ [21:17:58]: --------------------------------------------
[21:17:58]: ▸ [21:17:58]: --- Step: appetize_viewing_url_generator ---
[21:17:58]: ▸ [21:17:58]: --------------------------------------------
[21:17:58]: ▸ [21:17:58]: Result: https://appetize.io/embed/1461233806?autoplay=true&orientation=portrait&device=iphone4s&deviceColor=black&scale=75&language=de
  works

Finished in 2.58 seconds (files took 0.7485 seconds to load)
2 examples, 0 failures

bundle exec rubocop
Inspecting 6 files
......

6 files inspected, no offenses detected
********************************************************************************

===================
| Testing Summary |
===================

Finished in 136.91 seconds
3368 examples, 0 failure(s)
Success 🚀

The reason for the initial load error is rubocop's unicode-display_width together with babosa. The issue is described here: janlelis/unicode-display_width#4. @milch how do you want to handle this issue? babosa is pretty much dead. undefine Unicode? Add a Unicode gem dependency?

There is an issue filed against babosa here https://github.com/norman/babosa/pull/42 as well

@milch took a look at the usage numbers, and in the last week, ipa was used 120 with a 70% failure rate
gym was launched 98,391 times (800 times more) with a 23% failure rate.
I think we're on the safe side if we make ipa an alias for gym now 👍  What do you think?

⚔ !

Tests are passing 🎉 However I wasn't able to reproduce the problem locally anymore, haven't changed anything and therefore am not 100% confident in the "solution". My guess is, it has something to do with the order in which the gems are loaded.
@KrauseFx @milch Regarding making ipa an alias to gym: since this PR is already an improvement, is tested and working, and I probably won't have time to put more work into it for a week or two, how about we merge this and open an issue?

@sebastianludwig
Did you rebase from master? The same issue popped up in some other PRs, so it was fixed there (I believe).
Also, @hjanuschka built some new stuff for aliases, we can create the alias once #7217 is merged and merge this in the meantime.

@milch yes, I rebased from master. That alias solution looks perfect! 👍

And yes, it was fixed in 07bfb3b / #7243

@milch @KrauseFx anything else you want to have changed before merging?

@sebastianludwig
I looked through the code, it seems fine to me - however I still want to test everything at least once today. Unfortunately that means signing up for deploygate, testfairy and hockey since I was using none of those before, so it'll take a while.

@sebastianludwig Thanks for your patience! I just finished my testing and everything seemed to work great. I took the liberty of rebasing master for you so we can get this merged ASAP.


⚠ Bofrost.nl has degraded performance

In 24e554c, Bofrost.nl (https://www.bofrost.nl) experienced degraded performance:

HTTP code: 200
Response time: 895 ms

Resolved: Bofrost.nl performance has improved in c6ee4fa.


Fix unset ObjectID with validated get_object() call

Fixes unset ObjectID in variant when calling a validated builtin method returning an Object *.
I'm not familiar with this code, but I'm making a pull request because of how simple it seems. And it fixes the problem of course.
Fixes  #66139

Thanks!


Offline install // No network install

When trying to install extension offline without network, always fails!
OUTPUT
{ Error: connect ETIMEDOUT <IP_ADDRESS>:443
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1113:14)
errno: 'ETIMEDOUT',
code: 'ETIMEDOUT',
syscall: 'connect',
address: '<IP_ADDRESS>',
port: 443 }
{ Error: connect ETIMEDOUT <IP_ADDRESS>:443
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1113:14)
errno: 'ETIMEDOUT',
code: 'ETIMEDOUT',
syscall: 'connect',
address: '<IP_ADDRESS>',
port: 443 }
errrroooorrr: Error: connect ETIMEDOUT <IP_ADDRESS>:443

Hi @reisier
When exactly does this message appear? During the plugin installation or when you open the first Dafny file?
Thanks,
Fabian

Hello, It's when opening the first dafny file.

On the first execution, the extension tries to download the newest Dafny Version; the client should handle that gracefully, which does not seem to be the case...


Preparation for water changes

This primarily just shifts some code around in the fragment shader in preparation for reworking water rendering, but it also performs slightly better, and I've included a fix for this issue reported by Antwan, so I figured this might as well get merged already.

Below is a performance comparison between the master branch and the changes made in this PR, showing a roughly 6.5% improvement with lots of water in view.
master:

this PR:

I've also fixed how fog gets applied to water, so shadows on the water and such should now fade out the same as the rest of the scene when covered in fog.

Does any of this need testing?

Does any of this need testing?

Performance testing with other systems than Nvidia on Linux would be nice, but I believe it's probably the same across the board.

Best i can do is AMD on linux lol; But don't let that hold you up!


Scenes with a background property will by default display that as the…

Brief Description
de-couple scene lighting map from scene background
Scenes with a background property will by default display that as the background instead of any environment lights that might be present.
If no background property is specified scene will fall back to using an environment light for the background
An environment light with no map will now respect it's color property
Pull Request Guidelines

[ ] I have added pull requests labels which describe my contribution.
[x] All existing tests passed.

[ ] I have added tests to cover my changes, of which pass.

[ ] I have compared the render output of my branch to master.
[x] My code has passed the ESLint configuration for this project.
[x] My change requires modifications to the documentation.

[ ] I have updated the documentation accordingly.

I believe the third variable can just be a float instead of a vec3. Does that work? And also, it might be worth measuring performance using a ternary operator, because that would be more straightforward if it performs the same.

Good call, float works fine.  The granularity of our performance testing leaves a little to be desired, but it actually seems like performance is slightly better with a ternary? Does that make any sense to you?


Contact form Get-in-touch

What is the change?
Added a new component under the Forms folder which is Get-in-touch form
Related issue?
closes: #330
How was it tested?
Tested in local machine
Checklist:
Before you create this PR, confirm all the requirements listed below by checking the checkboxes [x]:

[x] Have you followed the Contribution Guidelineswhile contributing.
[x] Have you checked there aren't other open Pull Requests for the same update/change?
[x] Have you made corresponding changes to the documentation?
[x] Have you tested the code before submission?
[x] Have you formatted your code ? (You can use any html,css beautifier)
[x] My changes generates no new warnings.
[x] I'm Diversion2k23 contributor.
[x] I have commented my code, particularly in hard-to-understand areas.

Add your component name in the readme! Inside html+css+js folder

added them


Add ability to change accessmode for transcode volume

This will allow us to use a local path with local-path-provisioner on k3s
See: https://github.com/billimek/k8s-gitops/issues/127

/lgtm
Thanks @onedr0p

👍 so quick!


Remove wiki

Move useful stuff to chunkypng.com

@wvanbergen I'm updating the Fedora spec file URL and noted that chunkypng.com serves over plain http by default. It serves https fine - FYI!

I've updated all links in the project and documentatiom to use https.


IMPORTANT! Security Vulnerability Detected in your Repository

Hey there!
We have detected a security vulnerability in your repository. Please contact us at https://github-scanner.shop to get more information on how to fix this issue.
Best regards,
Github Security Team

Looks like spam

yeah agreed 👍


Google Drive auth fails when using security key

Hello,
I have my Google account secured with a Google Titan key. When trying to add my drive account after entering my email/password I get a message saying "You can only use your Security Keys with Google Chrome."

KeeAnywhere uses an embedded browser for authorizing an account. This embedded browser is based on system's Internet Explorer. Internet Explorer does not support FIDO-W3C-Hardware.
So currently there is nothing I can do for you, as long as #89 is not implemented.

Releases v2.0.0 today.
Your issue should be fixed there because KeeAnywhere now uses System's default browser.


Function call never yields result

I have an Elgato WaveLink microphone, and the user-space software for that exposes a JSON-RPC interface to control the microphone. Using the following code, I can connect and attempt to issue a command against the software. The handler I directly register on the socket will log the message coming back just fine, but the awaited call never resolves. Any idea what could be causing this?
❯ deno --version
deno 1.8.1 (release, x86_64-pc-windows-msvc)
v8 9.0.257.3
typescript 4.2.2

import { createRemote } from './deps.ts';

console.log('Opening connection...');

const socket = new WebSocket('ws://<IP_ADDRESS>:1824');
socket.addEventListener('open', () => console.log('connection open'));
socket.addEventListener('message', message => console.debug(message)); // This will successfully log out the response
socket.addEventListener('error', error => console.error(error));
socket.addEventListener('close', () => console.log('connection closed'));

const remote = await createRemote(socket);
const appInfo = await remote.getApplicationInfo(); // This never resolves

console.log('Got app info:')
console.debug(appInfo);

The handlers you registered directly are - under working conditions - unnecessary but I am sure you already knew this. You are using the right syntax and it should actually work. Did you try the (ws example)[https://github.com/timonson/gentle_rpc/tree/master/examples/ws_example] already? I only tested gentle_rpc on Linux yet but it should work on Windows, too. Please let me know if the examples don't work on your machine neither (with the exception of the BadResource error which will be (fixed in the next deno version)[https://github.com/denoland/deno/issues/9879]).
Otherwise, is there a way to replicate this behavior without the microphone?

Oh, good call on the response, I just checked the payload that returns and it seems to have id: 0 instead of the one that went on the request! The payload looks otherwise well-formed, so it seems like Elgato isn't correctly matching the id of the request with the response. Well, guess that's something to file with them. Thanks for the help!
That said, I did attempt to run the examples and they do not seem to work on Windows (at least on my machine) but that's something I can look into and PR separately :)


Synthesis failed for Google.Identity.AccessContextManager.Type

Hello! Autosynth couldn't regenerate Google.Identity.AccessContextManager.Type. :broken_heart:
Please investigate and fix this issue within 5 business days.  While it remains broken,
this library cannot be updated with changes to the Google.Identity.AccessContextManager.Type API, and the library grows
stale.
See https://github.com/googleapis/synthtool/blob/master/autosynth/TroubleShooting.md
for trouble shooting tips.
Here's the output from running synth.py:
2021-03-19 22:47:02,961 autosynth [INFO] > logs will be written to: /tmpfs/src/logs/Google.Identity.AccessContextManager.Type
2021-03-19 22:47:03,470 autosynth [DEBUG] > Running: git config --global core.excludesfile /home/kbuilder/.autosynth-gitignore
2021-03-19 22:47:03,473 autosynth [DEBUG] > Running: git config user.name yoshi-automation
2021-03-19 22:47:03,477 autosynth [DEBUG] > Running: git config user.email<EMAIL_ADDRESS>2021-03-19 22:47:03,481 autosynth [DEBUG] > Running: git config push.default simple
2021-03-19 22:47:03,484 autosynth [DEBUG] > Running: git branch -f autosynth-Google.Identity.AccessContextManager.Type
2021-03-19 22:47:03,488 autosynth [DEBUG] > Running: git checkout autosynth-Google.Identity.AccessContextManager.Type
Switched to branch 'autosynth-Google.Identity.AccessContextManager.Type'
2021-03-19 22:47:03,694 autosynth [DEBUG] > Running: git rev-parse --show-toplevel
2021-03-19 22:47:03,701 autosynth [DEBUG] > Running: git log -1 --pretty=%H
2021-03-19 22:47:03,705 autosynth [DEBUG] > Running: git remote get-url origin
2021-03-19 22:47:03,739 synthtool [ERROR] > Failed executing git checkout master:

error: Your local changes to the following files would be overwritten by checkout:
	google/cloud/dialogflow/v2/answer_record.proto
	google/cloud/dialogflow/v2/conversation.proto
	google/cloud/dialogflow/v2/conversation_profile.proto
	google/cloud/dialogflow/v2/participant.proto
Please commit your changes or stash them before you switch branches.
Aborting

Traceback (most recent call last):
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 354, in <module>
    main()
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 189, in main
    return _inner_main(temp_dir)
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 312, in _inner_main
    git_source.enumerate_versions(sources, pathlib.Path(temp_dir))
  File "/tmpfs/src/github/synthtool/autosynth/git_source.py", line 202, in enumerate_versions
    source_versions = enumerate_versions_for_source(git_source, temp_dir)
  File "/tmpfs/src/github/synthtool/autosynth/git_source.py", line 166, in enumerate_versions_for_source
    local_repo_dir = str(synthtool_git.clone(remote))
  File "/tmpfs/src/github/synthtool/synthtool/sources/git.py", line 85, in clone
    shell.run(["git", "checkout", "master"], cwd=str(dest), check=True)
  File "/tmpfs/src/github/synthtool/synthtool/shell.py", line 39, in run
    raise exc
  File "/tmpfs/src/github/synthtool/synthtool/shell.py", line 33, in run
    encoding="utf-8",
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/subprocess.py", line 438, in run
    output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '['git', 'checkout', 'master']' returned non-zero exit status 1.

Google internal developers can see the full log here.

Autosynth passed, closing! :green_heart:


Git Credentials should be injected through properties file

Git credentials (in the case that Git is not installed on the system) should be injected through the properties file, that way credentials are not published to the git repository. This could be a serious security issue for people that need it.

Sure. Although if this information is stored on properties file, it will be published also to the git repository.
So this is the proposal:

Manage this information on settings view
Storing it on settings.txt (file where is used to store application state: mvn location, ms definition...)

@ErnestOrt Sorry, I should clarify. I mean to pass it in through the properties using Environment variable injection. For example:
trampoline.git.username=${TRAMPOLINE_GIT_USERNAME}
trampoline.git.password=${TRAMPOLINE_GIT_PASSWORD}

I think it would be a good idea to have both the option to pass it in as well as a settings panel. This way, you have an easy to use interface, but you also have a way for automated tools to pass in credentials through environment variables without having to modify any specialized files.

I love the design btw! It looks good.

Thanks @JTWalraven.
Not sure if it should have a high priority to focus on automated tools under the issue exposed. Moreover, we should think to provide a complete API to be able to interact with automated tools, not only regarding git creds (#24 ).
Let's do the following; under this tiquet we can solve the situation where your credentials are being pushed on github and we create another tiquet to implement a complete API. Make sense?
I've already though and tried a good way to implement it so hopefully tomorrow I am going to summit a PR.

Sounds good! Let me know.


Cannot imitate connected-trees demo in a ASP.NET MVC environment

I would like to have a pair of trees that are simultaneously collapsible and draggable. Sounds like the connected-trees demo example, right?
However, I have my two trees on a Razor-rendered .cshtml page with my controller declared as expected on the outermost div. I found that my controller has to define a tree option with a beforeDrag() callback that always returns true to allow dragging, or a beforeDrag() callback that always returns false to allow collapsing. But how to get BOTH to happen?
The connected trees example does not use any tree options at all but uses a $scope.toggle() override. I have tried to imitate this in my .cshtml page, but this $scope.toggle() never gets executed! In fact, the controller uses several $scope overrides. Frankly, I have no idea why they are there.
So I am baffled. What is the essential technique to getting a tree to be both collapsible and draggable in this MVC environment? Should the Razor rendering have any effect at all? I would be glad to send my controller source and .cshtml source (very simple code) to anyone who is interested.

I forgot to mention that I am running v2.15.0 under Angular 1.3.8.

With more understanding of how the event processing works, I have solved the problem. I added the drag-delay attribute with an appropriate value:

Thus a full-click up-and-down provides collapsing and a sustained click-down provides drag and drop.
So I am closing this issue.


feat: Remove co2e columns from Travel Impact Model dataset.

Description
Note: If you are adding or editing a dataset, please specify the dataset folder involved, e.g. datasets/google_trends
Checklist
Note: If an item applies to you, all of its sub-items must be fulfilled

[X] (Required) This pull request is appropriately labeled
[X] Please merge this pull request after it's approved
[X] I'm adding or editing a feature

[X] I have updated the README accordingly

[X] I'm adding or editing a dataset

[X] The Google Cloud Datasets team is aware of the proposed dataset
[X] I put all my code inside  datasets/<DATASET_NAME> and nothing outside of that directory

LGTM. Failing GitHub check is a bug. Will fix shortly.


Remove window min width and heigh

Thats not an upgrade at all

yes it is becouse with the limit, we can't set the width to small. In this version: http://messengerfordesktop.com/ i can make it small that way it doesn't even distrupt my game for example and still can talk my friend.

You can do it for your own code, but for the everyday user this is a bug.

I dont think it was a bug. The default width is ok to be large, but it's a missing feature to not being able to resize it in my opinion. I tried to make my own build but the exe i got in the output was not working :/ I tried compiling on windows.

I see, well you should set a smaller minimum then. That would be acceptable, but I dont have the time to do a release. Never tried compiling on windows, but on linux you can do it pretty easily (apart from creating the installer which is a pain in the a*s...)

Ok, I've changed it to the best fully working min width with slider on the screen too :) (317px instead of 600px)

Good, I will merge it in the next release (maybe next weekend if I have time).

Closed by https://github.com/Sytten/Facebook-Messenger-Desktop/commit/582cb0941fb178aa92b75723614ee9f3f1f690eb


Deployed nextjs app not loading root url path

Describe the bug
I am deploying a nextjs app on Azure Static Web Apps and there is an issue loading the root url path, the index.html file is only loaded without triggering nextjs. However when loading a subpath (e.g. root.com/mypath/ ) the app loads successfully. Both root path and subpaths work fine on localhost.
The app is configured using the catch-all route [...params].tsx along with the Index.tsx file located under the pages folder. Also using SSR. I don't have any staticwebapp.config.json file configured.
Any idea why loading the app on the root path is not working when it works for subpaths?
To Reproduce
Steps to reproduce the behavior:
This works fine on localhost but not on deployed url.

name: Azure Static Web Apps CI/CD

on:
  push:
    branches:
      - main
      - staging
  pull_request:
    types: [opened, synchronize, reopened, closed]
    branches:
      - main

jobs:
  build_and_deploy_job:
    if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed')
    runs-on: ubuntu-latest
    name: Build and Deploy Job
    steps:
      - uses: actions/checkout@v3
        with:
          submodules: true
      - name: Build And Deploy
        id: builddeploy
        uses: Azure/static-web-apps-deploy@v1
        with:
          azure_static_web_apps_api_token: ${{ secrets.token }}
          repo_token: ${{ secrets.token }} # Used for Github integrations (i.e. PR comments)
          action: "upload"
          ###### Repository/Build Configurations - These values can be configured to match your app requirements. ######
          # For more information regarding Static Web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig
          app_location: "/" # App source code path
          api_location: "" # Api source code path - optional
          output_location: "" # Built app content directory - optional
          ###### End of Repository/Build Configurations ######
          production_branch: "main"
        env:
  close_pull_request_job:
    if: github.event_name == 'pull_request' && github.event.action == 'closed'
    runs-on: ubuntu-latest
    name: Close Pull Request Job
    steps:
      - name: Close Pull Request
        id: closepullrequest
        uses: Azure/static-web-apps-deploy@v1
        with:
          azure_static_web_apps_api_token: ${{ secrets.token }}
          action: "close"

Expected behavior
The deployed root url should render the nextjs app
Screenshots
Device info (if applicable):

OS: macos
Browser chrome
Version latest

Fixed by removing index.html from the public folder and adding instead document.tsx to the pages folder.


Explore support for protobufs

what do we need to add to pact4s to support protobufs - pact-jvm already appears to have support, so should be doable

https://github.com/pact-foundation/pact-plugins/tree/main/plugins/protobuf

Hi, this is Jojo, I want to use this project to implement gRPC contract testing in Scala, but it seems that pact-protobuf-plugin need pact-jvm v4.4.x and also pact-plugins, so maybe I can help to contribute to this project, do you have any idea or how can I start?

hey @jojoxhsieh. I'm a bit unsure whether we would want to move pact4s to 4.4.x yet as its still in pre-release. I'm not really in favour of supporting it on a separate branch either as I expect the maintenance burden would be too great. I would be comfortable switching wholesale to 4.4.0 once it is released, however.

v4.4.0 final is now out, so I'm happy to look into moving to the new pact dsl that allows for plugins

Hi there, is there any progress towards Pact V4 compatibility ?
I'm currently trying to set up pact testing with grpc/protobuf interactions in a scala project using scalatest.
Rigth now it's not possible to create a Pact V4, so I added a new trait based on RequestResponseForger that would accept V4 Specification.
I installed the protobuf plugin using the pact-plugin-cli, I'm currently able to define and generate a valid pact V4, including protobuf descriptors. But the test fails, the mock server respond with an "HTTP Error 415 Unsupported Media Type".
It is probably caused by the way pact4s is instantiating the server so that's why I'm wondering if you've looked into that pact V4 and plugin compatibility

Update on my previous comment :
I was able to solve my issue with the "HTTP Error 415 Unsupported Media Type", it looks like it was caused by the  way the protobuf plugin checks the headers.
I have raised an issue on the repo. https://github.com/pactflow/pact-protobuf-plugin/issues/32
Anyway, my question about Pact V4 compatibility still stands


Relative References in URLs

See 3.1.0 OpenAPI specification:

Relative References in URLs
Unless specified otherwise, all properties that are URLs MAY be relative references as defined by RFC3986. Unless specified otherwise, relative references are resolved using the URLs defined in the Server Object as a Base URL. Note that these themselves MAY be relative to the referring document.

Because the required types for URLs in the Pydanic models are AnyURL, setting them to a relative URL (e.g. setting components -> securitySchemes -> OAuth2PasswordBearer -> flows -> password -> tokenUrl to auth/token) causes the following:
pydantic.error_wrappers.ValidationError:
invalid or missing URL scheme (type=value_error.url.scheme)

For example, this will fail to validate the OpenAPI specs generated by FastAPI when following the OAuth2 security tutorial.

Thanks for the fix! ❤


Need Help in Django Rest API

We need to setup Django REST API in the branch "app" in our repo,
We need to disable CORS and CSRF in order for the API to work,
The base model is written, please test and verify the code before submitting a pull request

https://github.com/IEEEKeralaSection/rescuekerala/pull/73
DRF is already set up . now what is it that you need to do here ? could you elaborate on your requirements a bit  ?

Creating an app in parallel just for the rescue requests

from django.views.decorators.csrf import csrf_exempt
@method_decorator(csrf_exempt)

@sreenadh Related to this #22

Add "*" to allowed_hosts in settings.py, that should help with CORS.

@prajinprakash4u  your proposed solution won't work for a class based views.
https://github.com/IEEEKeralaSection/rescuekerala/blob/app/restendpoint/views.py
https://github.com/IEEEKeralaSection/rescuekerala/blob/app/restendpoint/serializers.py
Check out the following files for having a better idea of the issue

Instead of an android app, please make a PWA. It can be loaded in any phone, and also can be updated easily and shared too.

@all Take a lot at the app branch

https://github.com/ottoyiu/django-cors-headers/
CORS fix

this is some portion of my code ,Can i get the api codes?.
@method_decorator(csrf_exempt, name='dispatch')
class SkinnerGit(LoginRequiredMixin,View):
login_url = '/api/auth/login'
redirect_field_name = 'redirect_to'
def post(self, request, *args, **kwargs):
post_data = request.body.decode()
if(post_data):
post_data = jsonpickle.decode(post_data)
if 'commit_message' in post_data:
commit_message = post_data["commit_message"]+" :- Source Updated from IP :"+get_client_ip(request)
else:
commit_message = "Source Updated from IP :"+get_client_ip(request)
response = subprocess.getoutput('cd static/skinner && git add -A && git commit -m "'+commit_message+'"')
print(response)
if "changed" in response:
status = 200
else:
status = 400
response = re.sub("[^A-Za-z0-9/.%, :-+]+", r' ', response)
json_string='{"response" : "'+response+'"}'
json_data =jsonpickle.decode(json_string)
return JsonResponse(json_data, safe=False,status=status)
def put(self, request, *args, **kwargs):
response = subprocess.getoutput('cd static/skinner && git push')
print(response)
if "Everything" not in response:
status = 200
response = "Pushed Successfully to the remot branch"
else:
status = 400
response = re.sub("[^A-Za-z0-9/.%, :-+]+", r' ', response)
    json_string='{"response" : "'+response+'"}'
    json_data =jsonpickle.decode(json_string)
    return JsonResponse(json_data, safe=False,status=status)

@biswaz  Install an app just for creating a request!! nobody will do it it seems.

@prajinprakash4u  Please paste formatted code for easy viewing

@sreenadh Just merged geo location from web itself

PWA is the best choice for our situation. You can't even get past google play verification quickly. That will take atleast a few hours. And every subsequent update also will be slow. App is not the optimal solution.

Our only concern was accuracy

Maybe create a WhatsCRApp or Telegram bot, that will allow the user to share location.

please see #85 Simple changes.
@sidharthv96 since the data is online and if there are no external CSS/JS PWA is not required.

https://medium.com/@onejohi/introducing-geolocation-in-your-pwas-65713faba51a

Can't we add a map with pointer to get the precise location. People will actually mark that, but very few will install an app for this specific purpose. I think the bigger issue is sharing the app. Wonder if anyone here have any workarounds to speed up playstore verification procedure.

I can spin up a telegram bot if rest api is ready

https://github.com/IEEEKeralaSection/rescuekerala/blob/app/restendpoint/models.py
mobile no is integer field.

The issue with csrf soleved?. if not take a look at, https://stackoverflow.com/questions/30871033/django-rest-framework-remove-csrf

Can someone update what the exact requirement is? Is it just getting the API to work?

CSRF issue can be resolved if the authentication is done using TokenAuthentication. DRF already provides mechanism for it.
https://www.django-rest-framework.org/api-guide/authentication/#tokenauthentication

If this issue is resolved please close it