diff --git a/Lib/distutils/tests/test_sysconfig.py b/Lib/distutils/tests/test_sysconfig.py
index 9f13952..88f9ed8 100644
--- a/Lib/distutils/tests/test_sysconfig.py
+++ b/Lib/distutils/tests/test_sysconfig.py
@@ -30,30 +30,13 @@
                             sysconfig.get_python_lib(prefix=TESTFN))
 
     def test_get_python_inc(self):
-        # The check for srcdir is copied from Python's setup.py,
-        # and is necessary to make this test pass when building
-        # Python in a directory other than the source directory.
-        (srcdir,) = sysconfig.get_config_vars('srcdir')
-        if not srcdir:
-            inc_dir = sysconfig.get_python_inc()
-        else:
-            # This test is not really a proper test: when building
-            # Python from source, even in the same directory,
-            # we won't be testing the same thing as when running
-            # distutils' tests on an installed Python. Nevertheless,
-            # let's try to do our best: if we are running Python's
-            # unittests from a build directory that is not the source
-            # directory, the normal inc_dir will exist, it will just not
-            # contain anything of interest.
-            inc_dir = sysconfig.get_python_inc()
-            self.assert_(os.path.isdir(inc_dir))
-            # Now test the source location, to make sure Python.h does
-            # exist.
-            inc_dir = os.path.join(os.getcwd(), srcdir, 'Include')
-            inc_dir = os.path.normpath(inc_dir)
-        self.assert_(os.path.isdir(inc_dir), inc_dir)
+        inc_dir = sysconfig.get_python_inc()
+        # This is not much of a test.  We make sure Python.h exists
+        # in the directory returned by get_python_inc() but we don't know
+        # it is the correct file.
+        self.assertTrue(os.path.isdir(inc_dir), inc_dir)
         python_h = os.path.join(inc_dir, "Python.h")
-        self.assert_(os.path.isfile(python_h), python_h)
+        self.assertTrue(os.path.isfile(python_h), python_h)
 
     def test_get_config_vars(self):
         cvars = sysconfig.get_config_vars()
diff --git a/Misc/NEWS b/Misc/NEWS
index c4d552c..90b59a7 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -15,6 +15,8 @@
 Library
 -------
 
+- Issue #7039: Fixed distutils.tests.test_sysconfig when running on
+  installation with no build.
 
 What's New in Python 2.6.3
 ==========================
