kou commented on code in PR #39009:
URL: https://github.com/apache/arrow/pull/39009#discussion_r1415098474


##########
cpp/src/arrow/filesystem/azurefs_test.cc:
##########
@@ -213,7 +213,7 @@ class AzureFileSystemTest : public ::testing::Test {
       suite_skipped_ = true;
       GTEST_SKIP() << options.status().message();
     }
-    container_name_ = RandomChars(32);
+    container_name_ = "z" + RandomChars(31);

Review Comment:
   Could you open an issue for the idea and add a comment with the issue number 
to defer the cleanup?



##########
cpp/src/arrow/filesystem/azurefs_test.cc:
##########
@@ -479,6 +522,133 @@ TEST_F(AzureHierarchicalNamespaceFileSystemTest, 
GetFileInfoObject) {
   RunGetFileInfoObjectTest();
 }
 
+TEST_F(AzuriteFileSystemTest, GetFileInfoSelector) {
+  SetUpSmallFileSystemTree();
+
+  FileSelector select;
+  std::vector<FileInfo> infos;
+
+  // Root dir
+  select.base_dir = "";
+  ASSERT_OK_AND_ASSIGN(infos, fs_->GetFileInfo(select));
+  ASSERT_EQ(infos.size(), 3);
+  ASSERT_EQ(infos, SortedInfos(infos));
+  AssertFileInfo(infos[0], "container", FileType::Directory);
+  AssertFileInfo(infos[1], "empty-container", FileType::Directory);
+  AssertFileInfo(infos[2], container_name_, FileType::Directory);
+
+  // Empty container
+  select.base_dir = "empty-container";
+  ASSERT_OK_AND_ASSIGN(infos, fs_->GetFileInfo(select));
+  ASSERT_EQ(infos.size(), 0);
+  // Nonexistent container
+  select.base_dir = "nonexistent-container";
+  ASSERT_RAISES(IOError, fs_->GetFileInfo(select));
+  select.allow_not_found = true;
+  ASSERT_OK_AND_ASSIGN(infos, fs_->GetFileInfo(select));
+  ASSERT_EQ(infos.size(), 0);
+  select.allow_not_found = false;
+  // Non-empty container
+  select.base_dir = "container";
+  ASSERT_OK_AND_ASSIGN(infos, fs_->GetFileInfo(select));
+  ASSERT_EQ(infos, SortedInfos(infos));
+  ASSERT_EQ(infos.size(), 4);
+  AssertFileInfo(infos[0], "container/emptydir", FileType::Directory);
+  AssertFileInfo(infos[1], "container/otherdir", FileType::Directory);
+  AssertFileInfo(infos[2], "container/somedir", FileType::Directory);
+  AssertFileInfo(infos[3], "container/somefile", FileType::File, 9);

Review Comment:
   > Single-use constants are very common in tests.
   
   I think that it's useful only when all related values (`const char* 
some_data = "some data"` in this case) located nearby. (e.g. in the same test.)
   If all related values located nearby, single-use constants in test is easy 
to understand as you said (no idirection).
   If we change `somefile` content, this test starts failing. The person 
debugging these unit tests can't understand why the actual value isn't `9` (and 
why the expected value is `9`) immediately. 
   
   > Do you have name suggestions for the constants?
   
   How about this like existing `kLoremIpsum`?
   
   ```diff
   diff --git a/cpp/src/arrow/filesystem/azurefs_test.cc 
b/cpp/src/arrow/filesystem/azurefs_test.cc
   index 22cebb179..669b5d81f 100644
   --- a/cpp/src/arrow/filesystem/azurefs_test.cc
   +++ b/cpp/src/arrow/filesystem/azurefs_test.cc
   @@ -79,6 +79,8 @@ fugiat nulla pariatur. Excepteur sint occaecat cupidatat 
non proident, sunt in
    culpa qui officia deserunt mollit anim id est laborum.
    )""";
    
   +auto const* kSomeFileData = "some data";
   +
    class AzuriteEnv : public ::testing::Environment {
     public:
      AzuriteEnv() {
   @@ -342,9 +344,8 @@ class AzureFileSystemTest : public ::testing::Test {
        blob_client.UploadFrom(reinterpret_cast<const uint8_t*>(sub_data), 
strlen(sub_data));
    
        blob_client = container_client.GetBlockBlobClient("somefile");
   -    const char* some_data = "some data";
   -    blob_client.UploadFrom(reinterpret_cast<const uint8_t*>(some_data),
   -                           strlen(some_data));
   +    blob_client.UploadFrom(reinterpret_cast<const uint8_t*>(kSomeFileData),
   +                           strlen(kSomeFileData));
    
        blob_client = 
container_client.GetBlockBlobClient("otherdir/1/2/3/otherfile");
        const char* other_data = "other data";
   @@ -364,7 +365,7 @@ class AzureFileSystemTest : public ::testing::Test {
        AssertFileInfo(infos[7], "container/somedir", FileType::Directory);
        AssertFileInfo(infos[8], "container/somedir/subdir", 
FileType::Directory);
        AssertFileInfo(infos[9], "container/somedir/subdir/subfile", 
FileType::File, 8);
   -    AssertFileInfo(infos[10], "container/somefile", FileType::File, 9);
   +    AssertFileInfo(infos[10], "container/somefile", FileType::File, 
strlen(kSomeFileData));
        AssertFileInfo(infos[11], "empty-container", FileType::Directory);
        AssertFileInfo(infos[12], PreexistingContainerName(), 
FileType::Directory);
        AssertFileInfo(infos[13], PreexistingObjectPath(), FileType::File);
   @@ -595,7 +596,7 @@ TEST_F(AzuriteFileSystemTest, GetFileInfoSelector) {
      AssertFileInfo(infos[0], "container/emptydir", FileType::Directory);
      AssertFileInfo(infos[1], "container/otherdir", FileType::Directory);
      AssertFileInfo(infos[2], "container/somedir", FileType::Directory);
   -  AssertFileInfo(infos[3], "container/somefile", FileType::File, 9);
   +  AssertFileInfo(infos[3], "container/somefile", FileType::File, 
strlen(kSomeFileData));
    
      // Empty "directory"
      select.base_dir = "container/emptydir";
   @@ -663,7 +664,7 @@ TEST_F(AzuriteFileSystemTest, 
GetFileInfoSelectorRecursive) {
      AssertFileInfo(infos[6], "container/somedir", FileType::Directory);
      AssertFileInfo(infos[7], "container/somedir/subdir", FileType::Directory);
      AssertFileInfo(infos[8], "container/somedir/subdir/subfile", 
FileType::File, 8);
   -  AssertFileInfo(infos[9], "container/somefile", FileType::File, 9);
   +  AssertFileInfo(infos[9], "container/somefile", FileType::File, 
strlen(kSomeFileData));
    
      // Empty "directory"
      select.base_dir = "container/emptydir";
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to