<#5 Encoding::CompatibilityError on Linux 64bit> I...
# pact-ruby-standalone
g
#5 Encoding::CompatibilityError on Linux 64bit Issue created by mefellows Getting an
Encoding::CompatibilityError
when running pact verification on Linux 64bit (consumer test is fine) with a pact containing unicode (chinese) characters. It also fails with emojis. Runtime details: • Version: pact-1.2.0-linux-x86_64.tar.gz • OS: Linux ip-172-30-13-202 3.13.0-62-generic #102-Ubuntu SMP Tue Aug 11 142936 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux See pact-foundation/pact-go#41 Note that I've tested this on OSX and it's not a problem. Command:
Copy code
./pact/bin/pact-provider-verifier  --pact-urls ./matching_service-animal_profile_service.json --provider-base-url <http://localhost:8000>
Stack trace:
Copy code
ubuntu@ip-172-30-13-202:/tmp$ ./pact/bin/pact-provider-verifier  --pact-urls ./matching_service-animal_profile_service.json --provider-base-url <http://localhost:8000>
Reading pact at ./matching_service-animal_profile_service.json
/tmp/pact/lib/vendor/ruby/2.2.0/gems/json-1.8.6/lib/json/pure/parser.rb:242:in `rescue in parse_string': Caught Encoding::CompatibilityError at '{ (JSON::ParserError)
  "consumer": {
  ': incompatible encoding regexp match (ASCII-8BIT regexp with UTF-8 string)
	from /tmp/pact/lib/vendor/ruby/2.2.0/gems/json-1.8.6/lib/json/pure/parser.rb:213:in `parse_string'
	from /tmp/pact/lib/vendor/ruby/2.2.0/gems/json-1.8.6/lib/json/pure/parser.rb:257:in `parse_value'
	from /tmp/pact/lib/vendor/ruby/2.2.0/gems/json-1.8.6/lib/json/pure/parser.rb:121:in `parse'
	from /tmp/pact/lib/vendor/ruby/2.2.0/gems/json-1.8.6/lib/json/common.rb:155:in `parse'
	from /tmp/pact/lib/vendor/ruby/2.2.0/gems/json-1.8.6/lib/json/common.rb:334:in `load'
	from /tmp/pact/lib/vendor/ruby/2.2.0/gems/pact-support-1.1.5/lib/pact/consumer_contract/consumer_contract.rb:42:in `from_json'
	from /tmp/pact/lib/vendor/ruby/2.2.0/gems/pact-1.14.0/lib/pact/provider/rspec.rb:25:in `honour_pactfile'
	from /tmp/pact/lib/vendor/ruby/2.2.0/gems/pact-1.14.0/lib/pact/provider/pact_spec_runner.rb:129:in `block in initialize_specs'
	from /tmp/pact/lib/vendor/ruby/2.2.0/gems/pact-1.14.0/lib/pact/provider/pact_spec_runner.rb:125:in `each'
	from /tmp/pact/lib/vendor/ruby/2.2.0/gems/pact-1.14.0/lib/pact/provider/pact_spec_runner.rb:125:in `initialize_specs'
	from /tmp/pact/lib/vendor/ruby/2.2.0/gems/pact-1.14.0/lib/pact/provider/pact_spec_runner.rb:34:in `run'
	from /tmp/pact/lib/vendor/ruby/2.2.0/gems/pact-1.14.0/lib/pact/cli/run_pact_verification.rb:60:in `run_with_pact_uri'
	from /tmp/pact/lib/vendor/ruby/2.2.0/gems/pact-1.14.0/lib/pact/cli/run_pact_verification.rb:48:in `run_specs'
	from /tmp/pact/lib/vendor/ruby/2.2.0/gems/pact-1.14.0/lib/pact/cli/run_pact_verification.rb:22:in `call'
	from /tmp/pact/lib/vendor/ruby/2.2.0/gems/pact-1.14.0/lib/pact/cli/run_pact_verification.rb:14:in `call'
	from /tmp/pact/lib/vendor/ruby/2.2.0/gems/pact-provider-verifier-1.1.4/lib/pact/provider_verifier/app.rb:66:in `block in verify_pacts'
	from /tmp/pact/lib/vendor/ruby/2.2.0/gems/pact-provider-verifier-1.1.4/lib/pact/provider_verifier/app.rb:57:in `collect'
	from /tmp/pact/lib/vendor/ruby/2.2.0/gems/pact-provider-verifier-1.1.4/lib/pact/provider_verifier/app.rb:57:in `verify_pacts'
	from /tmp/pact/lib/vendor/ruby/2.2.0/gems/pact-provider-verifier-1.1.4/lib/pact/provider_verifier/cli.rb:21:in `verify'
	from /tmp/pact/lib/vendor/ruby/2.2.0/gems/thor-0.19.4/lib/thor/command.rb:27:in `run'
	from /tmp/pact/lib/vendor/ruby/2.2.0/gems/thor-0.19.4/lib/thor/invocation.rb:126:in `invoke_command'
	from /tmp/pact/lib/vendor/ruby/2.2.0/gems/thor-0.19.4/lib/thor.rb:369:in `dispatch'
	from /tmp/pact/lib/vendor/ruby/2.2.0/gems/thor-0.19.4/lib/thor/base.rb:444:in `start'
	from /tmp/pact/lib/app/pact-provider-verifier.rb:2:in `<main>'
Pact file (matching_service-animal_profile_service.json):
Copy code
{
  "consumer": {
    "name": "Matching Service"
  },
  "provider": {
    "name": "Animal Profile Service"
  },
  "interactions": [
    {
      "description": "a request for projects",
      "provider_state": "i have a list of projects",
      "request": {
        "method": "GET",
        "path": "/projects",
      },
      "response": {
        "status": 200,
        "body": [
          {
            "name": "Project 好"
          }
        ]
      }
    }
  ],
  "metadata": {
    "pactSpecificationVersion": "2.0.0"
  }
}
See pact-foundation/pact-go#41 for original issue. pact-foundation/pact-standalone