@@ -108,36 +108,33 @@ TEST(IncludesNormalize, LongInvalidPath) {
108
108
normalizer.Normalize (kLongInputString , &result, &err));
109
109
EXPECT_EQ (" path too long" , err);
110
110
111
- const char kExactlyMaxPath [] =
112
- " 012345678\\ "
113
- " 012345678\\ "
114
- " 012345678\\ "
115
- " 012345678\\ "
116
- " 012345678\\ "
117
- " 012345678\\ "
118
- " 012345678\\ "
119
- " 012345678\\ "
120
- " 012345678\\ "
121
- " 012345678\\ "
122
- " 012345678\\ "
123
- " 012345678\\ "
124
- " 012345678\\ "
125
- " 012345678\\ "
126
- " 012345678\\ "
127
- " 012345678\\ "
128
- " 012345678\\ "
129
- " 012345678\\ "
130
- " 012345678\\ "
131
- " 012345678\\ "
132
- " 012345678\\ "
133
- " 012345678\\ "
134
- " 012345678\\ "
135
- " 012345678\\ "
136
- " 012345678\\ "
137
- " 0123456789" ;
111
+
112
+ // Construct max size path having cwd prefix.
113
+ // kExactlyMaxPath = "$cwd\\a\\aaaa...aaaa\0";
114
+ char kExactlyMaxPath [_MAX_PATH + 1 ];
115
+ ASSERT_NE (_getcwd (kExactlyMaxPath , sizeof kExactlyMaxPath ), NULL );
116
+
117
+ int cwd_len = strlen (kExactlyMaxPath );
118
+ ASSERT_LE (cwd_len + 3 + 1 , _MAX_PATH)
119
+ kExactlyMaxPath [cwd_len] = ' \\ ' ;
120
+ kExactlyMaxPath [cwd_len + 1 ] = ' a' ;
121
+ kExactlyMaxPath [cwd_len + 2 ] = ' \\ ' ;
122
+
123
+ kExactlyMaxPath [cwd_len + 3 ] = ' a' ;
124
+
125
+ for (int i = cwd_len + 4 ; i < _MAX_PATH; ++i) {
126
+ if (i > cwd_len + 4 && i < _MAX_PATH - 1 && i % 10 == 0 )
127
+ kExactlyMaxPath [i] = ' \\ ' ;
128
+ else
129
+ kExactlyMaxPath [i] = ' a' ;
130
+ }
131
+
132
+ kExactlyMaxPath [_MAX_PATH] = ' \0 ' ;
133
+ EXPECT_EQ (strlen (kExactlyMaxPath ), _MAX_PATH);
134
+
138
135
string forward_slashes (kExactlyMaxPath );
139
136
replace (forward_slashes.begin (), forward_slashes.end (), ' \\ ' , ' /' );
140
137
// Make sure a path that's exactly _MAX_PATH long is canonicalized.
141
- EXPECT_EQ (forward_slashes,
138
+ EXPECT_EQ (forward_slashes. substr (cwd_len + 1 ) ,
142
139
NormalizeAndCheckNoError (kExactlyMaxPath ));
143
140
}
0 commit comments