diff --git a/src/create_embedded_tools.sh b/src/create_embedded_tools.sh
index 9a0eee5..0c510ee 100755
--- a/src/create_embedded_tools.sh
+++ b/src/create_embedded_tools.sh
@@ -42,6 +42,7 @@
   case "$i" in
     *tools/jdk/BUILD*) OUTPUT_PATH=tools/jdk/BUILD ;;
     *tools/platforms/platforms.BUILD) OUTPUT_PATH=platforms/BUILD ;;
+    *tools/platforms/*) OUTPUT_PATH=platforms/${i##*/} ;;
     *JavaBuilder*_deploy.jar) OUTPUT_PATH=tools/jdk/${i##*/} ;;
     *JacocoCoverage*_deploy.jar) OUTPUT_PATH=tools/jdk/JacocoCoverage_deploy.jar ;;
     *turbine_deploy.jar) OUTPUT_PATH=tools/jdk/turbine_deploy.jar ;;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/platform/PlatformCommon.java b/src/main/java/com/google/devtools/build/lib/rules/platform/PlatformCommon.java
index 147d872..3a67979 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/platform/PlatformCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/platform/PlatformCommon.java
@@ -62,7 +62,7 @@
   public ClassObjectConstructor getConstraintValueInfoConstructor() {
     return ConstraintValueInfo.SKYLARK_CONSTRUCTOR;
   }
-
+  
   @SkylarkCallable(
       name = ToolchainInfo.SKYLARK_NAME,
       doc = "The key used to retrieve the provider containing toolchain data.",
diff --git a/src/test/shell/bazel/BUILD b/src/test/shell/bazel/BUILD
index 8a479e6..ce77f9c 100644
--- a/src/test/shell/bazel/BUILD
+++ b/src/test/shell/bazel/BUILD
@@ -434,6 +434,13 @@
     data = [":test-deps"],
 )
 
+sh_test(
+    name = "toolchain_test",
+    size = "small",
+    srcs = ["toolchain_test.sh"],
+    data = [":test-deps"],
+)
+
 test_suite(
     name = "all_tests",
     visibility = ["//visibility:public"],
diff --git a/src/test/shell/bazel/toolchain_test.sh b/src/test/shell/bazel/toolchain_test.sh
new file mode 100644
index 0000000..fc9b9b1
--- /dev/null
+++ b/src/test/shell/bazel/toolchain_test.sh
@@ -0,0 +1,150 @@
+#!/bin/bash
+#
+# Copyright 2017 The Bazel Authors. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# Test the providers and rules related to toolchains.
+#
+
+# Load the test setup defined in the parent directory
+CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+source "${CURRENT_DIR}/../integration_test_setup.sh" \
+  || { echo "integration_test_setup.sh not found!" >&2; exit 1; }
+
+function set_up() {
+  create_new_workspace
+
+  # Create shared constraints.
+  mkdir -p constraints
+  cat >>constraints/BUILD <<EOF
+package(default_visibility = ['//visibility:public'])
+constraint_setting(name = 'os')
+constraint_value(name = 'linux',
+    constraint_setting = ':os')
+constraint_value(name = 'mac',
+    constraint_setting = ':os')
+EOF
+
+  # Create shared report rule for printing info.
+  mkdir report
+  touch report/BUILD
+  cat >>report/report.bzl <<EOF
+def _report_impl(ctx):
+  toolchain = ctx.attr.toolchain[platform_common.ToolchainInfo]
+  for field in ctx.attr.fields:
+    value = getattr(toolchain, field)
+    if type(value) == 'Target':
+      value = value.label
+    print('%s = "%s"' % (field, value))
+
+report_toolchain = rule(
+  _report_impl,
+  attrs = {
+    'fields': attr.string_list(),
+    'toolchain': attr.label(providers = [platform_common.ToolchainInfo]),
+  }
+)
+EOF
+}
+
+function test_toolchain_rule() {
+
+  mkdir -p toolchain
+  cat >> toolchain/toolchain.bzl <<EOF
+load('@bazel_tools//platforms:toolchains.bzl', 'toolchain_rule')
+test_toolchain = toolchain_rule(
+    extra_attrs = {
+       'extra_label': attr.label(),
+       'extra_str': attr.string(),
+    }
+)
+EOF
+
+  cat >> toolchain/BUILD <<EOF
+load('//report:report.bzl', 'report_toolchain')
+load(':toolchain.bzl', 'test_toolchain')
+filegroup(name = 'dep_rule')
+test_toolchain(
+    name = 'linux_toolchain',
+    exec_compatible_with = [
+      '//constraints:linux',
+    ],
+    target_compatible_with = [
+      '//constraints:mac',
+    ],
+    extra_label = ':dep_rule',
+    extra_str = 'bar',
+)
+report_toolchain(
+  name = 'report',
+  fields = ['extra_label', 'extra_str'],
+  toolchain = ':linux_toolchain',
+)
+EOF
+
+  bazel build //toolchain:report &> $TEST_log || fail "Build failed"
+  expect_log 'extra_label = "//toolchain:dep_rule"'
+  expect_log 'extra_str = "bar"'
+}
+
+function test_toolchain_rule_override_impl() {
+
+  mkdir -p toolchain
+  cat >> toolchain/toolchain.bzl <<EOF
+load('@bazel_tools//platforms:toolchains.bzl', 'toolchain_rule', 'default_toolchain_rule_impl')
+def _impl(ctx):
+  overridde_attrs = {
+    'extra_label': 'override:' + ctx.attr.extra_str,
+    'extra_str': 'foo',
+  }
+  return default_toolchain_rule_impl(ctx, overridde_attrs)
+
+test_toolchain = toolchain_rule(
+    implementation = _impl,
+    extra_attrs = {
+       'extra_label': attr.label(),
+       'extra_str': attr.string(),
+    }
+)
+
+EOF
+
+  cat >> toolchain/BUILD <<EOF
+load('//report:report.bzl', 'report_toolchain')
+load(':toolchain.bzl', 'test_toolchain')
+filegroup(name = 'dep_rule')
+test_toolchain(
+    name = 'linux_toolchain',
+    exec_compatible_with = [
+      '//constraints:linux',
+    ],
+    target_compatible_with = [
+      '//constraints:mac',
+    ],
+    extra_label = ':dep_rule',
+    extra_str = 'bar',
+)
+report_toolchain(
+  name = 'report',
+  fields = ['extra_label', 'extra_str'],
+  toolchain = ':linux_toolchain',
+)
+EOF
+
+  bazel build //toolchain:report &> $TEST_log || fail "Build failed"
+  expect_log 'extra_label = "override:bar"'
+  expect_log 'extra_str = "foo"'
+}
+
+run_suite "toolchain tests"
